iPhone Duo goes on sale on Friday, October 23, and App Store Connect now has two new screenshot sizes for it. I added them to my own app this month, and a few things weren't obvious. Here's what I found.
The two sizes
The Duo has two displays, and each one gets its own screenshot size.
| Display | Portrait | Landscape |
|---|---|---|
| Outer (closed) | 1398 × 2034 | 2034 × 1398 |
| Inner (open) | 2007 × 2853 | 2853 × 2007 |
Both are optional for now. Apple says they become required from April 2027 for apps built with the iOS 27.1 SDK or later.
Both are close to 2:3, while a 6.9-inch iPhone screenshot is about 1:2.2. A layout made for the tall iPhone doesn't simply scale onto the Duo: crop it and you lose a third of the picture. Each display needs its own capture, and usually a slightly different composition.
The API doesn't document Duo (yet)
Apple's published App Store Connect API reference doesn't list an iPhone Duo value for ScreenshotDisplayType, and the OpenAPI spec leaves it out. Tools that rely on the spec — fastlane deliver and scripts built from it — won't know about the Duo sizes.
There are signs the live API is further along than its documentation: the maintainers of one open-source App Store Connect CLI report that creating a screenshot set with APP_IPHONE_DUO succeeds and that outer-display captures uploaded fine. Inner-display uploads aren't confirmed. Treat it as undocumented and subject to change.
The certain route is the web interface: export the files and drag them into App Store Connect, in the iPhone Duo section of the version's screenshots.
Capturing each display from the simulator
The iPhone Duo simulator in Xcode 27.1 exposes one framebuffer per display, so you can capture each screen separately at exactly the App Store size.
List the displays of the booted simulator:
xcrun simctl io booted enumerate
You'll get two entries with their UUIDs and sizes (1398 wide for the outer display, 2007 for the inner one). Then capture the one you want:
xcrun simctl io booted screenshot --display=<UUID> outer.png
- The UUIDs change every time the simulator boots. Enumerate again after a restart, or match on the width in a script.
- The files come out at the exact pixel sizes App Store Connect asks for, so there's no resizing step.
Two gotchas
The outer display keeps a system column. When closed, the Duo shows a narrow status column beside your app, and it's part of the capture. Design the outer screenshot knowing that strip is there.
The inner display only shows your app once it's unfolded. The simulator starts closed. Unfold it in Device Hub first, then capture the inner display. I haven't found a simctl command for folding and unfolding, so this step is still manual.
How I handle it in my own app
I make Marquee, a Mac app for App Store screenshots, and the Duo is what pushed me to rethink how sizes work in it. Instead of a separate Duo page to design, the Duo is two more sizes of the iPhone page: you lay out the iPhone screenshots once, switch the canvas to a Duo size, and every iPhone in the layout becomes a Duo — closed, open, or half open like a book — with your capture for that display inside it.
It exports every size at Apple's exact pixels, and from version 1.2 it can send the outer-display set through that undocumented API value as an opt-in; the inner display is exported for you to drag in. It's a one-time purchase, no subscription — on the Mac App Store.
Everything above works without it, though.
A checklist
- Make sure your app adapts to both displays; Apple's "Designing for iPhone Duo" page in the Human Interface Guidelines is the reference.
- Capture the outer display closed and the inner display open, with
simctl io … screenshot --display. - Keep the same story across the iPhone, outer and inner sets: same order, same headlines.
- Upload the Duo sets in the web interface unless you've verified the API route yourself.
The full guide is on my site: iPhone Duo App Store screenshot sizes.
Has anyone found a way to automate the unfold step for inner-display captures? I'd love to script the whole thing.













