App Store screenshots

The end-to-end App Store screenshot pipeline — chrome-free capture, single-shot and batch YAML plans, framing in real device chrome, and composing branded canvases with backgrounds, text, and poses across locales.

SootSim ships an end-to-end pipeline for App Store screenshot production — from capturing raw frames off a live flow, to framing them in real device chrome, to exporting branded marketing canvases in every required size.

Three pieces work together:

CommandRole
sootsim screenshot-modeToggle the in-shell screenshot chrome overlay (DOM browser chrome hidden, canvas framed)
sootsim screenshotSingle-shot capture of the current canvas (full or cropped)
sootsim screenshotsBatch pipeline — capture a flow, frame each shot in device chrome, compose branded canvases for export

One-shot capture

terminal

sootsim screenshot --output hero.png
sootsim screenshot --id loginButton --output button.png
sootsim screenshot --area 0,200,393,400 --output feed.png
sootsim screenshot --gallery --themes # crawl + light/dark variants

The live sim keeps running. For clean marketing-ready frames (no browser chrome, no dev rail), flip screenshot mode first:

terminal

sootsim screenshot-mode on
sootsim screenshot --output clean.png
sootsim screenshot-mode off

Batch: the screenshots pipeline

sootsim screenshots runs a YAML plan that can:

  1. Boot a sim and run a flow to land on each target screen
  2. Capture raw PNGs
  3. Frame each raw PNG in real device chrome (bezel, safe-area, Dynamic Island geometry)
  4. Compose branded marketing canvases (background gradient, headline text, device pose) in every canvas preset you need

terminal

sootsim screenshots --plan .sootsim/app-store.yaml
sootsim screenshots --plan .sootsim/app-store.yaml --sim a9 # reuse live sim
sootsim screenshots --plan .sootsim/app-store.yaml --compose-only # skip flow, reuse raws
sootsim screenshots --plan .sootsim/app-store.yaml --capture-only # stop after raws

Plan shape

A minimal plan:

# .sootsim/app-store.yaml
app: my-app
capture:
device: iphone-17-pro
flow: flows/hero-tour.yaml
slides:
- id: home
at: home
- id: compose
at: compose-new-post
- id: feed
at: feed-scrolled
compose:
canvases:
- iphone-6-9
- iphone-6-7
- iphone-6-5
background: dark
text: bold-top
pose: straight
locales:
- en
- es
- ja

One plan file produces slides × canvases × locales framed and composed PNGs, plus a manifest listing every output path for upload to App Store Connect.

Shared registries

The composer and the live in-shell screenshot mode pull from the same registries — so a slide you compose in the live shell matches what the batch pipeline exports.

  • Canvas presets — App Store sizes (6.9”, 6.7”, 6.5”, 5.5”), iPad, custom
  • Backgrounds — gradient + glow presets, or custom tokens
  • Text presets — headline position, weight, size, color
  • Pose presets — straight-on, tilted, multi-device lineup

Live composition in the shell

Screenshot mode in the browser / Electron shell gives you a WYSIWYG composer:

  • Toggle from the MacMenuBar, rail button, or sootsim screenshot-mode on
  • Pick a canvas preset, background, text preset, and pose from the in-shell controls
  • The device FLIPs into the target canvas rect at the exact export size
  • Type headline text inline; see it layout-balanced in the chosen text preset
  • Capture with sootsim screenshot --output hero.png — or hit the rail’s capture button

The live state shares canvas / background / text / pose tokens with the batch plan, so whatever you compose live is exportable to the same registry a plan file uses.

Recording vs screenshots

For video / webm / gif output, use sootsim record instead:

terminal

sootsim record --duration 5 --output demo.webm
sootsim record --format mp4 --duration 8 --output demo.mp4
sootsim record --format gif --duration 3 --output demo.gif
sootsim record --frames 10 --output ./frames/ # N evenly-spaced PNGs

See the record reference for full options.

Ready to build?

Run your React Native app in the browser. No simulators, no native toolchain, no waiting.

npm i -g sootsim