new · component captures

App Store screenshots, generated.

Drop a screen. Pick a backdrop. ScreenStack renders the full sized set for every store, then keeps your marketing site's app and dashboard previews up to date automatically.

Free to start
No credit card
Flutter + JS SDKs

Pixel-perfect for the store.

ScreenStack

● captured by @voostack/screenstack-sdk against this very site

Used by teams shipping to the App Store, Play Store, and the web

Two surfaces. One canvas.

Store assets and web previews come from the same project. Edit once, export everywhere the App Store, Play Store, and your marketing site need them.

App Store ready in one export

Every iPhone, iPad, Pixel, and Galaxy size — composited with your device frame, backdrop, and caption. Pixel-perfect for store submission.

Pixel-perfect for the store.

ScreenStack
6.7″ iPhone
1290×2796
iPad 12.9″
2048×2732
Play Store
1080×1920
new

Marketing pages that update themselves

Point at a URL. Hand over a test user. ScreenStack logs in, captures your live web and dashboard pages at every viewport, and re-renders on a schedule.

screenstack.voostack.com
ScreenStack editor running in a desktop browser, captured live by @voostack/screenstack-sdk
Desktop
1440×900
Wide
1920×1080
Tablet
1024×1366
3 steps · same for app and web

How it works

Three steps. The same three whether you're shipping store screens or automating marketing previews.

  1. 1

    Set up a project

    Pick the kind — App for store screens, Web for live previews. Add the device sizes or URLs you want.

  2. 2

    Design the canvas

    Drop a screenshot, choose a backdrop, write a caption. Every export size renders from the same layout — no per-device duplication.

  3. 3

    Wire it into CI

    One screenstack.yml. The SDK captures on every build. Your store and marketing pages stay in sync with whatever you just shipped.

for developers

One config. Both runtimes.

The same screenstack.yml drives the Flutter SDK on iOS and Android and the JS SDK on the web. Test users come from FlightStack at run time — credentials never live in your repo.

screenstack.yml
project: prj_abc123
deviceProfile: iphone-15-pro-max
testUser:
  secretRef: ssr_xxx       # FlightStack swaps for env vars at run time
screens:
  - route: /home
    targets:
      - "iOS App Store/Home"
      - "Google Play/Home"
  - route: /home          # NEW · capture one component, not a screen
    kind: widget
    widgetKey: food-card
    targets:
      - "iOS App Store/Floating card"
  - route: /dashboard
    targets:
      - "iOS App Store/Dashboard"
new · sdk + editor

Capture one card. Float it anywhere.

Point the SDK at a single component — not a whole screen — and it ships as a tight-cropped PNG with a transparent background. The editor drops it on the canvas as a floating layer, ready to pop out of a device frame with a soft shadow.

  • Flutter: just a ValueKey
    Wrap with RepaintBoundary(key: ValueKey('food-card')). The SDK rasterizes the widget only — alpha outside the box.
  • Web: any CSS selector
    Set clipSelector in screenstack.yml. Playwright captures with omitBackground, so the export is transparent outside the element.
  • Editor: first-class layer
    New widgetCapture element kind with drop-shadow presets, rounded corners, and 3D tilt — composable with everything else on the canvas.
screenstack.yml
screens:
  - route: /home
    kind: widget
    widgetKey: food-card        # ValueKey on a RepaintBoundary
    targets:
      - "iOS App Store/Floating card"
The Welcome back sign-in card captured as a standalone component by @voostack/screenstack-sdk
widgetKey: welcome-back

● real capture of this site · widget cropped by @voostack/screenstack-sdk

free tier · every store size

Start free. Scale when it matters.

One project on the free tier, every store size included. Move to Studio when you need Web Capture, scheduled runs, and team seats.

● No credit card required ● Cancel anytime ● Open source SDKs