← Back to Repro
AgentRepro

Skill · Version 1.0.0

Reproduce desktop and mobile bugs

Isolates native-app failures caused by lifecycle transitions, packaging differences and changing OS permissions.

desktop-mobile-reproduction

See how it helps

When is it useful?

Use when a bug appears only after sleep, restart or installation.

What does it help you do?

  • Captures app, OS, device and persisted-state conditions for reproduction.
  • Compares development and packaged behavior, including paths and environment variables.
  • Exercises permission revocation, hardware changes and background restoration.

Try asking this

Reproduce a microphone failure after sleep and permission revocation in the installed application. Record the exact sleep, wake and permission sequence. Compare the installed build with development mode and report the first observable divergence.

Detailed documentation

Read the skill’s original instructions, examples and checks in their authored language.

Details…Show less

Desktop & Mobile Reproduction

When to Use

Use when reproducing bugs tied to native OS behavior, desktop app packaging (Electron/Tauri), mobile app lifecycle transitions (background/foreground, process death), permissions, offline sync, or deep links.

1. Application Lifecycle & State Restoration Triggers

Many mobile and desktop bugs never appear during normal active use—they trigger across OS lifecycle transitions:

  • Background $\rightarrow$ Foreground & Process Death (Mobile):
    • Put the app in the background while a network request, file upload, or modal is open, simulate OS low-memory process termination ("Don't keep activities" on Android / background kill on iOS), and restore the app.
    • Check whether in-memory state was lost while persisted navigation state expects it to exist.
  • Window Close vs. App Quit & Sleep/Wake (Desktop):
    • On macOS (darwin), closing the last window (window-all-closed) keeps the app process alive in the Dock (activate reopens a window), whereas on Windows/Linux it typically quits.
    • Test OS sleep/wake cycles, network interface switching (Wi-Fi $\rightarrow$ offline $\rightarrow$ reconnect), and multi-window state synchronization across IPC channels.

2. Dev Mode vs. Packaged Production Binary Differences

A major class of Electron, Tauri, React Native, and Flutter bugs only occurs in the packaged/bundled app, never in dev:

  • Filesystem Paths & Read-Only Bundles:
    • In packaged Electron (app.asar) or Tauri apps, writing to __dirname or relative current working directories (process.cwd()) fails because the bundle is read-only or cwd is / on macOS Finder launch. Verify paths using app.getPath('userData') / temp.
  • Packaged Child Processes, CLI PATH & Native Binaries:
    • GUI apps launched from macOS Finder/Spotlight do not inherit the user's interactive shell PATH (/opt/homebrew/bin, ~/.nvm, ~/.cargo/bin). Reproduce "CLI not found" bugs by launching the app with a minimal default OS PATH (/usr/bin:/bin).
  • CSP, Custom Protocols & Entitlements:
    • Custom schemes (app://, tauri://, deep links myapp://), macOS Hardened Runtime entitlements, and Windows SmartScreen/antivirus file locking (EBUSY on SQLite or temp files during rename/delete).

3. OS Permission & Hardware State Transitions

Test permission edge cases beyond the happy path:

  • Permission Denied on first prompt, Revoked in OS Settings while the app is running, or Limited/Partial access (e.g., iOS selected photos only, approximate location).
  • Display scaling (125%, 150%, 200% DPI on Windows/macOS Retina), multi-monitor window placement (disconnecting an external monitor where window coordinates were saved), safe-area insets, and virtual keyboard overlap on mobile forms.

Included files 1

  • SKILL.md