In August 2026 this site still had a foldable iPhone release tracker. The name and the date were not final. On 9 September Apple’s newsroom named the product iPhone Duo: a 5.4-inch outer display, a 7.6-inch inner display, the same aspect ratio on both, and an A20 Pro. The U.S. starting price is $1,999 for 256GB, with 512GB, 1TB, and 2TB above that. Pre-orders open at 5 a.m. Pacific on 16 October. More than 70 countries and regions, including China, get the phone on 23 October, and 28 more on 30 October. Today is 13 October. This article does not guess a ship date. It answers a scheduling question: how much SwiftUI has to change, which poses Xcode has to cover, and whether the Mac is a purchase or a rental.
Why the handset price is the wrong estimate
The old method and the new method disagree in a concrete way. The old method is “buy a foldable, then add two person-weeks.” The $1,999 price looks like a budget ceiling. It is a QA asset, not the engineering quantity. The new method starts by asking whether the layout still reads the screen. Apple’s prepare page is direct: apps built with the iOS 27 SDK and later resize as iPhone Duo folds and unfolds. Hardcoded screen sizes, fixed orientations, and device assumptions stretch, clip, or misplace the layout.
The same binary looks different across three SDK tiers, and that is the first cut of cost, not a design preference. Apple’s own comparison: an iOS 26 SDK build still runs, but when the device is open the window sits in the center with empty space around it, and 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 edge. An iOS 27.1 SDK build is the optimized state: the app uses the full display, and toolbars and tab bars stand vertically under the status bar. A team that only swaps App Store screenshots, and ships the old SDK, shows customers a letterbox. That is not “we support the foldable.”
The second cut is the test matrix. On the outer display, size classes match other iPhones: portrait is regular vertically and compact horizontally, landscape is compact in both. The inner display has room for a sidebar, so both axes are regular. The inner display also does not honor the supported interface orientations you declare. Layout that branches on UIDevice.current.orientation, statusBarOrientation, or interfaceOrientation takes the wrong path when the device opens, closes, or enters Split View. Apple’s instruction is to compare the width and height you actually have: view.bounds in UIKit, the size from GeometryReader in SwiftUI.
The third cut is the machine. The iPhone Duo simulator in Xcode 27.1, the open-close-rotate controls in Device Hub, and the iPhone Mirroring resize test on macOS 27 all sit on a Mac. That chain does not exist on Windows. How a team picks a builder is covered in the Xcode Cloud versus remote Mac comparison. Xcode Cloud can compile. It does not sit with you in Device Hub while you rotate closed, partially folded, and open.
UIScreen.main. The system owns the pose. The current window owns the size.
How the work actually splits
A single milestone called “support the foldable” will slip. Split the spend into the three places money actually leaves. Miss one layer and the quote mixes person-days with hardware.
| Tool | Entry | What it can do | Context | Who it fits |
|---|---|---|---|---|
| SwiftUI / UIKit retrofit | Layout code in the repo | Remove the screen singleton, orientation branches, and fixed sizes; hand bars to a navigation container | Size classes, safe areas, reserved regions for the fold and the cameras | Apps shipping or updating around 23 October |
| Xcode 27.1 pose tests | iPhone Duo simulator in Device Hub | Closed, partially folded, open, each rotated once; optional window stretch on macOS 27 | Letterbox, status-bar inset, or full-screen vertical bars, by SDK tier | Teams that need a regression sheet, not a demo video |
| Mac node | The laptop you have, a purchase, or a rental | Install Xcode on a macOS build that accepts it, then run simulators and signing | DerivedData, simulator runtimes, certificates | No spare Apple silicon, or the daily machine cannot give up the disk |
SwiftUI is not an automatic waiver. The Human Interface Guidelines say that if you already use standard system components and the layout resizes, poses follow without a custom design for each one. Compact width on the outer display and regular width on the inner display are the base for every pose. Fixed widths, branches on device height, and toolbars you draw yourself do not move. The prepare page tells you to search for UIScreen.main, userInterfaceIdiom == .phone or .pad, any path that treats regular width as “this is an iPad,” and comparisons such as bounds.height == 844.
One measurement is easy to miss, and it is why the official ban exists. A public probe of the Xcode 27.1 simulator device profile reported the outer display at 466 by 678 points and the inner display at 669 by 951 points, both at 3x, and saw UIScreen.main.bounds still report the outer 466 by 678 while the app was already on the inner display. Those numbers explain the rule. They are not a new set of == 466 checks. In the partially folded pose the center division becomes an active occlusion; the same probe put that band at about 40 points. Read ReservedRegion on your own Xcode. Do not paste a blog constant into the app.
Do not pin a UIToolbar, UINavigationBar, or UITabBar onto the view yourself. In SwiftUI, add toolbar to a NavigationStack or NavigationSplitView. In UIKit, set toolbar items on a view controller inside a navigation controller. After 27.1 turns those bars vertical, a custom bar still lies across the content. The fold and the cameras are reserved regions: SwiftUI reads ReservedRegion from a GeometryProxy. When you need a side-by-side or overlapping pair, use ArrangementView split and overlay styles instead of a second view tree that appears only when a Boolean named “unfolded” is true.
import SwiftUI
struct DuoRoot: View {
@Environment(\.horizontalSizeClass) private var width
var body: some View {
NavigationSplitView {
Sidebar()
} detail: {
Detail()
.onGeometryChange(for: CGSize.self) { proxy in
proxy.size
} action: { size in
// Fold changes size mid-session. Do not cache UIScreen.main.bounds.
relayout(size, regularWidth: width == .regular)
}
}
.toolbar {
ToolbarItem(placement: .primaryAction) {
Button("Save", action: save)
}
}
}
}
This is not a finished project. It fixes three decisions. The split goes through NavigationSplitView, so a sidebar can appear at regular width and collapse at compact width. Size is re-read with onGeometryChange in the middle of a fold, not cached from UIScreen.main.bounds at launch. The save button is a system toolbar item, so the 27.1 SDK can stand it under the status bar. Full-bleed images that use fill will crop the subject on the wider inner display. Switch between fill and fit from the current size class or aspect ratio, or set a focal point.
Schedule, test matrix, and Mac money
The real difference is whether the code still assumes a phone has one screen, not whether design wants a fold animation. Both tables use the same columns. The week ranges are scheduling estimates, not vendor quotes. Screen count and custom drawing move them. Mac prices are the U.S. dollar figures on this site’s pricing page. The purchase row is a different machine, so it is not a break-even until that sentence is attached.
| Tool | Entry | What it can do | Context | Who it fits |
|---|---|---|---|---|
| Adaptive SwiftUI already | Size classes, system navigation, no UIScreen.main | Check vertical bars, fold reserved regions, full-bleed focal points | Closes in 3–7 working days | Small apps that already survived iPad split view |
| Mixed SwiftUI and UIKit | Fixed frames and custom bars remain | Replace screen size and orientation checks; return bars to containers | 2–4 weeks, plus a window-stretch pass | SwiftUI products with UIKit corners |
| Fixed-size UIKit | Branches on 393, 844, or a device list | Rebuild containers, asymmetric safe areas, remove idiom checks | A 4–8 week screen inventory | Stores and tools drawn for one iPhone glass for years |
| Tool | Entry | What it can do | Context | Who it fits |
|---|---|---|---|---|
| Apple silicon Mac you already have | Local Xcode | Every simulator pose; USB if you have a device | Zero added hardware, but DerivedData fights the daily disk | One adaptation pass, and the machine already runs the target Xcode |
| M4 16GB by the day | Remote desktop | One Device Hub pass | $20.2 per day. Five working days are $101 | The adaptive band, and you truly finish by Friday |
| M4 16GB by the week | Remote desktop | One calendar week of regression | $54.5 per week. Two weeks are $109 | You are not sure Friday holds |
| M4 16GB or 24GB by the month | Remote desktop | The regression machine for the whole retrofit; 24GB holds more simulators at once | $100.9 or $200.9 per month | Mixed or fixed-size code, measured in weeks |
| Buy an M6 Mac mini | A local asset | Daily Xcode and CI after the Duo work ends | U.S. starting price $899, education $799. Announced 25 August 2026, shipping from 22 September | Shared machines whose releases do not stop after Duo |
Multiply the day rate and the result is not the one people expect. On 16GB, 20.2 times 5 is 101.0, which already equals the $100.9 month. 20.2 times 7 is 141.4, above both the week and the month. Two weeks at 54.5 are 109.0, still a little above one month. The 24GB line does the same thing: 40.2 times 5 is 201.0, against a $200.9 month. “Try it by the day” is rational only when you know the pass closes in a day or two. The moment the skill scan on day two lists a string of UIScreen.main hits, the billing period should become a month. Paying the day rate through day eight buys a billing choice, not more testing.
Nine months at 100.9 is 908.1, numerically close to the $899 U.S. starting price of an M6 Mac mini. They are not the same computer. The rental is an M4 with 16GB on a remote node. The purchase is the entry M6 configuration, before a display, keyboard, and tax. Nine months is not a break-even. Buying wins when that Mac still compiles every day after the adaptation ends, not when it sits idle once the Duo poses are done. A longer buy-versus-rent discussion, written for lab work, is in buy or rent for research. Developer load is in whether the M6 Mac mini fits developers.
This article does not convert person-days into dollars. Local rates differ by an order of magnitude, and a line that says “the retrofit is $8,000 to $25,000” turns the decision into someone else’s quote. What can go in the table is the Mac row. On a four-week mixed retrofit the month is $100.9. If someone instead buys 20 working days at the day rate, that same row becomes $404. Engineering time is still the large number. The machine is the small one. Do not buy a $1,999 phone to avoid a $100 Mac bill, and do not buy an $899 Mac mini for a five-day audit.
Which path matches which team
| If you are | Choose | Why |
|---|---|---|
| SwiftUI only, already fine in iPad split view | The Mac you have, or a day rental, and run the skill first | The base is there. What remains is vertical bars, reserved regions, and full-bleed art |
| Day two of the scan is a list of UIScreen.main | Switch to a month immediately | Five working days of the day rate already equal one month |
| A UIKit store with fixed widths | The 24GB month, and a 4–8 week screen list | Duo plus the other simulators will eat 16GB first |
| Only trying to refresh App Store screenshots | Land the 27.1 SDK, then replace the art | The old SDK’s inner display is a letterbox. A pretty shot is a different device |
| CI already on Xcode Cloud | Keep Cloud for compile; put pose regression on a remote Mac | Interactive Device Hub is not in the build log |
| No Mac in the office | Rent one, and read sw_vers and xcodebuild -version first | A day you cannot install Xcode is not a test day |
| Releases continue after Duo | Compare an M6 purchase then, not in week one | $899 buys later utilization, not this pose pass |
Keep the handset on its own line. $1,999 is the U.S. 256GB start. On 28 September MacRumors listed the higher U.S. steps as $2,199, $2,599, and $3,199. Order from the Apple store page you actually see, and do not paste U.S. numbers onto a China price. One device is enough for hinge feel and for the items a simulator note says it cannot reproduce. A Duo on every desk does not delete UIScreen.main.
Three stacks
A — Independent, already adaptive: Xcode 27.1 on the machine you have, or one remote day. Run the prepare-page prompt, “get my app ready for iPhone Duo.” The skill looks for UIScreen.main, orientation, and idiom. If the report is empty, go to Device Hub and do closed, book, and open. Preview store shots in App Store Connect. Do not buy an M6 for this pass.
B — Small team, mixed code: Week one is the scan and the screen singleton. Use a week or go straight to a month. Do not let the day rate reach day seven. Weeks two and three return bars to the system and add reserved regions. Week four writes the pose matrix into regression: one shot of each main path in each pose. CI stays on the existing builder. The session where a person watches the hinge is one remote Mac, and DerivedData is wiped at the end so a warm cache cannot count as a pass. The 24GB month at $200.9 is for teams that must keep Duo and the other simulators up together.
C — You need a build in the launch week: Today is 13 October, pre-orders are the 16th, and stores are the 23rd. What you can promise is that the main path on the 27.1 SDK is not letterboxed, vertical bars do not cover the primary button, and the full-bleed subject is still in frame. Do not put a fold animation you have not finished into the store text. Monthly node prices are on Mac mini pricing, and checkout is on the rental page. OS and account questions go to the help center. Do not assume the rental image already has Xcode 27.1 installed.
Mistakes that show up in the bill
- Shipping the iOS 26 SDK and calling it done. The app launches. The inner display is empty around the window. Customers will not read that gap as “adaptation in progress.”
- Fixing the outer display with UIScreen.main. After the unfold, the main-screen singleton can still report the outer size. You then lay out a 951-point-wide region as if it were 466 points wide.
- Using orientation for portrait and landscape. The inner display does not honor supported orientations. Use the aspect ratio of the window you have.
- Treating regular width as iPad-only. The Duo inner display will surface the iPad layout you hid, including sidebar density that does not belong on a phone.
- Paying the day rate for a full week. Five working days on 16GB already equal the month. Day eight pays for the billing period, not for more tests.
- Writing $1,999 into every ticket, or budgeting no device at all. The handset is one line for hinge QA. It is not the unit price of the retrofit. The simulator is still the layout path Apple names.
Seven steps
- Build the same sources against each SDK you can install. Record letterbox, a right-edge status bar, or full-screen vertical bars. The target is 27.1.
- Search for
UIScreen.main,UIDevice.current.orientation,statusBarOrientation,interfaceOrientation,userInterfaceIdiom, and height constants such as 844, 852, and 932. - Ask the Xcode coding assistant to run App Resizability, or export the skill with
xcrun agent skills exportfor another agent. The skill finds most issues. The list above catches the rest. - Open the iPhone Duo in Device Hub. Rotate closed, partially folded, and open. Keep one image per cell of the main paths.
- Check that toolbars stand under the status bar, that fold and camera reserved regions do not cover buttons, and that the full-bleed subject is still visible.
- Replace App Store assets to the Duo screenshot spec and preview them in App Store Connect. Do not scale an iPhone 18 canvas and hope.
- Pick the Mac term. One or two days can be the day rate. A dirty scan moves you to the month. Compare the $899 M6 start only if the machine will compile every day afterward. Before you order, run
sw_versandxcodebuild -versionon the node.
FAQ
Will an unchanged app launch on iPhone Duo?
Yes. Built with the iOS 26 SDK or earlier, the open window sits in the center with empty space around it, and the closed outer display places content to the left of the status bar and camera. Launching is not fitting. Full-bleed layout and vertical bars need the iOS 27.1 SDK.
Do we have to move to the iOS 27.1 SDK?
Filling the inner display, with toolbars and tab bars vertical under the status bar, requires 27.1. Confirm the content survives those bars before release. New screenshots on an old-SDK binary still show a letterbox.
Is the simulator enough?
It is enough for the layout path. Apple calls the iPhone Duo simulator in Xcode 27.1 the best way to test the full native experience, and Device Hub can open, close, rotate, and fold. Hinge feel still needs hardware. $1,999 is that line. Do not spread it across every SwiftUI ticket.
Can we do this without a Mac?
Xcode 27.1 does not run on Windows. An M4 with 16GB is $20.2 per day, and five working days equal the $100.9 month. 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 iPhone Mirroring stretch test on macOS 27.
Does SwiftUI adapt to the fold by itself?
System navigation, size classes, and standard components follow the pose. Fixed frames, custom bars, orientation checks, and UIScreen.main do not. The inner display is regular-width, so layouts that used to mean iPad now appear on this phone.
Conclusion
iPhone Duo is in stores on 23 October. The adaptation cost is not the $1,999 line. Read the SDK tier and UIScreen.main first, schedule the three poses second, and let “five day-rates equal one month” pick the Mac term. A small adaptive app uses the machine you have or a short rental. Mixed and fixed-size code keeps a month so regression survives. Compare an M6 purchase only when releases will not stop. Remote nodes are on the rental page and the pricing page. Accounts and OS versions go through the help center.
Further reading
- The pre-announcement release tracker, written before the name was final →
- Team iOS CI/CD: Xcode Cloud versus a remote Mac builder →
- Is the M6 Mac mini good for developers? Xcode and a local environment →
Pose regression needs a Mac whose OS can run your Xcode
The iPhone Duo simulator lives in Xcode, not on Windows. A remote Mac isolates DerivedData per session so you can finish closed, book, and open poses and then wipe the machine. Check the node’s macOS before the clock starts.