iPhone mockup generator vs screenshot: which to use when
Two tools that produce the same-looking file for very different jobs. The choice comes down to whether the screen exists yet — and whether the audience will read the image as evidence.
Published:
Use a real screenshot when the screen already exists and must be accurate to the shipped build; use a mockup generator when the screen does not exist yet, when you need many controlled variants, or when real data cannot be shown — and use neither where the audience would read the image as evidence.
They are not competing tools
A screenshot documents something that exists. A mockup depicts something — which may exist, may be planned, or may be a demo state you could never produce by hand. Both output a PNG of the same dimensions, which is why they get compared, but they answer different questions and fail in different ways.
The decision table
| Criterion | Real screenshot | Mockup generator |
|---|---|---|
| Screen must already exist | Yes | No |
| Fidelity to the shipped build | Exact, by definition | Approximate |
| Time to a first usable asset | Hours to days | Minutes |
| Cost of a variant (locale, theme, value) | Re-seed and re-shoot | Change a field |
| Personal data risk | High if captured from a real account | None: nothing real is on screen |
| Drift over releases | Accurate as of the shoot date | Drifts unless maintained |
| Edge cases (long strings, RTL, Dynamic Type) | Revealed automatically | Only if you model them |
| Valid as evidence | Of your own app, yes | Never |
Use a screenshot when
- The listing or the article documents a shipped build. Anything that claims to show the product as it is must be the product as it is.
- You need to catch layout bugs. A screenshot finds the German string that overflows; a mockup happily draws it at the width you chose.
- You are testing accessibility rendering — larger Dynamic Type sizes, bold text, increased contrast — which no generator reproduces faithfully.
- The audience is technical and will compare the image to the app.
- The image will sit next to a version number or a changelog, where being current is the whole point.
There is a second, quieter reason. A screenshot is a form of test. Every time someone captures a real screen for marketing, they look at it harder than they ever look at it in the simulator, and that is when the misaligned badge and the off-by-two-pixel margin get found. Teams that only ever ship generated assets lose that pass without noticing.
The option people forget: the Simulator
Xcode's Simulator sits between the two and costs nothing. It renders with the
real UI framework and real font metrics, captures at the simulated device's
native pixel size — a simulated iPhone 16 Pro produces 1206 × 2622
— and contains no personal data because there is no real account in it.
It also lets you fix the status bar, which is otherwise the giveaway in captured assets:
xcrun simctl status_bar booted override --time 9:41 --batteryState charged --batteryLevel 100 --cellularBars 4 --wifiBars 3
then capture with xcrun simctl io booted screenshot shot.png.
Verify the flags against your own Xcode version — the option list has grown
over releases. If you ship a lot of localised sets, driving this from UI tests
is the standard way to make the whole set reproducible.
Use a generator when
- The screen does not exist yet. Pre-build decks, concept slides, a landing page written before the app is finished.
- You need controlled variants. Eight locales, two themes, three price points. Re-seeding a real account eight times is a day; changing a field is a minute.
- Real data cannot be shown. A finance or health screen with genuine values is not something to put in a marketing asset, and blurring it looks worse than depicting a demo state.
- The state is hard to reach. A perfect portfolio, a full inbox, an achievement screen — states that take hours to produce for real and five seconds to depict.
Wallet screens are the case that gave My Larp Wallet its reason to exist: a portfolio view is a known pattern, the values are the whole point, and nobody should be screenshotting a real one.
Count the cost over the asset's life, not the first export
The comparison that decides most of these arguments is not "how long does the first image take". It is how many times the image will be remade. A landing page hero gets remade whenever the design shifts. A store set gets remade for every locale and every major redesign. A deck slide gets remade whenever the numbers on it change, which is often. Multiply the per-variant cost by that count before deciding, because a route that is twenty minutes slower once and two minutes faster thirty times is the cheaper route.
Use neither when the image would be read as evidence
This is the boundary that actually matters, and it does not depend on which tool made the file. If the recipient would treat the image as a record — proof of a balance, a payment, a holding, a transaction — then a generated mockup is a fabricated document and a screenshot of a demo account is barely better. Product illustration, store listings, decks, tutorials and design reviews are all fine. Anything offered as proof is not.
Quality traps in generated assets
Most mockups that read as fake fail on the same handful of details:
- Round numbers. Nothing is exactly 10,000.00.
- A status bar from the wrong era — a notch layout on a Dynamic Island device, or a battery drawn at the wrong width.
- Uniform type. Apple's system font switches optical size around 27 px; drawing every string with one face gets the largest element on the screen subtly wrong.
- Flat card edges. Real cards carry a graded one-pixel border that is lighter at the top, which is what makes them read as raised.
- Perfect content. No truncation anywhere, every name the same length, is itself a tell.
The measured versions of those figures are in the anatomy of a wallet portfolio screen and the status bar guide.
The practical answer
Most teams need both, in this order: generate while the product is being built, so the deck and the landing page exist; capture once the build is real, so the store listing documents what ships; then keep generating for variants the shipped app cannot easily produce. The failure mode is not picking the wrong tool — it is forgetting to replace the generated assets once the real screen exists.
Compose the screen instead of describing it
My Larp Wallet lays out a wallet screen in the browser and exports it at 1179 × 2556 px, the native resolution of an iPhone 14 Pro. What comes out is a mockup, and it says so. One plan, $19/month.
Open my walletKeep reading
- Figma mockup vs real screenshot for a product demoBoth produce an image at the same pixel size. They fail in opposite ways, and the failure mode is what should decide.
- How to show a crypto portfolio in a pitch deckA portfolio screen in a deck is a product illustration, not evidence. Here is how to make it legible at slide scale, and…
- What resolution should App Store screenshots be?Apple specifies screenshots in pixels, not DPI. Here are the numbers, where they come from, and the format rules that fail…