@voostack/screenstack-sdk · v3.1 on npm

React Native screenshots,
no Mac runner.

The JavaScript SDK drives Metro (or Expo Web) at localhost:8081, captures every screen you declare in screenstack.yml, and composites them at every Apple + Google store size on Linux runners. No Xcode, no simulators, no native plumbing.

Expo
or bare RN
iOS+
Android · Web
0
Mac runner needed
~30s
per capture run

Pixel-perfect for the store.

ScreenStack
two files · one screenstack.yml

Drop-in for any RN or Expo project.

Works with bare React Native (Metro bundler) and Expo SDK 50+. No CocoaPods touch, no Gradle changes, no native-module dance.

1
install the SDK

@voostack/screenstack-sdk

Dev dependency. Brings in Playwright (which handles the Metro / Expo Web automation) and the ScreenStack composer client.

terminal
# Expo
npx expo install --dev @voostack/screenstack-sdk

# Bare RN
npm install --save-dev @voostack/screenstack-sdk
2
point at Metro

screenstack.yml at the root

baseUrl points at localhost:8081 (Metro) or localhost:19006 (Expo Web). Routes match your React Navigation paths.

screenstack.yml
project: prj_abc123
framework: expo
baseUrl: http://localhost:8081
defaults:
  frame: iphone-16-pro-max
targets:
  - name: home
    url: /home
  - name: profile
    url: /profile
before · after

The RN screenshot workflow, collapsed.

  • Capture every screen
    iOS Simulator + Android Emulator manually
    @voostack/screenstack-sdk drives the Metro bundler
  • Composite store frames
    Figma + Sketch per device size
    iPhone 16 Pro Max + Pixel + Galaxy frames
  • Refresh after a UI change
    Re-shoot every screen manually
    CI re-runs on every push to main
  • Test users
    Hardcoded in screenshots.js, leaks
    Encrypted at rest, fetched at run time
  • Marketing site screenshots
    Different tool entirely
    Web Capture grabs desktop + dashboard
free · no Mac · linux runners only

Ship App Store screenshots without Xcode.

Free tier covers every store size and 5 exports a month. RN devs save ~10× on CI minutes by skipping Mac runners.