Today is 15 October 2026. Apple’s product page says pre-order 16 October at 5:00 a.m. Pacific, and the phone is on sale 23 October. The 5 October developer news already allows a rebuild and a submission with Xcode 27.1. From April 2027, new submissions also have to include iPhone Duo screenshots. Launching only shows that the old binary is still there. It does not show a full-bleed inner display. It does not show that portrait and landscape took the right branch. It does not show that the primary button is still inside the safe area in Split View. The 13 October article priced the retrofit schedule together with buying a Mac outright. This article answers only the question before launch: whether the code has to change, and what this round of testing should cost.
Why launching is not re-adaptation
The old judgment and the new judgment stick on the same user report. The old judgment is “it launches in the simulator, so wait for the bad reviews after launch.” The new judgment starts by asking which fact the layout still reads: the whole screen, the device orientation, or this one window. Apple’s prepare page is direct. Apps built with the iOS 27 SDK and later change size as Duo folds. Hardcoded screen sizes, fixed orientations, and device assumptions stretch, clip, or misplace the layout.
The same sources look different across three SDK tiers. That is the first cut before launch, not a design preference. An iOS 26 SDK build, or earlier, still runs. When the device is open, the window sits in the center with empty space around it. When it is closed, the content sits to the left of the status bar and camera. An iOS 27 SDK build fills most of the inner display and still avoids the status bar on the right. Only the iOS 27.1 SDK and later is the optimized state. Content uses the full display area. Toolbars and tab bars stand vertically under the status bar. A team that only swaps store screenshots, while the binary is still the old SDK, shows users a letterbox when they open the inner display. That empty space will not be read as “we will adapt next week.”
The second cut is that a window is not the screen, and orientation is not the shape. The prepare page requires a fresh read on every size change. Reading once inside viewIsAppearing is not enough, because the fold happens in the middle of a session. UIKit puts size-dependent layout in layoutSubviews or viewDidLayoutSubviews. Work that has to run when the size changes uses viewWillTransition(to:with:). SwiftUI uses GeometryReader or onGeometryChange. Take scale from the trait collection. Leave UIScreen.main.scale alone. On a dual-display device the meaning of the main screen is ambiguous. Apple says it will be deprecated in a future release.
The third cut is the test machine. The iPhone Duo simulator in Xcode 27.1, the open-close-rotate controls at the bottom of Device Hub, and the extreme stretch of iPhone Mirroring on macOS 27 are all tied to a Mac. Windows does not have this chain. How a team picks a builder is in the Xcode Cloud versus remote Mac comparison. Xcode Cloud can compile a build. It does not replace you sitting in front of Device Hub, rotating closed, partially folded, and open once each, then dragging Split View from the left to the right.
How to classify fold size, orientation, and multiwindow
Write “support iPhone Duo” as one milestone and the schedule before launch will drift. Split the work by the behavior users actually hit, into four gates. Miss one gate and you will write “it compiles” as “it is adapted.”
| Tool | Entry | What it can do | Context | Who it fits |
|---|---|---|---|---|
| Fold size | Outer display, inner display, current window | Lay out from size class and bounds. Do not hardcode pixels or inches | Resolutions on the spec page are only for scale | Any code that still compares bounds.height == 844 |
| Orientation | Outer-display orientation declaration; inner-display aspect ratio | The outer display honors supported orientations. The inner display does not, including Split View | Tent pose makes people lay the closed phone on its side | Screens that switch layout with interfaceOrientation |
| Multiwindow | Split View, a second scene, scene accessories | Every app sits side by side. A new window exists only on the inner display | A new-scene request on the outer display fails | Apps that copied the iPad “New Window” button as-is |
| Xcode testing | Device Hub in Xcode 27.1 | Three poses, rotation, left and right Split View, a second scene request | Five working days of the day rate equal the 16GB month | Anyone who needs a regression sheet before 23 October |
Size: two displays, plus a window that changes
The spec page fixes the numbers. Layout code should not follow them. The outer display is a 5.4-inch Super Retina XDR, resolution 1398 by 2034 at 460 ppi. The folded body measures closed 117.8 x 84.1 x 11.3 mm. The inner display is a 7.6-inch foldable Super Retina XDR, resolution 1878 by 2670 at 430 ppi, with a nano-texture. The unfolded body measures open 117.8 x 164.6 x 5.2 mm, and the weight is 254 g. Open height is still 117.8 mm. Apple states that the two displays share an aspect ratio and that content scales in proportion. The rectangular measurements about 5.36 and 7.58 inches are the standard-rectangle figures. The actual visible area is smaller. The rounded corners sit inside the rectangle.
Size class is the bucket layout should read. The outer display matches other iPhones. Portrait is regular vertically and compact horizontally. Landscape is compact on both axes. The inner display is regular horizontally and vertically, so a sidebar has a place. The window can get smaller still. Split View, the partially folded pose, and mirroring stretch all make the window unequal to the whole display. Pixels on the spec page are a magnitude, not a constant. Take scale from traitCollection.displayScale, or from SwiftUI’s displayScale. Do not write 1398 or 1878 into ==.
Two other system behaviors get mixed up with “screen size.” Corners use Concentricity from iOS 26. SwiftUI uses ConcentricRectangle. UIKit uses UICornerConfiguration. The fold and the cameras use reserved regions. Do not measure the crease yourself. SwiftUI reads ReservedRegion from a geometry proxy. UIKit uses UIViewReservedRegion. Hinge angle is a separate channel. onHingeChange and UIHingeInteraction report closed, partially open, fully open, and a continuous angle. Apple says the angle fits motion. Layout goes through arrangement and reserved regions. If you change the frame from the angle, the partially folded pose will jitter in the first week of sale.
Orientation: the outer display obeys, the inner display does not
The prepare page’s Tech Talk puts orientation in two sentences. Interface orientation on the outer display matches other iPhones. Duo is also the chance to add landscape, because some people lay the closed phone on its side like a tent. The inner display does not honor the supported orientations you declare in Info. As with idiom, do not branch layout on orientation. To know whether it is wider than it is tall, compare the width and height you actually have. Use view.bounds in a view controller. Use superview.bounds in a view. Use the size from GeometryReader in SwiftUI.
The properties to search out are UIDevice.current.orientation, statusBarOrientation, and interfaceOrientation, including windowScene.effectiveGeometry.interfaceOrientation. The Human Interface Guidelines add one line about continuity. When the device is on its side, keep controls on the side at the same vertical level, instead of rearranging the whole page because the phone turned. Standard system components do this themselves. A bar you draw does not.
UIRequiresFullScreen still applies, but the app still changes size as it opens and closes. Another sentence is easier to misread. Duo respects the supported orientations you declare, yet an app on the inner display still scales, and the same is true in Split View. So “I locked portrait, so the inner display will not get wider” does not hold. Safe areas are often asymmetric. In landscape and in Split View, a vertical button can appear on the left. Doubling the left inset to estimate width pushes the button off the other side. Subtract each edge on its own.
Multiwindow: Split View is the default, a second window is not
The multiwindow Tech Talk says it directly. Every app takes part in multitasking on Duo, and two apps can sit side by side. Apps that already resized for iPad or for iPhone Mirroring start ahead. There is also a new layout that stacks video and the app. Handle it the same way as Split View. Still read size class and scene geometry. Do not write a second branch that means “this is video.”
Duo is the first iPhone that supports multiple interface instances of the same app. What can open a new window on iPad can open one here. There is only one difference. The outer display cannot create a new window. That behavior is reserved for the inner display. A request for a new scene must handle failure. Use UIWindowSceneActivationAction. It hides itself when a new window is unavailable, instead of leaving a button that errors when tapped. Scene accessories are a third path. They put a supplementary interface on the other display. The camera’s CameraCaptureAccessory places the extra interface on the outer display, keeps the main interface full-screen on the inner display, and requires an in-progress camera session. After the device closes, the accessory is unavailable, and the button should turn off with onAvailabilityChange. That is a bonus for a camera app. Split View is not a bonus. It is the default for every app.
import SwiftUI
struct LaunchCheck: View {
@Environment(\.horizontalSizeClass) private var widthClass
var body: some View {
GeometryReader { proxy in
let wider = proxy.size.width > proxy.size.height
Root(regularWidth: widthClass == .regular, widerThanTall: wider)
}
.onHingeChange { _, context in
guard let hinge = context.hinge, hinge.status == .partiallyOpen else { return }
// hinge.angle drives an effect. Do not lay out from the angle.
playBend(hinge.angle)
}
}
}
This is not a project template. It fixes three things. At regular width on the inner display a sidebar can appear, and at compact width on the outer display it collapses. Portrait and landscape come from which side of the current window is longer, not from orientation. The hinge angle drives an effect only when partially open. Layout still goes through size class and bounds. Hand the second-window button to an activation action that hides itself. Do not leave a “New Window” control that stays tappable on the outer display.
Size, orientation, windows, and test cost
The real difference is whether the code still assumes “the phone has one screen, one orientation, and one window,” not whether design wants a fold animation. Both tables below use the same columns. Test prices are the U.S. dollar figures on this site’s pricing page: M4 16GB day 20.2 / week 54.5 / month 100.9, 24GB day 40.2 / week 108.5 / month 200.9. Person-days are not converted to dollars in this article. Schedule bands and the buy-outright comparison are in the 13 October adaptation cost.
| Tool | Entry | What it can do | Context | Who it fits |
|---|---|---|---|---|
| Rebuild only to 27.1 | Size classes already, no screen singleton | Check vertical bars, reserved regions, full-bleed focal points, left and right Split View | The scan is clean, and a day can close it | Apps that already resized for iPad Split View or mirroring |
| Orientation branches remain | interfaceOrientation decides the layout | Compare width and height. Look at the tent pose for outer-display landscape on its own | The inner display does not honor supported orientations. Locking portrait does not stop it getting wider | News, reading, and players with many landscape ifs |
| Single-window assumption | The iPad “New Window” copied as-is | Hide the entry on the outer display. Handle creation failure on the inner display. Treat Split View as the default | A second instance is legal only on the inner display | Documents, mail, and design tools |
| Fixed pixels | 844, 1398, or a device table | Rebuild containers, asymmetric insets, remove idiom | Spec-page resolutions cannot go into constants | Stores drawn for one iPhone display for years |
| Tool | Entry | What it can do | Context | Who it fits |
|---|---|---|---|---|
| Apple silicon you already have | Local Xcode 27.1 | The full simulator matrix | Added device cost is 0, but it fights daily DerivedData for disk | The machine can already install the Xcode you pinned |
| M4 16GB by the day | Remote desktop | One Device Hub pass | $20.2 per day. Five working days are $101.0 | The scan is clean, and you truly close it within two days |
| M4 16GB by the week | Remote desktop | One calendar week | $54.5 per week. Two weeks are $109.0, still above the month | It may slip past Friday, but it will not enter a second month |
| 16GB / 24GB by the month | Remote desktop | The whole regression cycle. 24GB can keep more simulators open at once | $100.9 or $200.9 per month. Five 24GB day rates are $201.0 | Orientation or pixel branches show up on day two |
| Xcode Cloud | Cloud archive | Compile and sign | The log does not contain the moment you drag the Home indicator | Builds stay in the cloud. Poses stay on a remote Mac |
Multiply the day rate and the test-cost conclusion is the same arithmetic as the retrofit cost. On 16GB, 20.2 times 5 = 101.0, which already equals the month at 100.9. On 24GB, 40.2 times 5 = 201.0, against the month at 200.9. The week rate, 54.5 times 2 = 109.0, is still a little above one month of 16GB. So “try it by the day” holds only when you are sure the matrix finishes in one or two days. If App Resizability on day two lists a string of orientation checks or UIScreen.main, the billing period should become a month. Day eight pays for the period, not for testing.
The matrix itself can be a grid, not a sentence that says “test the fold.” Look once at each of the three SDK tiers: letterbox, avoiding the status bar on the right, or full-screen vertical bars. Then, in the 27.1 simulator, rotate closed, partially folded, and open once each. On the inner display, use the Home indicator at the bottom to drag the app to the left, then to the right, and confirm the primary button is still there after the vertical bar changes sides. Request a second scene on the inner display. On the outer display, confirm the activation action disappears, or that a failed request is caught. The mirroring stretch on macOS 27 is an extra. It shows windows wider or narrower than Duo. It is not required before sale. Replace screenshots only after the main path is not letterboxed. Submitting Duo screenshots puts an optimized badge on the product page. From April 2027, new submissions must include those screenshots. That is a store deadline, not the layout deadline of 23 October.
Which path matches which case
| If you are | Choose | Why |
|---|---|---|
| SwiftUI only, already supports iPad Split View | The machine you have, or one remote day, and run the skill scan first | The base is there. What remains is vertical bars, reserved regions, full-bleed art, and left and right Split View |
| Day two of the scan shows orientation or UIScreen.main | Switch to a month immediately. Do not pay the day rate through a week | Five working days already equal one month |
| You locked portrait and think the inner display can wait | Compare width and height first, then talk about screenshots | The inner display does not honor supported orientations. Split View still scales |
| Documents or mail, with a new window on iPad | Hide the entry on the outer display. Handle failure on the inner display | A new window cannot be created on the outer display |
| A camera app that wants a teleprompter | Pass Split View first. Add the accessory later | The accessory needs a full-screen inner display plus a camera session. Split View is the default for every app |
| Only trying to swap App Store screenshots | Land 27.1 first, then replace the art | The old SDK’s inner display is a letterbox. A badge does not turn a letterbox into adaptation |
| No Mac in the office | Rent one, and read sw_vers and xcodebuild -version first | When the OS does not match, a paid day does not produce a valid cell |
Keep the device on its own line. Hinge feel, and the items a simulator cannot do, need one machine. Price it from the Apple store page you see when you order. Do not spread that line across every Xcode ticket. A Duo on every desk does not make UIScreen.main disappear, and it does not let the outer display suddenly create a new window.
Recommended stacks
A — Independent developer, layout already follows size: Xcode 27.1, on the machine you have or one remote day. Have the coding assistant run “get my app ready for iPhone Duo,” or run xcrun agent skills export in the terminal and hand it to another agent. When the scan is empty, go to Device Hub: closed, partially folded, and open, rotate each once, then drag Split View to the left and the right. Tap “New Window” once on the outer display and confirm the entry disappears. Preview store screenshots for Duo in App Store Connect. This pass does not need a machine purchase just to test. Monthly node prices are on the pricing page.
B — Small team, orientation and custom bars remain: Week one is only the scan and the screen singleton. Use a week rental or go straight to a month. Do not let the day rate roll to day seven. Week two turns orientation branches into width-and-height comparisons, and writes the four safe-area edges separately. Week three keeps one image of Split View on the left and one on the right, and writes the second-scene failure path into regression. CI stays on the existing builder. The session where a person watches open and close uses that same remote Mac. The 24GB month is $200.9, and only when you must run Duo and the other simulators together. Five times 40.2 already equals that month tier.
C — You need a submission in the week of sale: Today is 15 October. Pre-order starts tomorrow. The phone is on sale 23 October. What you can promise is that on 27.1 the main path is not letterboxed, vertical bars do not cover the primary button, the button is still there after Split View changes sides, and the outer display does not surface an invalid new window. Do not put hinge motion you have not finished, or the camera accessory, into the store text. Checkout is on the rental page. OS versions and accounts go through the help center. Do not assume the image already has Xcode 27.1 installed.
Common mistakes
- Writing “it launches” as “it is adapted.” On the iOS 26 SDK the inner display is a centered letterbox. Users will not read the empty edge as “adaptation in progress.”
- Writing 1398 or 1878 from the spec page into a constant. Those are pixel magnitudes. The window is smaller in Split View and when partially folded, and scale should not be handwritten.
- Using orientation to decide portrait and landscape on the inner display. The inner display does not honor supported orientations. Take portrait and landscape from the aspect ratio of the current window.
- Thinking UIRequiresFullScreen turned off Split View and open-close. The key still applies, and size still changes as the device opens and closes. Declared orientations also do not stop the inner display from scaling.
- Leaving a new-window control that stays tappable on the outer display. A new window exists only on the inner display. If failure is not handled, an error appears when the device closes.
- Laying out from the hinge angle. The angle fits motion. Layout uses size class, reserved regions, and arrangement.
- Paying the day rate for a full week. Five working days on 16GB already equal the month. Day eight pays for the billing period.
Seven steps
- Build the same sources against each SDK you can install. First record letterbox, avoiding the status bar on the right, or full-screen vertical bars. The target is 27.1.
- Search the project for
UIScreen.main,UIDevice.current.orientation,statusBarOrientation,interfaceOrientation,userInterfaceIdiom, and size constants such as 844, 1398, and 1878. - In Xcode, have the coding assistant run App Resizability, or run
xcrun agent skills export. The skill finds most of them. The list above catches the rest. - Open iPhone Duo in Device Hub. Rotate closed, partially folded, and open once each. Then use the Home indicator to drag the app on the inner display to the left and to the right. Keep one image per cell of the main paths.
- Request a second scene on the inner display, and confirm both success and failure are caught. On the outer display, confirm
UIWindowSceneActivationActionhides itself. - Check whether vertical bars cover the primary button, whether left and right insets were written as equal, whether the full-bleed subject is still there, and whether reserved regions cover controls when partially folded. Check the hinge angle for motion only, not for layout.
- Pick the billing period. One or two days can be the day rate. A scan that is already dirty moves you to the month. Before you order, run
sw_versandxcodebuild -versionon the node. After the main path is clean, replace the Duo screenshots and preview them in Connect. Do not hard-scale another iPhone canvas.
FAQ
Will an old app open on iPhone Duo launch day without code changes?
Yes. Built with the iOS 26 SDK or earlier, the open window sits in the center with empty space around it, and when closed the content sits to the left of the status bar and camera. Running is not the same as adaptation being finished. Filling the display and using vertical bars needs the iOS 27.1 SDK. Split View and a second window do not become correct just because the app opens.
If landscape is only declared in Info, will the inner display honor it?
The outer display honors the supported orientations you declare. The tent pose is worth a look on its own. The inner display does not. In Split View the app still scales. UIRequiresFullScreen does not stop the size change from opening and closing. Layout compares the width and height of the current window.
Is multiwindow optional?
Split View is not optional. Apple states that every app sits side by side, and stacked video and app use the same size classes. A new window can be created only on the inner display. The entry on the outer display should use UIWindowSceneActivationAction, which hides itself. A camera accessory on the outer display is a bonus. It requires a full-screen inner display and an in-progress camera session.
If you only have the simulator, how do you price the test?
The layout main path is enough. Apple calls the iPhone Duo simulator in Xcode 27.1 the best way to test the full experience. An M4 16GB day rate is $20.2, and five working days equal the $100.9 month. If the scan turns dirty on day two, do not pay the day rate through day eight. 24GB is $40.2 a day and $200.9 a month, and five day rates line up with the month the same way. Hinge feel still needs a device. Do not spread that line into the simulator tickets.
Can you still test before launch without a Mac?
You cannot run Xcode 27.1 on Windows. First confirm the node’s macOS can install the Xcode you pinned. System requirements stay on Apple’s Xcode system requirements. The prepare page puts the mirroring stretch on macOS 27. Open a remote node from the rental page. Prices stay on the pricing page.
Conclusion
iPhone Duo is on sale 23 October. The bar for re-adaptation is not “can it open.” First check whether size still reads the whole screen, whether orientation still decides the inner display, and whether a new window is still tappable on the outer display. When those three gates are clean, test cost is one simulator matrix, and when five day rates equal one month you switch to a month. A small app that already adapts uses the machine you have or a short rental. Where orientation, pixels, and a single-window assumption remain, a month keeps the regression. A screenshot badge does not fix a letterbox. Remote nodes are on the rental page and the pricing page. Accounts and OS versions go through the help center.
Further reading
- How retrofit time compares with buying a Mac: the 13 October adaptation cost →
- Team iOS CI/CD: Xcode Cloud versus a remote Mac builder →
- The release-date tracker from when the name was not final →
Split View and open-close in Xcode 27.1 need a Mac whose OS version matches
The iPhone Duo simulator lives in Xcode, not on Windows. A remote Mac is for running closed, partially folded, open, and left and right Split View, then tearing the environment down. Before you order, check whether the node’s macOS can install the Xcode you pinned.