Snapbot
Capture Expo iOS screens in a local simulator.
Snapbot builds an Expo debug client, opens configured deep links in an iOS
Simulator, waits for the screen to stop changing, and saves PNGs with a
machine-readable run summary. The companion react-native-snapbot package lets
your app prepare its session and theme and open UI such as sheets and modals.
Your first screenshot
Install from source and capture one screen without authentication.
Connect your app
Prepare themes, sessions, and debug-only app states.
Read the results
Understand PNGs, warnings, failures, and summary.json.
Automate a workflow
Check or publish screenshots with a post-run script.
What a run produces
For a screenshot named home with appearance: "both", an output directory
contains home-light.png, home-dark.png, summary.json, and run.log.
Inspect the PNGs before using them as baselines or publishing them.
You choose where runs are saved and how long to keep them. Snapbot does not upload screenshots, compare them against approved baselines, change Git branches, or schedule captures. Your app may still contact its own backend during setup and use.
Current scope
The capture engine targets macOS, Xcode, and Expo iOS Simulator debug builds. It runs the app's installed Expo executable, so the app can use npm, pnpm, Yarn, or Bun. Android and physical-device capture are not implemented.
A stable image does not prove the intended screen appeared. A static error
screen can settle too. Stability timeouts and repeated images are warnings;
inspect summary.json and the screenshots rather than relying only on exit zero.
The source repository contains the CLI, React Native package, and tests. These docs describe the current implementation, including its source-install requirement and file-based result format.