<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Marco</title>
    <description>The latest articles on DEV Community by Marco (@marck100).</description>
    <link>https://dev.to/marck100</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2776222%2F6765710d-cc2f-469e-a022-d412418fe545.png</url>
      <title>DEV Community: Marco</title>
      <link>https://dev.to/marck100</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/marck100"/>
    <language>en</language>
    <item>
      <title>iPhone Duo App Store screenshots: the new sizes, capturing both displays, and what the API says</title>
      <dc:creator>Marco</dc:creator>
      <pubDate>Thu, 22 Oct 2026 10:51:10 +0000</pubDate>
      <link>https://dev.to/marck100/iphone-duo-app-store-screenshots-the-new-sizes-capturing-both-displays-and-what-the-api-says-12cn</link>
      <guid>https://dev.to/marck100/iphone-duo-app-store-screenshots-the-new-sizes-capturing-both-displays-and-what-the-api-says-12cn</guid>
      <description>&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmdmgh7ghsjfl6fs8c9zs.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmdmgh7ghsjfl6fs8c9zs.webp" alt="iPhone Duo, closed and open" width="800" height="425"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The two sizes
&lt;/h2&gt;

&lt;p&gt;The Duo has two displays, and each one gets its own screenshot size.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Display&lt;/th&gt;
&lt;th&gt;Portrait&lt;/th&gt;
&lt;th&gt;Landscape&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Outer (closed)&lt;/td&gt;
&lt;td&gt;1398 × 2034&lt;/td&gt;
&lt;td&gt;2034 × 1398&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Inner (open)&lt;/td&gt;
&lt;td&gt;2007 × 2853&lt;/td&gt;
&lt;td&gt;2853 × 2007&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3bcob8yh1sbvvfbx9xyp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3bcob8yh1sbvvfbx9xyp.png" alt="The two Duo sizes next to a 6.9-inch iPhone screenshot" width="800" height="336"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Both are &lt;strong&gt;optional for now&lt;/strong&gt;. Apple says they become &lt;strong&gt;required from April 2027&lt;/strong&gt; for apps built with the iOS 27.1 SDK or later.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h2&gt;
  
  
  The API doesn't document Duo (yet)
&lt;/h2&gt;

&lt;p&gt;Apple's published App Store Connect API reference doesn't list an iPhone Duo value for &lt;code&gt;ScreenshotDisplayType&lt;/code&gt;, and the OpenAPI spec leaves it out. Tools that rely on the spec — fastlane &lt;code&gt;deliver&lt;/code&gt; and scripts built from it — won't know about the Duo sizes.&lt;/p&gt;

&lt;p&gt;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 &lt;code&gt;APP_IPHONE_DUO&lt;/code&gt; succeeds and that outer-display captures uploaded fine. Inner-display uploads aren't confirmed. Treat it as undocumented and subject to change.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h2&gt;
  
  
  Capturing each display from the simulator
&lt;/h2&gt;

&lt;p&gt;The iPhone Duo simulator in Xcode 27.1 exposes &lt;strong&gt;one framebuffer per display&lt;/strong&gt;, so you can capture each screen separately at exactly the App Store size.&lt;/p&gt;

&lt;p&gt;List the displays of the booted simulator:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;xcrun simctl io booted enumerate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;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:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;xcrun simctl io booted screenshot &lt;span class="nt"&gt;--display&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&amp;lt;UUID&amp;gt; outer.png
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The UUIDs change every time the simulator boots.&lt;/strong&gt; Enumerate again after a restart, or match on the width in a script.&lt;/li&gt;
&lt;li&gt;The files come out at the exact pixel sizes App Store Connect asks for, so there's no resizing step.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Two gotchas
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;The outer display keeps a system column.&lt;/strong&gt; 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.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The inner display only shows your app once it's unfolded.&lt;/strong&gt; The simulator starts closed. Unfold it in Device Hub first, then capture the inner display. I haven't found a &lt;code&gt;simctl&lt;/code&gt; command for folding and unfolding, so this step is still manual.&lt;/p&gt;

&lt;h2&gt;
  
  
  How I handle it in my own app
&lt;/h2&gt;

&lt;p&gt;I make &lt;a href="https://marcopilloni.com/marquee/" rel="noopener noreferrer"&gt;Marquee&lt;/a&gt;, 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.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgd268ebeuywelw5awj5k.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgd268ebeuywelw5awj5k.webp" alt="Marquee showing an iPhone screenshot laid out on a half-open iPhone Duo" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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 — &lt;a href="https://apps.apple.com/app/apple-store/id6812490566?pt=121773157&amp;amp;ct=devto&amp;amp;mt=12" rel="noopener noreferrer"&gt;on the Mac App Store&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Everything above works without it, though.&lt;/p&gt;

&lt;h2&gt;
  
  
  A checklist
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Make sure your app adapts to both displays; Apple's "Designing for iPhone Duo" page in the Human Interface Guidelines is the reference.&lt;/li&gt;
&lt;li&gt;Capture the outer display closed and the inner display open, with &lt;code&gt;simctl io … screenshot --display&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Keep the same story across the iPhone, outer and inner sets: same order, same headlines.&lt;/li&gt;
&lt;li&gt;Upload the Duo sets in the web interface unless you've verified the API route yourself.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The full guide is on my site: &lt;a href="https://marcopilloni.com/marquee/iphone-duo-screenshot-sizes/" rel="noopener noreferrer"&gt;iPhone Duo App Store screenshot sizes&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Has anyone found a way to automate the unfold step for inner-display captures? I'd love to script the whole thing.&lt;/p&gt;

</description>
      <category>ios</category>
      <category>swift</category>
      <category>appstore</category>
      <category>iphone</category>
    </item>
  </channel>
</rss>
