Your screenshots stop matching the product the day you ship.
Set up once by your engineers, used forever by your entire team. Engineers wire reshot run --headless into CI one time. After that, every drifting screenshot lands in a review inbox your non-technical team approves — no repo access required.
The rot is invisible until your customer finds it.
The product moves, the docs don’t. By the time a customer notices, the trail is cold and no one knows which other captures are wrong too.
Map a visual once. Approve. Every embed updates.
Docs, help center, changelog, and launch posts all point at one durable key — not a PNG filename you swap by hand. One approval reaches every place the visual is embedded.
Stop chasing filenames.
When the product changes, you rerun the scenario and approve the diff — the same key stays current everywhere.
That key is one published CDN URL that Reshot serves.
import assets from "./reshot-assets"; <img src={assets.billingOverview} />
Captures live in the repo, not in someone’s head.
Run screenshots in your own environment against the same app state your team already trusts. Capture rules are reviewable in pull requests instead of hiding in one-off scripts.
{
"version": "2.0",
"baseUrl": "http://localhost:3000",
"scenarios": [
{
"key": "billing-overview",
"name": "Billing Overview",
"url": "/app/billing",
"requiresAuth": true,
"steps": [
{ "action": "wait", "ms": 1000 },
{ "action": "screenshot", "key": "billing-overview" }
]
}
]
}It runs where your app already runs.
Capture against localhost with the same auth and data your team already trusts — no separate staging dance. Auth lives in a local .reshot/auth-state.json file you generate and control.
Capture rules live in the repo as config, so changes show up in code review like everything else.
Write a scenario by hand, or generate one with the recorder. Either way it lives with the code.
The review inbox your non-technical team runs every day.
Once engineers wire capture into CI, this is the only screen the docs and support team touches. Each drifting capture shows up as a candidate — old, new, and diff side by side. Approve it, and the live pointer flips to the new image everywhere it’s embedded. Every plan includes 5 review approvals to start — unlimited on Pro and above.
Your screenshots and auth state stay on your side of the line.
Reshot runs captures in environments you control and stores only what you approve. Here’s the honest posture — the full security overview.
Captures run where your app runs.
The capture runtime executes on your localhost or in your own CI — not on a Reshot server reaching into your product.
- ●You decide what’s stored. Only approved screenshots, baselines, diffs, and metadata are uploaded — redact or use fixture data for anything sensitive.
- ●Access control & encryption. Role-based workspace access, TLS in transit, encryption at rest, and bring-your-own-storage on request.
An open, in-the-open devtool.
The CLI and capture tooling are actively under development. The published screenshot CLI is Apache-2.0 licensed — audit it, fork it, or open a PR.
Start with one page.
Start with one tour. Author it once, render it in CI, and let it re-render itself every time the product moves.

