[ Documentation ]
App Store screenshots

App Store screenshots

Peach captures raw screenshots from a flow, frames them in device chrome, and exports marketing canvases using its supported size presets. Upload the exported PNGs to your store listing yourself.

Three pieces work together:

CommandRole
peach mode screenshotToggle the in-shell screenshot chrome overlay (DOM browser chrome hidden, canvas framed)
peach screenshotSingle-shot capture of the current canvas (full or cropped)
peach screenshot appstoreBatch pipeline: capture a flow, frame each shot in device chrome, compose branded canvases for export

One-shot capture

terminal
peach screenshot --output hero.png
peach screenshot --id loginButton --output button.png
peach screenshot --area 0,200,393,400 --output feed.png

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

terminal
peach mode screenshot on
peach screenshot --output clean.png
peach mode screenshot off

Batch: the screenshot appstore pipeline

The CLI provisions the same verified browser package and Chromium build used by its Playwright driver. No project-installed Playwright package is required.

peach screenshot appstore 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
peach screenshot appstore --plan .peach/app-store.yaml
peach screenshot appstore --plan .peach/app-store.yaml --sim a9 # reuse live sim
peach screenshot appstore --plan .peach/app-store.yaml --compose-only # skip flow, reuse raws
peach screenshot appstore --plan .peach/app-store.yaml --capture-only # stop after raws

Plan shape

A minimal plan:

# .peach/app-store.yaml
app: 8081
device: iphone-16
capture:
flow: ../.maestro/screenshots.yaml
mode: raw+framed
compose:
canvases:
- iphone-6-9
- iphone-6-1
background: dark
text:
preset: bold-top
locale: en
frame:
pose: straight
slides:
- id: home
screenshot: home.png
headline: Your home screen
subheadline: Everything in one place.

Paths in the plan resolve relative to the plan file. The capture flow must write each slide’s named screenshot, for example:

# .maestro/screenshots.yaml
- launchApp: {}
- takeScreenshot: home

One plan produces slides × canvases composed PNGs for one locale, plus a manifest listing the output paths. Run a separate plan for each locale’s copy.

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: iphone-6-9 (1284 × 2778), iphone-6-1 (1242 × 2688), ipad-pro-13 (2064 × 2752), android-phone (1080 × 1920), android-tablet-7 (1200 × 1920), and android-tablet-10 (1600 × 2560)
  • +
    Backgrounds: gradient + glow presets, or custom tokens
  • +
    Text presets: headline position, weight, size, color
  • +
    Pose presets: straight, tilted-left, tilted-right, cut-bottom, cut-top

Live composition in the shell

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

  • +
    Toggle from the MacMenuBar, rail button, or peach mode screenshot 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 peach 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 peach record instead:

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

See the record reference for full options.