The math on manual App Store screenshots is punishing.

If you support 3 device sizes, 6 locales, and 5 screenshot frames, that’s 90 screenshots to manage. Change the UI, update the overlay text, or adjust device frames when Apple releases a new iPhone and you regenerate all 90. By hand.

Most indie developers do this once, realize the cost, and then stop updating screenshots as often as they should. That decision quietly suppresses product page conversion on every visit.

Screenshot automation solves this, but the tooling options range from genuinely worth setting up to more work than they save. This post covers what screenshot automation means in practice, the common approaches, and how to know when you have outgrown the manual method.

What screenshot automation means

App Store screenshot automation is the workflow of programmatically generating, framing, and uploading device screenshots without doing it by hand for each combination of device, language, and frame.

In practice, this usually means one or more of the following:

UI test-based capture. Running automated UI tests that trigger screenshot captures at specific app states. Fastlane’s snapshot tool is the most widely known implementation of this approach.

Device framing. Placing raw screenshots inside device bezels and adding text overlays programmatically, typically with Fastlane frameit or a comparable tool.

Localized text injection. Substituting overlay text in each screenshot with the correct language so the French product page gets French captions and the Japanese page gets Japanese captions.

Batch upload. Pushing the finished screenshots to App Store Connect via the ASC API, often as part of a CI/CD pipeline.

A complete screenshot automation pipeline handles all four steps. Most developers automate one or two and handle the rest manually.

The Fastlane approach

Fastlane is the most widely known iOS screenshot automation toolkit. Its snapshot tool captures screenshots by running UI tests against a simulator and saving the output. Its frameit tool takes those screenshots and places them inside device frames with optional text overlays.

For developers already using Fastlane for deployment, adding screenshot automation extends what they already know. The configuration lives in a Fastfile, the tests run in the simulator, and the output is a folder of framed screenshots.

The friction points in practice:

Device frame updates lag hardware releases. When a new iPhone model ships, frameit’s included templates may be out of date, requiring manual updates or community patches before you can generate correctly framed screenshots for the new device.

Local machine dependency. Fastlane snapshot runs on your machine by default. A 90-screenshot run can take 30 to 40 minutes on modern hardware and ties up your computer during that window.

Localization overhead. Adding a new locale means configuring snapshot to accept localized strings, updating the text file for that locale, regenerating all screenshots, and uploading. Each step is manual if you have not fully automated the pipeline.

These are manageable problems for a team with DevOps bandwidth. For a solo developer who needs to ship features, they become reasons to defer the screenshot refresh.

When automation is worth it

Screenshot automation pays off fastest when any of these are true:

You support multiple locales. Even two languages doubles the screenshot count. Automation that handles locale-specific text injection turns what would be 40 minutes of work into a CI job that runs while you do something else.

You update the UI frequently. If every feature release changes the visual state of your screenshots, manual regeneration at each release cycle adds up quickly. Automation keeps screenshots current without becoming a release blocker.

You are testing product page conversion. Running a Product Page Optimization test in App Store Connect requires a second set of screenshots for the treatment variant. Building that set with automation is significantly faster than manually creating and uploading alternates.

You support more than two device sizes. iPhone 15 series, iPhone 16 series, iPad — each adds its own screenshot requirements. Manual management of three to five device formats does not scale.

The tipping point for most indie developers is somewhere around two locales and two device targets. Below that, a manual workflow is defensible. Above it, automation saves more time than it costs to set up.

What a modern screenshot pipeline looks like

A complete automation pipeline for a solo indie developer works like this:

  1. UI tests that reach specific app states and call a screenshot function at each one
  2. A CI trigger (on a branch push, release tag, or manual run) that runs those tests against all target device simulators
  3. A framing step that applies device overlays and injects the correct localized text per locale
  4. An upload step that pushes the finished screenshots to App Store Connect via the ASC API

The key difference from a simpler local Fastlane setup: the CI trigger means the pipeline runs in the cloud, not on your machine. You push code and screenshots get generated. You review the output, approve it if it looks correct, and move on.

Marteso is built around this model. Connecting your repository means a push can trigger the screenshot pipeline automatically. The framing and localization step runs in Marteso’s infrastructure rather than your laptop. The output lands in your dashboard for review before it reaches App Store Connect.

The goal is not to remove developer judgment from the process. It is to remove the 40-minute local run so that time goes toward reviewing the output, not waiting for it.

The hidden cost of stale screenshots

One pattern that shows up consistently in product page data: developers who automated their screenshot pipeline update screenshots more often than developers who do it manually. That is not surprising on its own. What is surprising is the magnitude of the conversion difference.

When screenshots are stale, they typically have one or more of these problems:

  • UI elements visible in the screenshot no longer match the current app, which creates cognitive friction when users install and see something different
  • Overlay text references features or value propositions that have been superseded by newer work
  • Non-English locales show English text because updating them got deferred

Each of these is a small conversion drag. Together they represent a product page that is consistently underperforming relative to the quality of the actual app.

The fix is not a better screenshot strategy. It is reducing the friction of the update process so that screenshots stay current as a byproduct of normal development.

A quick audit

If you are managing screenshots manually right now, run through these questions:

  1. How many screenshots do you manage total (devices multiplied by locales multiplied by frames)?
  2. When was the last time you updated them?
  3. Has your UI changed since then in ways visible in the screenshots?
  4. Do you have localizations that currently show English text?

If the answer to question 3 or 4 is yes, you have screenshot debt that is quietly suppressing product page conversion. Users in non-English markets seeing English text face friction that does not show up anywhere in App Store Connect except in the conversion rate data.

Screenshot automation is not glamorous infrastructure. It is the kind of plumbing that makes everything else in your ASO work actually matter.


Marteso automates iOS screenshot generation, framing, and localization in a single CI-connected pipeline. Start at app.marteso.com.