Supported Environments
Reshot runs the same capture in two places, from the same reshot.config.json
and the same reshot run. What changes is the target URL and where credentials
come from.
- Locally, against a production-like server on your machine. This is the fastest way to author a scenario and see a diff before you push.
- In CI, against the build or preview deployment for a pull request. This is
the path that produces the
reshot/visual-reviewstatus check and the PR summary.
Local path
- Run
reshot setup - Start your target app with a production-like local server
- Run
reshot run - Run
reshot publishwhen the capture looks right
CI path
- Build and start the app in the workflow, or point the run at the preview deployment
- Provide
RESHOT_API_KEYand any capture credentials as CI secrets - Run
reshot run --headless - Run
reshot publishwith the head commit SHA and the pull-request URL
See Automation for the workflow template and PR Checks & Merge Gate for the status check.
Supported targets
next build && next start, or any equivalent production-like server — on your machine or on the CI runner- a preview deployment that renders the same code path you intend to ship
- certified targets that declare a deterministic readiness contract and pass
reshot doctor target/reshot verify publish
Not supported for capture reliability
next dev- arbitrary hot-reload development servers with non-production rendering behavior
- targets that rely only on sleeps instead of app-owned readiness markers
Why production-like, in either place
It removes the three main sources of flaky captures:
- dev-only runtime errors
- hydration or hot-reload instability
- route timing that differs from the shipped app
You can still experiment in development mode while authoring scenarios, but a capture you intend to publish should run against a production-like build.
Recommended commands
For many Next.js apps, this is the right pattern locally:
Terminal
npm run build
npm run start
reshot run
reshot publishAnd in pull-request CI:
Terminal
npm run build
npm run start &
npx reshot run --headless
npx reshot publishIf your app requires a capture-safe flag or a different production start
command, declare that in reshot.config.json so reshot setup can show the
recommended command directly.

