Quickstart
This guide walks you through recording your first demo, uploading it, and sharing it. At the end you'll have a published, shareable demo: a sequence of annotated screenshots recorded from your own app, viewable at a public link and ready to embed in your docs or landing page.
There are two ways to record: the CLI (this guide) scripts the flow in a config file and replays it in headless Chrome — ideal for stable flows you'll re-record as your UI evolves. The browser extension records as you click through your app manually — ideal for quick captures. If you'd rather start with the extension, see Browser Extension Recording.
Prerequisites
- Google Chrome or Chromium installed
- A Stepshots account
- A Rust toolchain — only if you install with
cargo install; the prebuilt binary needs none
Steps
Install the CLI
Install the prebuilt binary (macOS Apple Silicon, Linux x86_64/aarch64):
curl -sSL https://raw.githubusercontent.com/hauju/stepshots/main/install.sh | shOr install with Cargo (any platform with a Rust toolchain):
cargo install stepshots-cliVerify the installation:
stepshots --versionInitialize a config
In your project directory, run:
stepshots initThis creates a stepshots.config.json with a sample tutorial and a $schema reference so your editor autocompletes and validates it.
Each step is one action followed by a screenshot. Steps can `click`, `type`, `hover`, `select`, `scroll`, `scroll-to`, `navigate`, `wait`, or press a `key` — enough to script most product flows. Edit the config to point at your app:
{
"$schema": "https://raw.githubusercontent.com/hauju/stepshots/main/schema/stepshots.config.schema.json",
"baseUrl": "https://your-app.com",
"viewport": { "width": 1280, "height": 800 },
"format": "desktop",
"defaultDelay": 500,
"tutorials": {
"onboarding": {
"url": "/",
"title": "Onboarding Flow",
"steps": [
{ "action": "click", "selector": "button.get-started" },
{ "action": "type", "selector": "input[name='email']", "text": "user@example.com" },
{ "action": "click", "selector": "button[type='submit']" }
]
}
}
}Record the demo
stepshots recordThe CLI launches headless Chrome, runs the configured flow, and saves screenshots into a .stepshot bundle in the output/ directory. This works best for stable, predictable steps.
Use stepshots preview onboarding to watch the recording in a visible browser window before committing. If anything misbehaves, run stepshots doctor to check your browser, config, server, and login in one pass.
Log in
stepshots loginThis opens your browser to authorize the CLI and stores a token locally. Run stepshots whoami to confirm which account you're logged in as.
For CI or scripts, skip login and set STEPSHOTS_TOKEN instead — see API Keys to generate one.
Upload to Stepshots
stepshots upload output/onboarding.stepshotAdd --public to publish the demo immediately instead of uploading it as a private draft:
stepshots upload output/onboarding.stepshot --publicEdit and share
Open the Stepshots dashboard, find your demo, and use the overlay editor to add highlights, callouts, or blur regions.
When you're ready, toggle visibility to **Public** and copy the viewer link to share it.
Troubleshooting
A step fails with "selector not found" — the element wasn't on the page when the step ran. Run stepshots preview <tutorial> to watch the flow in a visible browser and see where it diverges. Slow-loading UI usually needs a wait step or a higher defaultDelay.
Chrome isn't found — the CLI looks for Chrome/Chromium at its default install location. If yours lives elsewhere, point at it with export CHROME_PATH=/path/to/chrome.
The flow needs a logged-in session — record against an authenticated app with a persistent browser profile. Log in once with stepshots browser https://your-app.com --profile-dir .stepshots-profile, then pass the same --profile-dir (or set STEPSHOTS_PROFILE_DIR) to record, and every recording starts from that session.
Anything else — stepshots doctor checks your browser, config, server reachability, and login in one pass and tells you what's broken.
What's Next
- Configuration — Full config file reference
- How CLI Recording Works — What happens under the hood
- Embedding — Embed your published demo anywhere
- Live Guided Tours — Turn a recording into an in-app onboarding overlay
- CI Automation — Re-record demos automatically in your pipeline