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 helpsWhen 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.
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 (activatereopens 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.
- On macOS (
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__dirnameor relative current working directories (process.cwd()) fails because the bundle is read-only orcwdis/on macOS Finder launch. Verify paths usingapp.getPath('userData')/temp.
- In packaged Electron (
- 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 OSPATH(/usr/bin:/bin).
- GUI apps launched from macOS Finder/Spotlight do not inherit the user's interactive shell
- CSP, Custom Protocols & Entitlements:
- Custom schemes (
app://,tauri://, deep linksmyapp://), macOS Hardened Runtime entitlements, and Windows SmartScreen/antivirus file locking (EBUSYon SQLite or temp files during rename/delete).
- Custom schemes (
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
