Apple released Xcode 27.1 beta, build 27A9269, on 18 September 2026. It carries the iOS 27.1 SDK and, more to the point, the iPhone Duo simulator — the first way to see your own app on the folding iPhone without owning one.
It is a beta. It is also the only toolchain that can build the layout Apple has been describing in Tech Talks since 9 September. So this post covers three things: what is actually in it, what the simulator withholds, and the section that will catch anyone shipping a Mac Catalyst target.
Xcode 27 compared with the Xcode 27.1 beta
Xcode 27Released
Build 27A266a ·
- SDKs
- iOS 27 and the other 27.0 SDKs
- Swift
- 6.4
- Requires
- macOS Tahoe 26.6 or later
- iPhone Duo simulator
- No — its release notes do not mention iPhone Duo
- Inner display
- Extends to the left of the status bar area
- Also new
- Device Hub replaces Simulator.app
Xcode 27.1 betaBeta
Build 27A9269 ·
- SDKs
- iOS 27.1, plus iPadOS, tvOS, watchOS, macOS and visionOS 27
- Swift
- 6.4
- Requires
- macOS Tahoe 26.6 or later
- iPhone Duo simulator
- Yes — with the limits in the next table
- Inner display
- Reaches the edge of the screen; bars can lay out vertically
- Also new
- The canvas overrides picker now includes a Display group for previewing content on a device’s alternative display.
What is in it, in Apple’s words
The release notes open with the whole summary:
Xcode 27.1 beta includes Swift 6.4 and SDKs for iOS 27.1, iPadOS 27, tvOS 27, watchOS 27, macOS 27, and visionOS 27.
Two details in that sentence do real work.
The iOS 27.1 SDK is here. Apple describes three tiers of how your app renders on the inner display, and only the third — edge to edge, with navigation and toolbar buttons able to lay out vertically down the side — comes from building with the 27.1 SDK. Until 18 September nobody outside Apple could build that tier at all.
Everything else stayed at 27.0. The other SDKs in the box are the same 27 SDKs that shipped in Xcode 27 on 14 September. This is an iPhone Duo release with a version number, not a platform-wide one.
Two constraints carry over unchanged from Xcode 27:
Xcode 27.1 beta requires a Mac running macOS Tahoe 26.6 or later.
Xcode 27.1 beta supports on-device debugging in iOS 17 and later, tvOS 17 and later, watchOS 10 and later, and visionOS.
If your build machines are still on macOS Sequoia, that is the blocker to solve first, and it is a fleet decision rather than a project one. Our guide to the iOS 27 changes that break builds covers the rest of what a rebuild with the 27 SDK does to an existing app.
What the iPhone Duo simulator cannot do
The simulator runs inside Device Hub, the window that replaced Simulator.app in Xcode 27. Apple lists four limitations, each with the issue number it tracks them under. They are worth reading before you promise anyone a demo.
| Limit | Apple’s wording | What it means for you |
|---|---|---|
| First launch is slow | Initial Simulator launch can take several minutes.Apple issue 187708500 | Budget for it once per runtime, not per build. It is not a hung install. |
| No StandBy | StandBy is unavailable in the iPhone Duo Simulator runtime.Apple issue 187708663 | If your app has a StandBy presentation, that part needs real hardware. |
| Most app extensions will not run | Running and debugging most app extensions is unavailable in the iPhone Duo Simulator runtime.Apple issue 187708767 | Widgets, share extensions and the rest cannot be run or debugged here. Plan device time. |
| Mac Catalyst will not compile | Projects that use APIs specific to iOS 27.1 show compile errors when building for Mac Catalyst (“undeclared identifier”, “not found”, “has no member”, “cannot find”, etc).Apple’s workaround: Use build-time conditionals like #if !targetEnvironment(macCatalyst) (Swift) or #if !TARGET_OS_MACCATALYST (ObjC) to isolate affected code.Apple issue 185924957 | Any code calling an iOS 27.1 API breaks the Catalyst build until you isolate it. |
| No Mac Catalyst destination | Projects that target iOS 27.1 show no Mac Catalyst run destination available.Apple’s workaround: Add a Mac Catalyst 27.0 minimum deployment in target settings.Apple issue 187046347 | Target iOS 27.1 and the Catalyst run destination disappears from the scheme. |
The extension limitation is the one that changes a plan. If your product is a widget, a share extension, a keyboard or a Live Activity, the simulator will not run or debug it, so validating those on iPhone Duo needs hardware — and the device goes on sale on 23 October.
The one addition that is genuinely a time-saver is the canvas change:
In practice that means you can see a view on the alternative display from a SwiftUI preview, without waiting for the several-minute first boot. For the first pass over a large app — finding the screens that break rather than proving that they work — it is faster than the simulator.
Mac Catalyst: two problems that arrive with the 27.1 SDK
Neither of these is a simulator issue. They come with the iOS 27.1 SDK itself, and they will reach you the first time you build a Catalyst target against it.
The first is a compile failure. Any call to an API that is specific to iOS 27.1 fails to build for Mac Catalyst, with the errors you would expect if the symbol did not exist. Apple’s workaround is to fence the code off by build environment:
#if !targetEnvironment(macCatalyst)
// iOS 27.1-only code goes here
#endif
The second is quieter and more confusing: set a target’s minimum deployment to iOS 27.1 and the Mac Catalyst run destination disappears from the scheme entirely. Apple’s fix is to add a Mac Catalyst 27.0 minimum deployment in the target’s settings.
If you ship a Catalyst app, budget an afternoon for this before you budget anything for the fold.
What the simulator still does not settle
One question the simulator was expected to answer, and does not: how big the inner display is in points.
Apple publishes pixel dimensions only. Dividing by a 3× scale gives 626 × 890 points for the inner display, but App Store Connect screenshot sizes suggest a different scale, and Apple has not confirmed a point size. The iPhone Duo simulator shipped in the Xcode 27.1 beta, so you can now read the value your own app is given — but Apple has still published no point size, so treat any figure you see quoted as unconfirmed.This matters because the number is already circulating. A layout decision made against a point size nobody has confirmed is a rewrite waiting to happen, and the fix is cheap: the simulator is now installed on your machine, so read the value your own app is handed and design against that. Ask your framework for the size at runtime rather than hard-coding one, and the question stops mattering.
Where each framework stands
Being able to build for iPhone Duo and being able to build your app for iPhone Duo are different questions if you ship on a cross-platform stack. The scene-based life cycle requirement decides whether your app launches at all when built with the 27 or 27.1 SDK, and that status has moved twice in the last week.
| Stack | Status | What it means for you |
|---|---|---|
| UIKit / SwiftUI (native) | You migrate | Adopt a scene manifest and a window scene delegate. SwiftUI apps using the App protocol already use scenes.TN3187 |
| Flutter | Shipped in 3.41 | Default since 3.41; unmodified AppDelegates migrate automatically on build. Custom AppDelegates, and older Flutter versions, migrate by hand.Flutter migration guide |
| React Native | 0.88 release candidate | Scene life cycle support, including linking, is in the 0.88 release candidates — 0.88.0-rc.1 is current — and in no stable release. 0.88 stable is scheduled for 12 October. On 0.87 or earlier, add a SceneDelegate to your iOS project yourself.Commit · 0.88 on npm · Release schedule · Template PR for 0.87 |
| Expo | Shipped, opt-in on 57 | SDK 58 beta uses scenes by default. On SDK 57 the runtime shipped too, but you opt in: set ios.enableSceneSupport in expo-build-properties and run expo 57.0.23 or newer. SDK 56 still fails to launch under Xcode 27.SDK 58 beta · enableSceneSupport · SDK 57 runtime · Original issue |
The short version by stack:
- UIKit and SwiftUI: you migrate to scenes yourself, then install the beta and go.
- Flutter: ready since 3.41, which migrates unmodified app delegates on build. See the Flutter iPhone Duo upgrade playbook.
- React Native and Expo: scenes are in the 0.88 release candidates and in Expo SDK 58 beta, and SDK 57 can opt in with one flag. The details are in Expo SDK 58 beta, iOS 27 scenes and iPhone Duo, and the layout traps are in the React Native and Expo playbook.
What to do this week
- Check your macOS version on every machine that builds iOS, including CI. macOS Tahoe 26.6 or later, or nothing else on this list happens.
- Install the beta alongside Xcode 27, not over it. It is a beta, and your release builds should keep coming from the toolchain you already qualified.
- Boot the iPhone Duo simulator once and leave it running. The first launch takes minutes; after that it behaves.
- Sweep your screens in the canvas Display group first. It is the fastest way to find the views that break, before you spend simulator time proving the rest are fine.
- Fix the Catalyst build if you ship one, using the two workarounds above.
- List what needs real hardware — extensions, widgets, StandBy, anything camera — and decide now whether that means buying a device on 23 October.
- Do not hard-code a point size. Read the size at runtime.
None of this is the work of adapting an app to the fold; it is the work of being able to see the problem. The adapting starts once you can, and it is worth knowing that from April 2027 every App Store upload has to be built with the iOS 27 SDK or later anyway — so the toolchain move is not optional, only the timing is.
If you would rather have someone else do the sweep, we will do it from your App Store link and tell you what breaks, in which pose, and what it would cost to fix. The owner’s guide to iPhone Duo and iOS 27 is the plain-language version of the whole picture.