StoreShot

Built in the open

StoreShot lives or dies by three things: RTL correctness, deterministic output, and honest error messages. It's free under MIT — free as in license and free as in price, forever.

Principles

Deterministic by design

The same config, assets and version always produce the same pixels. Variation comes only from sequence position — no randomness, no dates, no environment reads, and the renderer blocks network requests outright.

Arabic is a first-class citizen

Not a locale footnote. Bundled Arabic type (IBM Plex Sans Arabic, OFL), structural RTL layouts, dedicated Arabic landscape metrics — and the test suite keeps it honest.

Fails before you ship bad assets

Validation checks config, translations, exact store dimensions and rendered text fit — with browser-measured geometry checks. It can't judge taste; that stays yours.

Honest about limits

Correct dimensions don't guarantee store compliance. The docs say exactly what StoreShot cannot check, and the comparison table says where frameit or a SaaS tool might serve you better.

How it compares

StoreShotfastlane frameitCloud SaaS
Runs locally, offlineYes — Chromium on your machineYes — Ruby + ImageMagickNo — uploads required
CLI / CI automationYes — validate --json, exit codesYesLimited
Reusable JSON configYes — one storeshot.config.jsonFramefile.jsonPer-project UI
Arabic / RTL typographyFirst-class — Chromium text engineBreaks ligaturesRare
Reproducible pixelsYes — deterministic by designNo — environment-dependentNo
PriceFree — MITFreeSubscription

Contributing

PRs welcome — new templates, verified store profiles, and Arabic/RTL edge cases above all.

Getting set up

git clone https://github.com/saperaa/StoreShot
cd storeshot
npm install
npx playwright-core install chromium   # one-time
npm run build
npm test   # unit + integration + visual regression

Visual baselines are platform-suffixed (Windows and Linux Chromium rasterize text differently). If you change rendering intentionally, regenerate with npm run test:visual:update and say so in the PR.

Ground rules

  • Never reverse, reorder or “fix” Arabic strings in code — shaping and bidi belong to Chromium, RTL layout belongs to CSS logical properties.
  • No network in the render path — the engine aborts non-file requests.
  • npm run lint && npm run typecheck && npm test must pass, including visual baselines.
  • For anything visual, PRs include before/after images rendered by the actual tool.

Credits & license

Ready to try it? Get started or browse the templates.