Preview uploads & sharing
sootsim upload publishes the bundle running in your sim to a shareable /preview/<id> link. Anyone with the URL can open a live interactive copy of the app in their browser — alongside an inline <video> of whatever session you recorded.
Use cases:
- PRs — attach a playable demo to every pull request
- Designers / PMs / clients — hand someone a link; no TestFlight, no dev build, no Xcode
- Sales demos, bug repros, onboarding walkthroughs — embed the same link anywhere an iframe fits
- Support — ask a user to record their flow; get back a link that replays the exact state
One-off: upload the current session
terminal
--open launches the resulting /preview/<id> URL in your browser after upload.
The three one-shot flows
1. Record + share in one command
terminal
Captures video and the event stream simultaneously, uploads to a /preview/<id> link, copies the URL to your clipboard, and animates the Dynamic Island while uploading.
2. Record a flow file + share
terminal
--preview implies --record, captures the event stream, and chains into upload automatically. Prints the /preview/<id> URL when done. Add --preview-open to open it.
3. Upload an existing recording
terminal
Attach an existing webm / mp4 / gif recording and a gzipped event stream. Useful when you already have assets from a CI run or scripted harness.
Auth
Uploads require a signed-in desktop session:
terminal
By default, uploads target localhost:3000 if available, otherwise sootbean.com. Override with --origin or SOOTSIM_UPLOAD_ORIGIN.
What the preview page does
- Live interactive app — the real bundle boots clientside on the visitor’s GPU via WebAssembly CanvasKit. No server-rendered frames, no streaming latency.
- Inline video — the webm plays overlaid on the app surface; scrub the timeline to watch the recorded flow, then tap anywhere to take control.
- Forward scrub — drag the scrubber forward to jump to any point in the recorded session; the live app catches up.
- Resume live — at any point, tap the app to exit playback and drive it live from the current state.
- URL params — device, theme, network condition, language, and region all controlled by query string.
GitHub integration
sootsim upload is the engine behind sticky PR comments:
- A CI job runs the flow, captures video + events, and calls
sootsim upload --video ... --events ... - The upload endpoint posts back a sticky comment on the PR with a two-state
<video>(generating → ready) and a/preview/<id>link. - Reviewers play the video inline in the PR, click through to the live app, and drive it themselves.
This is the integration surface sootsim flow --preview is built for.
Flags you’ll want to know
| Command | Flag | Effect |
|---|---|---|
sootsim upload | --events <path> | Attach a gzipped .jsonl.gz event stream |
sootsim upload | --video <path> | Attach a webm/mp4/gif recording |
sootsim upload | --session <tab-id> | Target a specific sim tab |
sootsim upload | --open | Open the resulting URL |
sootsim upload | --origin <url> | Override upload host |
sootsim flow | --preview | Record + upload in one step |
sootsim flow | --preview-open | Open the resulting URL |
sootsim record | --mode combined | Capture video + events + auto-upload |
Related
sootsim upload— full flag referencesootsim flow— flow runner +--previewsootsim record— recording modes- Agents › CLI Use — agent-driven previews