Questions, answered
Everything below is verified against the shipped software — the CLI on npm, the repository source and the editor on this site. If an answer here ever disagrees with the code, that's a bug.
What is StoreShot?
StoreShot is a free, open-source tool (MIT) that turns your app screenshots into polished App Store and Google Play store screenshots. It comes in two forms that share the same template engine: a CLI, storeshot-cli, driven by one JSON configuration; and a browser-based editor with no account. Both render through Chromium, support 11 art-directed templates, and export opaque PNGs at exact verified store dimensions.
Is StoreShot free, and what does it cost?
It is free under the MIT license — free as in license and free as in price. There is no account, no subscription and no export cap. The CLI runs entirely on your machine; the web editor runs the template engine in your browser. The project is built in the open on GitHub.
Should I use the CLI or the web editor?
Use the CLI when screenshots are part of a build: one JSON config drives screenshots × locales × device sizes, output is deterministic (same config in, same pixels out), and storeshot validate --json gates every render in CI. Use the web editor when you want to design by eye: upload a screenshot, pick a template, edit copy and colors with live preview and the same geometry validation, then export a PNG or ZIP. The editor does not require the CLI or an account.
Which App Store and Google Play sizes does it export?
Nine store profiles with exact dimensions, each verified against Apple's and Google's official specifications: iphone-6-3 (1206 × 2622), iphone-6-9 (1320 × 2868), ipad-13 (2064 × 2752), header-21-9 (3840 × 1646), search-results-3-2 (3840 × 2560), header-16-9 (5244 × 2950), phone (1080 × 1920), tablet (1600 × 2560), feature-graphic (1024 × 500). Custom sizes are validated against store rules, and a render fails before shipping if a size is wrong. The full list with sources and verification dates lives in the store profiles reference in the docs.
Does it support Arabic and other right-to-left languages?
Yes — Arabic is a first-class citizen, not a footnote. Text is shaped by Chromium's text engine, so letterforms connect correctly and mixed Arabic/English lines keep proper bidi order; strings are never reversed in code. Layouts mirror structurally with CSS logical properties while the app screenshot and device hardware stay unmirrored. Arabic landscape headers get their own metrics so long headlines compose instead of clipping. Every template ships an Arabic render — see the template gallery.
Can I use it with React Native, Expo or Flutter?
Yes, in the straightforward sense: StoreShot frames whatever PNG screenshots you feed it, so captures from React Native, Expo, Flutter or native apps all work. It does not integrate with any framework's toolchain, does not drive devices and does not capture screenshots for you — pair it with the screenshot capture tool you already use, then let StoreShot handle composition, localization and store dimensions.
How do I automate screenshots in CI/CD?
Install the CLI as a devDependency, generate, then validate: storeshot validate --json emits machine-readable results and exit codes 0 / 1 / 2 (success / layout-validation failure / usage error), so pipelines fail before bad assets ship. Rendering is offline and deterministic, so artifacts are cacheable and re-runs are reproducible. A one-time Chromium download (~170 MB) is needed on the runner, or reuse an installed Chrome/Edge with STORESHOT_BROWSER_CHANNEL.
Is it a good fastlane frameit alternative?
For most teams, yes — and the comparison is documented rather than promised. StoreShot replaces frameit's Ruby + ImageMagick toolchain with a Node CLI and one JSON config; rendering is deterministic, output dimensions are verified against current store specs, and Arabic/RTL works (frameit breaks connected letterforms, a long-standing documented issue). If you live entirely in fastlane lanes and never ship Arabic, frameit remains a fine tool — an honest comparison table is on the About page.
Where do my screenshots go — is anything uploaded?
The CLI uploads nothing: rendering is local and the renderer blocks network requests outright. In the web editor, preview, editing and geometry validation run entirely in your browser. PNG export is the one exception: the page sends your current design to this site's server, which rasterizes it with the same engine in headless Chromium and deletes the temporary file immediately after — nothing is stored, logged or shared. Analytics: when configured, the site uses Plausible — cookieless, aggregate-only page views and button/generation events; no screenshots, filenames, app names or free-text fields are ever sent (the exact event list lives in lib/analytics.ts). If analytics isn't configured or is blocked, the site works identically.
What exactly does validation check?
Config schema, source images (missing, corrupt, unsupported or low-resolution), font fallbacks, missing translations per screenshot/locale/field, unknown templates, profiles and settings, custom-size rules, title/background contrast, and rendered text overflow — measured in a real browser per locale × screenshot × export size. It cannot judge taste or store policy; those stay yours.
Still open? The GitHub discussions and the Arabic & RTL guide go deeper.
Read the docs