twocents/open source

Troubleshooting

Diagnose installation, simulator, setup, and capture failures.

Installation returns npm 404

Neither package is published to npm yet. Follow the source installation instead of bare package-name installs. Install the app's own Expo dependencies before capture; Snapbot uses <appDirectory>/node_modules/.bin/expo.

Configuration or output rejected

Check required fields and limits. All paths use the project root, even when the JSON file is in another directory. Choose a new or empty output directory. If a lock remains after interruption, confirm there is no capture process still using it before manual cleanup.

Setup remains pending or shows an error

The build's apiEnvironment must match the requested value. Await theme/session setup and return true or void; returning false intentionally remains pending. isAuthenticating does not itself mark setup ready. Ensure parent routing and auth guards let /snapbot render. A static setup error can be visually stable, so inspect the visible UI and app logs.

Build or simulator problems

Use an installed runtime and device type. If duplicate simulator names exist, inspect the UDIDs in the diagnostic before removing an unwanted device. Check the app bundle identifier, Xcode scheme/workspace, and .app product name. Ensure the configured Metro port is unused. Native build and JavaScript bundle diagnostics are retained in run.log after output initialization.

  • First-open confirmation: after installing the app, Snapbot automatically approves its configured URL scheme for CoreSimulator deep links. This avoids the iOS “Open in this app?” prompt on new simulators and newly captured apps, while preserving approvals for other apps. If approval cannot be written, the run stops with a specific error before waiting for the JavaScript bundle.
  • Expo developer overlays: Snapbot starts the app with Expo's developer welcome screen, automatic developer menu, and floating developer button disabled for that process. No manual first-run setup is needed, and the app's saved developer preferences are unchanged.
  • Xcode 27 has no separate Simulator app: open simulators from Xcode's Device Manager instead.
  • Captures freeze for minutes at a time: simctl io screenshot blocks while the Mac sleeps. Keep it awake, for example with caffeinate -dims pnpm capture --project-root /absolute/path/to/app --config snapbot.json --output snapbot-output/awake-run from the Snapbot checkout.
  • Every capture shows the same screen: an overlay stayed on top, such as a red React error screen or a system passcode prompt. Find the first capture where it appears and check the Metro errors in run.log.

Timeout or identical-frame warnings

A timeout saves the last frame and normally exits zero. optional does not suppress navigation failures or change stability rules. Inspect animations, spinners, account data, and overlays before increasing timing limits. Use the post-run acceptance check if warnings should fail your workflow. A stable image alone cannot tell you whether the correct screen opened or login succeeded.

On this page