Key takeaways
- Apps built before the iOS 27.1 SDK run on iPhone Duo, but leave part of the display empty.
- Reserved regions tell a view where the fold and cameras are, so controls can stay clear of them.
- Apple suggests the hinge angle for interactions and effects, and regions and arrangements for layout.
- Book and laptop postures both report partially open, so tell them apart by the fold region’s shape.
- As of 26 October 2026, Apple documents no command-line way to fold the Simulator, so test layouts in code.
To make an existing app look right on iPhone Duo, rebuild it with Xcode 27.1 against the iOS 27.1 SDK and make every screen size itself from its own bounds. Then let the system move your bars to the side, and keep controls off the fold with the new reserved-region APIs. For an app that already resizes well on iPad, that is most of iPhone Duo app development. Apps that skip the rebuild still run, but leave part of the display empty.
Apple’s first foldable went on sale on 23 October 2026.1 Below are the iOS 27.1 iPhone Duo APIs as Apple documents them, a layout pattern for each posture, Safari 27.1’s fold APIs, and how to test fold layouts while Apple’s command-line tools have no posture controls.
Our worked examples are Bitfold, a retro game console app, and Football Kick, a one-finger football game. 9io, a product engineering studio, made both for iPhone Duo. They’re on their way to the App Store, and both play free in a browser (Bitfold, Football Kick).
What happens to apps that aren’t rebuilt with the iOS 27.1 SDK
Every iPhone app runs on iPhone Duo. How much of the display it uses depends on the SDK it was built with.23
| Built with | What people see on iPhone Duo |
|---|---|
| iOS 26 SDK or earlier | Open, the app keeps a familiar iPhone size in the middle of the inner display, with empty space around it. Closed, it uses the area to the left of the status bar and camera. |
| iOS 27 SDK | The app fills most of the inner display but stops short of the status bar on the right edge. |
| iOS 27.1 SDK or later | The app uses the full display, and toolbars and tab bars run down the side below the status bar. |
9to5Mac’s write-up on announcement day showed older builds sitting inside a black background, and iOS 27.0 builds still leaving blank space.4 Apple’s developer news post of 5 October asks teams to recompile with Xcode 27.1.5 Test the rebuild before you ship it, because your bars may turn vertical.2 Submitting iPhone Duo screenshots earns your product page a badge saying the app is optimised for iPhone Duo, and from April 2027 every app or game submitted must include them.5
How to support iPhone Duo: start with resizing
Most of the work is resizing. A fold can resize your app in the middle of a session, and Apple says apps that already resize well on iPad, on Mac or in iPhone Mirroring are well on their way.62 These are the patterns it asks you to remove:
- Size from the view or window, never from
UIScreen.main.bounds, and re-read the size whenever it changes. In SwiftUI, useGeometryReaderoronGeometryChange. - Don’t make layout decisions from device orientation or
userInterfaceIdiom, don’t treat regular width as iPad, and delete checks against known iPhone heights. - Check full-bleed images and video set to fill, which can lose important content on the wider displays.
Apple’s engineers add that referring to the main screen is ambiguous with two displays and will be deprecated in a future release.3 Design for two size classes, compact width on the outer display and regular width on the inner one.73 The two displays share one aspect ratio, so content scales proportionally between them.1 Macworld gives it as 1:1.4 and Wikipedia as 1.41:1, and Macworld notes that this makes the outer display exactly half of the inner one.89
Bars move to the side when they come from system containers such as NavigationStack, NavigationSplitView and TabView, or UIKit’s navigation and tab bar controllers. Custom bars built from UIToolbar, UINavigationBar or UITabBar stay put.6 Give every toolbar item a title and a symbol, because vertical bars show symbols and title-only items stay horizontal. toolbarVerticalBehavior(_:) in SwiftUI and preferredVerticalBarBehavior in UIKit keep a sheet’s bar horizontal on the outer display.6 With bars along one edge, handle each safe-area inset on its own.3
Any app can share the inner display with another, each taking half. iPhone Duo is also the first iPhone to run several windows of one app, but only the inner display can open new ones, so handle the error when it can’t. UIWindowSceneActivationAction hides itself in that case.1011
For a first pass, ask Xcode 27.1’s coding assistant to get your app ready for iPhone Duo. Its App Resizability skill scans for the patterns above, and xcrun agent skills export shares it with other coding agents. Apple says it finds most issues but not every one.23
Reserved regions keep content off the crease and cameras
iOS 27.1 calls the parts of a view that your content shouldn’t use reserved regions.12 A division splits a view, like the fold when the phone is partially open. An occlusion covers part of it, like the Dynamic Island or a camera. The outer front camera always occludes, and the inner one only does while it’s in use.6
In SwiftUI, call reservedRegions(kind:options:layoutDirectionBehavior:) on the GeometryProxy from a GeometryReader. In UIKit, call reservedRegions(kind:options:) on a UIView. Each region’s frame is in the view’s own coordinates, in points, with Apple’s margins already included.12 Details worth building around:
- You get active regions by default. The fold is active only while the phone is partially open, and when the phone is flat it’s inactive with a width of zero.13 Pass
.includeInactiveto leave room ahead of time, so the layout doesn’t jump when someone folds the phone. - Frames are mirrored for right-to-left languages unless you pass
LayoutDirectionBehavior.fixed. - Use an even number of grid columns so content divides cleanly at the fold.7
- Lists, scroll views and collection views don’t split their content around the fold, so a row can run across it.12
Split views, tab bars, sheets, alerts, context menus and toolbar buttons already move clear of the fold.1211 Most apps only need to read regions in custom views that place their own controls, such as a floating button or a game’s HUD.
For two related views, use ArrangementView in SwiftUI or UIArrangementViewController in UIKit.14 A split arrangement keeps them side by side or stacked, on separate sides of the fold, like the Podcasts Now Playing view beside its transcript. An overlay arrangement layers one over the other on a flat display and moves them apart when the phone folds, which suits playback controls over a video.1314 Keep navigation containers outside an arrangement view, and don’t nest one in a list or scroll view.
Hinge state and the hinge angle API
In SwiftUI, the onHingeChange modifier passes you the previous and new DeviceHingeContext. Its hinge is a DeviceHinge with a status of closed, partiallyOpen or fullyOpen and an angle as a SwiftUI Angle, or nil on a device without a hinge.1510 In UIKit, add a UIHingeInteraction to a view. Each update carries a UIHinge, whose angle is in radians and whose status adds an unknown case.15
Apple’s engineers describe hinge data as live and suited to interactions and effects, and send layout to the region and arrangement APIs. Their demo bends the pitch of a guitar app with the hinge, like a whammy bar.10 Apple’s reference adds that the rate and precision of angle updates are system policy and can change, so read status when that’s all you need.15
Football Kick reads the fold’s position from iOS and listens for hinge changes, so nothing about the fold is hard-coded. As you fold the phone up, the goal swings into place and the floodlights come on, and when you score the hinge lights up like goal-line technology.16
Telling closed, book, laptop and flat apart
There is no book or laptop status, so a phone held like a book and one folded like a laptop both report partially open. To tell them apart, look at the fold’s division region. Held like a book, the fold runs from top to bottom with content either side. In a laptop posture it runs across the middle, and content stacks above and below.12 Safari 27.1 draws the same line for web pages.17
| Posture | Hinge status | Division region in your view | Safari 27.1, flags on |
|---|---|---|---|
| Closed | closed |
None, because the app is on the outer display | device-posture: continuous |
| Open flat | fullyOpen |
Inactive, with zero width | device-posture: continuous |
| Book | partiallyOpen |
Taller than it is wide | folded, horizontal-viewport-segments: 2 |
| Laptop or tabletop | partiallyOpen |
Wider than it is tall | folded, vertical-viewport-segments: 2 |
Keep that decision in a small pure function, so a unit test can call it with any fold rectangle. This sketch uses only documented SwiftUI calls, and FoldLayout and GameLayout are our own names:
enum FoldLayout { case flat, book, laptop }
func foldLayout(fold: CGRect?) -> FoldLayout {
guard let fold else { return .flat } // no active fold in this view
return fold.height > fold.width ? .book : .laptop
}
// In the view that places your controls:
GeometryReader { proxy in
let fold = proxy.reservedRegions(kind: .division).first?.frame
GameLayout(mode: foldLayout(fold: fold), fold: fold)
}
Apple’s own example on the ReservedRegion page makes the same check.12
Foldable iPhone app design, posture by posture
Apple’s design guidance is to build layouts that resize and to adjust them a little when the phone folds, moving only what has to move so people can still find their controls.7 Its designers suggest one optional layout for a single pose. On a table, media can sit on the upright half and controls on the flat half, as long as every pose keeps the same controls.11 Games should stay playable in every pose, and Apple prefers a change of aspect ratio to black bars.7
| Posture | What the user is doing | Layout pattern | Examples |
|---|---|---|---|
| Closed | Using the phone one-handed on the 5.4-inch outer display | One pane, with the toolbar and tab bar down the side | Mail shows the list or one email.7 Bitfold shows a pocket console. |
| Open flat | Watching, reading or multitasking on the 7.6-inch inner display | Two panes, or a wider grid with an even number of columns | Mail shows the list and the email together.7 Slack puts the conversation list beside the open conversation.18 |
| Book | Holding the phone half open, like a book | Two pages, one on each side of the fold | Safari shows PDFs as two pages.17 Bitfold opens into two pages. Football Kick puts a camera behind the net on one page. |
| Laptop or tabletop | Setting it on a table to watch, call or tap | Content on the upright half, controls on the flat half | Netflix shows the picture above the fold and the controls below.19 PCalc moves every key to the lower half.18 Football Kick stands the goal up behind a flat pitch. |
Bitfold keeps the game running through every change of shape, with a soft click as the hinge snaps into the new layout. Folded like a laptop, it’s a clamshell with the game on the top half and the controls and a companion screen below, and Bitfold draws the console’s own hinge over the fold region iOS reports, so it lands exactly on the real one. Folded like a book, the console opens into two pages, because a button that straddles the crease is hard to press.20
Football Kick started from the laptop posture. Stood on a table, the bottom half is the pitch and the top half the goal, both drawn from one virtual camera so the ball crosses the hinge without a jump. In version 1.0, which we’re finishing now, two players can share a shootout, with the shooter swiping on the flat half and the keeper diving on the standing one.16
Launch-week roundups describe other apps splitting the laptop posture the same way. Telkino puts a Mac’s screen on the upright half with a trackpad and keys below.18 Tiny Computers turns the bottom half into a working keyboard.21 There are more in our list of the best iPhone Duo apps. Apple also suggests supporting your app sideways on the outer display, because people may set the phone down like a tent.3
iPhone Duo in Safari: the Device Posture and Viewport Segments APIs
Safari on iPhone Duo runs the same WebKit engine as every other iPhone, so responsive sites already work.17 Across poses, the Safari 27.1 viewport runs from 382 to 951 CSS pixels wide and from 368 to 902 tall. The outer display is 382 wide upright and 594 sideways, the inner display is 669 upright and 951 sideways, and each of two windows side by side gets 385. WebKit asks for fluid layouts and feature detection in place of user-agent sniffing.
Safari 27.1 also previews two foldable APIs behind feature flags, which you turn on in Settings > Apps > Safari > Advanced > Feature Flags.17
- Device Posture API. The
device-posturemedia query andnavigator.devicePosture.typereportfoldedwhen the phone is partly folded like a book or a laptop, andcontinuouswhen the screen is flat, whether open or closed. Achangeevent fires when the posture changes. - Viewport Segments API. The
horizontal-viewport-segmentsandvertical-viewport-segmentsmedia queries match two segments side by side (a book) or stacked (a laptop). Six environment variables,viewport-segment-width,viewport-segment-height,viewport-segment-top,viewport-segment-right,viewport-segment-bottomandviewport-segment-left, each take a column and a row index. In JavaScript,window.viewport.segmentsreturns oneDOMRectper segment.
A posture-aware rule can sit on top of a layout that already works without it:
/* Laptop posture: the player's controls fill the lower segment. */
@media (vertical-viewport-segments: 2) {
.player-controls {
position: fixed;
inset: env(viewport-segment-top 0 1) 0 0 0;
}
}
Visitors won’t have the flags on, and WebKit says both APIs may still change, so treat such rules as progressive enhancement. On the outer display, Safari 27.1 doesn’t draw page content behind the side controls. It fills that strip with the page’s background colour, so check how that colour looks beside your header.17
Testing fold layouts when the Simulator can’t be scripted
Xcode 27.1’s Device Hub has an iPhone Duo simulator with Closed, Partially Open and Open buttons below the bezel, and holding Option while dragging the slider folds it to any angle.22 Apple suggests opening every view, sheet and popover in each pose, rotating the phone in each one, and dragging your app to both sides of Split View.63
As of 26 October 2026, we found no Apple documentation for setting posture or hinge angle from the command line or a UI test. Apple’s command-line guide lists no posture commands for simctl or devicectl, and XCUIDevice has orientation but no hinge or posture control.23 Contributors to the Maestro UI testing project have documented the gap in issue 3617, opened on 21 September and still open on 26 October. They report that simctl in the Xcode 27.1 beta has no command for fold posture or hinge angle, and that orientation changes through devicectl and XCUIDevice report success and do nothing on iPhone Duo.24 An Apple forums thread asking for a supported way to unfold the Simulator has no reply from Apple.25 The community tool duoctl folds it with the same events Device Hub sends, through private interfaces checked only against Xcode 27.1, so it may break with the next release.26
The Simulator also boots closed, so a test run that never touches the controls sees only the outer display.25 Both of our games test their fold layouts in code. Bitfold’s geometry tests check its unfolded layouts, and its CI captures screenshots on iPhone, iPhone Duo and iPad.20 Football Kick has a layout test that places its HUD on every iPhone and iPad size and in every iPhone Duo posture, and fails if an element is off screen, overlaps another or sits on the fold.16 Both keep their logic in Swift packages with no UI framework, where tests reach it without a device.
To do the same in your app, make each layout decision a function of the container’s size and the fold rectangle, like foldLayout(fold:) above. Log the division frames in Device Hub once per posture and keep them as test fixtures. Then assert at every size and posture that nothing is off screen, nothing overlaps and no tappable element touches the fold. Keep Device Hub for the visual pass, including one run in a right-to-left language.
A checklist for iPhone Duo app development
- Build with Xcode 27.1 and the iOS 27.1 SDK, and run the App Resizability skill.
- Remove
UIScreen.mainsizing, orientation and idiom checks, and hard-coded device sizes. - Use system navigation containers and bars, give every toolbar item a title and a symbol, and handle each safe-area inset on its own.
- Keep tappable controls out of divisions and occlusions, and use arrangement views for two panes.
- Use an even number of grid columns, and leave room for inactive regions.
- Use the hinge angle for effects, and handle a
nilhinge. - Handle the error when a new window can’t open on the outer display.
- Test fold layout functions at every size and posture, then check each screen in Device Hub.
- On the web, feature-detect posture and segments, and check the strip beside the outer display’s controls.
- Add iPhone Duo screenshots to App Store submissions before April 2027.
-
Apple Newsroom, “Apple unveils iPhone Duo”, 9 September 2026, https://www.apple.com/newsroom/2026/09/apple-unveils-iphone-duo/ ↩↩
-
Apple Developer, “Three steps to make your app shine on iPhone Duo”, read 26 October 2026, https://developer.apple.com/iphone-duo/prepare/ ↩↩↩↩
-
Apple Developer, Tech Talk “Prepare your app for iPhone Duo”, transcript, https://developer.apple.com/videos/play/tech-talks/111461/ ↩↩↩↩↩↩↩
-
Zac Hall, “Here’s how iPhone Duo treats apps not optimized for the foldable display”, 9to5Mac, 9 September 2026, https://9to5mac.com/2026/09/09/heres-how-iphone-duo-treats-apps-not-optimized-for-the-foldable-display/ ↩
-
Apple Developer News, “Prepare and submit your apps for iPhone Duo”, 5 October 2026, https://developer.apple.com/news/?id=kkphp5qo ↩↩
-
Apple Developer Documentation, “Preparing your app for iPhone Duo”, read 26 October 2026, https://developer.apple.com/documentation/technologyoverviews/preparing-your-app-for-iphone-duo ↩↩↩↩↩
-
Apple, Human Interface Guidelines, “Designing for iPhone Duo”, published 9 September 2026, https://developer.apple.com/design/human-interface-guidelines/designing-for-iphone-duo ↩↩↩↩↩↩
-
Jason Cross, “iPhone Duo: The 5 most important things you need to know”, Macworld, 9 September 2026, https://macworld.com/article/3230936/iphone-duo-the-five-most-important-things-you-need-to-know.html ↩
-
Wikipedia, “iPhone Duo”, read 26 October 2026, https://en.wikipedia.org/wiki/IPhone_Duo ↩
-
Apple Developer, Tech Talk “Leverage multiple displays and scenes on iPhone Duo”, transcript, https://developer.apple.com/videos/play/tech-talks/111464/ ↩↩↩
-
Apple Developer, Tech Talk “Design for iPhone Duo”, transcript, https://developer.apple.com/videos/play/tech-talks/111466/ ↩↩↩
-
Apple Developer Documentation, “ReservedRegion” and “reservedRegions(kind:options:layoutDirectionBehavior:)” (SwiftUI) and “UIView.ReservedRegion” (UIKit), read 26 October 2026, https://developer.apple.com/documentation/swiftui/reservedregion, https://developer.apple.com/documentation/swiftui/geometryproxy/reservedregions(kind:options:layoutdirectionbehavior:) and https://developer.apple.com/documentation/uikit/uiview/reservedregion ↩↩↩↩↩↩
-
Apple Developer, Tech Talk “Strike a pose with adaptive layouts on iPhone Duo”, transcript, https://developer.apple.com/videos/play/tech-talks/111463/ ↩↩
-
Apple Developer Documentation, “ArrangementView” (SwiftUI) and “UIArrangementViewController” (UIKit), read 26 October 2026, https://developer.apple.com/documentation/swiftui/arrangementview and https://developer.apple.com/documentation/uikit/uiarrangementviewcontroller ↩↩
-
Apple Developer Documentation, “onHingeChange(isEnabled::)”, “DeviceHinge”, “UIHingeInteraction” and “UIHinge”, read 26 October 2026, https://developer.apple.com/documentation/swiftui/view/onhingechange(isenabled::), https://developer.apple.com/documentation/swiftui/devicehinge, https://developer.apple.com/documentation/uikit/uihingeinteraction and https://developer.apple.com/documentation/uikit/uihinge ↩↩↩
-
9io, “Football Kick: a football game built around iPhone Duo’s fold”, 26 October 2026, https://9io.ai/blog/football-kicks-iphone-duo-game ↩↩↩
-
Jen Simmons, “WebKit Features for Safari 27.1”, WebKit blog, 23 October 2026, https://webkit.org/blog/18486/webkit-features-for-safari-27-1/ ↩↩↩↩↩
-
FoldHunt, “The best iPhone Duo apps so far (October 2026)”, updated 26 October 2026, https://foldhunt.com/guides/best-iphone-duo-apps/ ↩↩↩
-
José Adorno, “The 8 Best Apps Optimized For The iPhone Duo On Day One”, BGR, 23 October 2026, https://www.bgr.com/2295112/best-iphone-duo-apps-at-launch/ ↩
-
9io, “Bitfold: the retro game console app we built for iPhone Duo”, 26 October 2026, https://9io.ai/blog/bitfold-retro-game-console-iphone-duo ↩↩
-
John Kanellakos, “5 clever apps that already work on the iPhone Duo”, Pocket-lint, 23 October 2026, https://www.pocket-lint.com/clever-apps-that-already-work-on-iphone-duo/ ↩
-
Apple Developer Documentation, “Interacting with your app in Device Hub”, read 26 October 2026, https://developer.apple.com/documentation/xcode/interacting-with-your-app-in-device-hub ↩
-
Apple Developer Documentation, “Interacting with devices using the command line” and “XCUIDevice”, read 26 October 2026, https://developer.apple.com/documentation/xcode/interacting-with-devices-using-the-command-line and https://developer.apple.com/documentation/xcuiautomation/xcuidevice ↩
-
mobile-dev-inc/Maestro, issue 3617, “Support iPhone Duo simulator fold postures and split-screen (Xcode 27.1+)”, opened 21 September 2026, comments of 21 September and 8 October, https://github.com/mobile-dev-inc/maestro/issues/3617 ↩
-
Apple Developer Forums, “Supported way to put an iPhone Duo simulator into the unfolded state programmatically”, September 2026, read 26 October 2026, https://developer.apple.com/forums/thread/847883 ↩↩
-
skarol, duoctl README, read 26 October 2026, https://github.com/skarol/duoctl ↩
Frequently asked questions
How do I make my app work on iPhone Duo?
Rebuild it with Xcode 27.1 against the iOS 27.1 SDK, then remove layout code that sizes from the main screen or decides by orientation or device idiom. Use the system’s navigation containers so bars can move to the side, and keep controls out of the fold with the reserved-region APIs.
Why does my app have black bars on iPhone Duo?
It was built with the iOS 26 SDK or earlier, so on the open inner display it keeps an iPhone-sized window with empty space around it. Apps built with the iOS 27 SDK fill most of the display but stop short of the status bar. Rebuilding with the iOS 27.1 SDK uses the full display.
How do I get the hinge angle on iPhone Duo?
In SwiftUI, add the onHingeChange modifier and read the status and angle of the hinge in the new context. In UIKit, add a UIHingeInteraction to a view and read the UIHinge in each update, whose angle is in radians. Apple recommends the hinge for interactions and effects, and the reserved-region and arrangement APIs for layout.
How can I tell if iPhone Duo is folded like a book or a laptop?
The hinge status is partially open for both. Read the fold’s division region instead: if its frame is taller than it is wide, the phone is folded like a book; if it is wider than tall, it is folded like a laptop. On the web, the horizontal-viewport-segments and vertical-viewport-segments media queries make the same distinction.
Does Safari on iPhone Duo support the Device Posture API?
As a preview. Safari 27.1 supports the Device Posture and Viewport Segments APIs behind feature flags, which you turn on in Settings > Apps > Safari > Advanced > Feature Flags. Visitors won’t have them turned on, so treat posture-aware CSS as an enhancement.
Can I change iPhone Duo posture in the Simulator from the command line?
We found no supported way as of 26 October 2026. Device Hub in Xcode 27.1 has Closed, Partially Open and Open buttons and an angle slider, but simctl, devicectl and XCUIDevice have no documented posture or hinge controls. Test fold layouts in code and use Device Hub for visual checks.
Building something like this?
9io is a small team of senior engineers with a fractional CTO. We work by the hour, and plans start at $5,000. Send us a note about your product. The reply comes from the person who'd do the work.