Xcode 27.1 Beta: Your App in the iPhone Duo Simulator
Xcode 27.1 beta (27A9269) shipped on Friday, September 18, 2026 with the first iOS 27.1 SDK and an iPhone Duo device type for the simulator, four days after Xcode 27.0. The SDK carries every iPhone Duo API that Apple’s preparation guide names, the device type’s profile defines the two displays at 1398 by 2034 and 2007 by 2853 pixels at 3x, which is 466 by 678 and 669 by 951 points, and the simulator runtime is a separate download that Xcode fetches on demand. Apple’s own notes list three things the simulator cannot do yet, and a probe app run in Device Hub’s three poses lands on a 466 by 678 point display closed and a 951 by 669 one open, regular in both size classes there, and reports no reserved regions in any pose, with UIScreen.main still answering for the outer display while the app is on the inner one.12456
TL;DR
- Dates and builds. Apple’s releases feed dates Xcode 27.1 beta (27A9269) to Friday, September 18.
xcodebuild -versionprintsXcode 27.1andBuild version 27A9269; the iPhoneOS and iPhoneSimulator SDKs both identify as iOS 27.1 build 24A94403; the Swift compiler reports the sameswiftlang-6.4.0.34.1version string as Xcode 27.0 and the linker the sameld-27037.1. The xip is 2,027,292,809 bytes and the expanded app is 3.6 GiB, and it installs next to Xcode 27.0 without replacing it.14 - The Duo APIs are in the SDK. The ten names my September 17 check could not find in the 27.0 SDK are all present in the 27.1 SDK, among them
ArrangementViewandreservedRegions(kind:options:layoutDirectionBehavior:)in SwiftUICore,toolbarVerticalBehavior(_:)in SwiftUI, andUIArrangementViewController,preferredVerticalBarBehavior, andverticalBarEdgein UIKit. SwiftUI marks them@available(anyAppleOS 27.1, *); UIKit’s headers mark the arrangement controller and the reserved-region methodsAPI_AVAILABLE(ios(27.1), tvos(27.1), visionos(27.1)), two platforms more than the documentation pages list.4 - The simulator profile writes the display sizes down. The iPhone Duo device type (
iPhone19,4, product classV68, model number A3447) defines two integrated displays:primaryat 1398 by 2034 pixels, scale 3, andprimary-1at 2007 by 2853 pixels, scale 3, with a native orientation of 270. Divided by three those are 466 by 678 and 669 by 951 points, the inner figure being the number my Duo developer post inferred from App Store Connect’s screenshot size on September 10. The profile requires runtime 27.1 or later.5 - What the simulator does with a real app. Device Hub exposes three poses, Closed, Book, and Open, plus Rotate Right. Closed, the probe gets the outer display: 466 by 678 points, compact width, the split arrangement stacked. Open, it gets the inner display: a landscape-native 951 by 669 points, regular in both size classes, safe-area insets of 34 on each side, the split arrangement side by side; rotated, 669 wide by 951 tall and still regular both ways. Book gave the app the same geometry as Open. In every pose
reservedRegionsreturned nothing, even with inactive regions included,toolbarVerticalEdgestayed nil, the toolbar drew horizontally, andUIScreen.main.boundskept reporting 466 by 678 while the app was on the inner display.6 - What the beta cannot do yet. Apple’s notes: “Initial Simulator launch can take several minutes.” (187708500), “StandBy is unavailable in the iPhone Duo Simulator runtime.” (187708663), and “Running and debugging most app extensions is unavailable in the iPhone Duo Simulator runtime.” (187708767). Add two Mac Catalyst Known Issues for anyone whose app also ships on the Mac, and one thing Apple does not list: the runtime download failed on my first attempt with
Download failed.and succeeded on retry.23
What is in the beta?
Apple’s releases feed lists “Xcode 27.1 beta (27A9269)” on Friday, September 18 at 10:00 a.m. PT and a “TestFlight Update” the same afternoon; App Store Connect’s release notes for that day say “You can now submit apps built with Xcode 27.1 beta using the SDK for iOS 27.1 beta or iPadOS 27.1 beta for internal and external testing.”1 The release notes’ Overview names the SDK line: “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. Xcode 27.1 beta supports on-device debugging in iOS 17 and later, tvOS 17 and later, watchOS 10 and later, and visionOS. Xcode 27.1 beta requires a Mac running macOS Tahoe 26.6 or later.”2 Read that list as written: iOS is the only platform at 27.1, the SDK’s own SDKSettings.plist reports version 27.1, and App Store Connect calls the same SDK “iPadOS 27.1 beta,” a wrinkle the Xcode 27 post carries.
The download is smaller than the version number suggests. The xip is 2,027,292,809 bytes, Apple-signed under its Software Update certificate, and expands to a 3.6 GiB app, the same size as Xcode 27.0; xip --expand into a folder, a rename to /Applications/Xcode-27.1-beta.app, and DEVELOPER_DIR pointed at it is the whole install for command-line work. The first xcodebuild call under the beta then spent about two minutes installing the bundled CoreTypes.pkg and XcodeSystemResources.pkg on its own, the step xcodebuild -runFirstLaunch performs explicitly, and the second of those packages is what puts the iPhone Duo device type in place.4 What the app does not contain is a simulator runtime. The beta finds the iOS runtimes already on this Mac, 27.0 among them, and none for 27.1; xcodebuild -downloadPlatform iOS under the beta names the missing piece as “iOS 27.1 Simulator (24A94401)” and fetches it as a cryptex disk image through Apple’s mobile-asset service, while the developer downloads page’s own disk images stop at the iOS 18.2 Simulator Runtime.34 The first attempt ended in DVTDownloadable: Download Failed with Error Domain=DVTDownloadableErrorDomain Code=41 "Download failed."; the second, with -buildVersion 24A94401, reported the runtime as 7.85 GB, finished, and simctl list runtimes then listed “iOS 27.1 (27.1 - 24A94401)”. Budget the disk for it: the runtime is four times the size of the Xcode download.3

The outer display of the iPhone Duo simulator on first boot, 1398 by 2034 pixels: the status cluster runs down the right edge, the side where Apple’s Human Interface Guidelines put the Dynamic Island and the status bar on iPhone Duo.10
Does the 27.1 SDK have the Duo APIs?
On September 17 I searched the iOS 27.0 SDK for the names in Apple’s “Preparing your app for iPhone Duo” guide and found none of the ten that are specific to the device. The same search against the 27.1 SDK, run the same way, a plain text search of the module interfaces and headers, finds all of them. The rows are the substrings searched: seven of them carry nine of the ten names, the two reservedRegions methods and the two axisBehavior members each sharing a row, and the other three are the types behind the names, ReservedRegion, ToolbarVerticalBehavior for toolbarVerticalBehavior(_:), and UIVerticalBarBehavior for preferredVerticalBarBehavior:4
| Substring searched | SwiftUICore interface | SwiftUI interface | UIKit interface | UIKit headers |
|---|---|---|---|---|
ArrangementView |
45 | 0 | 19 | 4 files |
UIArrangementViewController |
0 | 0 | 19 | 4 files |
ReservedRegion |
16 | 0 | 15 | 3 files |
reservedRegions |
2 | 0 | 5 | 1 file |
ToolbarVerticalBehavior |
0 | 5 | 0 | 0 |
UIVerticalBarBehavior |
0 | 0 | 0 | 1 file |
verticalBarEdge |
0 | 0 | 0 | 1 file |
toolbarVerticalEdge |
1 | 0 | 0 | 0 |
axisBehavior |
0 | 2 | 0 | 1 file |
preferredVerticalBarBehavior |
0 | 0 | 0 | 1 file |
Two details in that table matter for how you write the code. The SwiftUI types live in SwiftUICore, the module that import SwiftUI re-exports, so an ordinary import finds them; and the availability attributes disagree with the documentation about platforms. The SwiftUICore interface declares ArrangementView, and the SwiftUI interface declares toolbarVerticalBehavior(_:), both under @available(anyAppleOS 27.1, *), which is Apple’s shorthand for every platform at that version, while UIArrangementViewController.h and the reservedRegionsOfKind: methods in UIView.h carry API_AVAILABLE(ios(27.1), tvos(27.1), visionos(27.1)) with API_UNAVAILABLE(watchos); in UIVerticalBarEdge.h the enum and the verticalBarEdge trait carry that same pair while the Leading and Trailing cases carry API_AVAILABLE(ios(27.1)) API_UNAVAILABLE(visionos) API_UNAVAILABLE(watchos, tvos). Apple’s documentation pages for all five list only iOS 27.1 and iPadOS 27.1, marked beta.47 Write against iOS and let the compiler tell you about the rest.
The three names the guide uses that were already in the 27.0 SDK are unchanged: presentationPlacement(_:) still sits under @available(anyAppleOS 27.0, *), backgroundExtensionEffect() is still there from iOS 26, and of the two ToolbarItemPlacement cases the guide names, topBarPinnedTrailing sits under @available(iOS 27.0, visionOS 27.0, *) and cancellationAction carries no availability of its own beyond the type’s.4
What does the simulator profile say about the two displays?
The device type Apple installs for the beta, iPhone Duo.simdevicetype, is a plain bundle under /Library/Developer/CoreSimulator/Profiles/DeviceTypes, and its two property lists answer questions the spec sheet left open.5
profile.plist gives the identity: model identifier iPhone19,4, product class V68, an alias of com.apple.CoreSimulator.SimDeviceType.V68, minRuntimeVersion 27.1, and a rule to create the device by default for runtimes from 27.1 up. capabilities.plist gives the hardware: model number A3447, HomeButtonType 2, DeviceSupportsDynamicIsland true, DeviceSupportsEnhancedMultitasking false, IsLargeFormatPhone true, a CompatibleDeviceFallback of iPhone18,3, a device corner radius of 59, and a displays array with two integrated entries and three virtual ones.5
| Display in the profile | Pixels | Scale | Points | Native orientation | Corner radii | Colorspace |
|---|---|---|---|---|---|---|
primary (“LCD”, screen 1) |
1398 by 2034 | 3 | 466 by 678 | 0 | 8, 59, 8, 59 | P3 |
primary-1 (“LCD-1”, screen 3) |
2007 by 2853 | 3 | 669 by 951 | 270 | 55 on all four | sRGB |
The first row is the outer display and matches Apple’s spec sheet pixel for pixel. The second is the inner display, and its pixel count is App Store Connect’s screenshot size, 2007 by 2853, rather than the panel’s 1878 by 2670: the simulator renders the inner display at 669 by 951 points at 3x, which is the arithmetic my Duo developer post did on September 10 and labeled an inference. Apple’s own profile now carries the number. The 270-degree native orientation says the inner display is landscape-native, 951 points wide by 669 tall when the phone is open, which matches Apple’s dimensions for the open device. The two remaining numbers are simulator values rather than hardware ones: both displays are listed at 460 pixels per inch and 60 Hz, where the spec sheet gives the inner panel 430 ppi, so treat hdpi as a placeholder.5
The profile also ships the shapes. Each display references a framebuffer mask, a PDF of the visible area. The outer display’s mask has asymmetric corners, the profile’s values 8 on one long edge and 59 on the other, on my reading the small radius on the side that meets the center hinge Apple’s design guide describes; the inner display’s mask is a plain rounded rectangle with the profile’s corner value 55 and no cutout for the front camera, so the camera’s occlusion comes from the reserved-region API at runtime rather than from the framebuffer shape.510
What does the simulator show?
The device boots closed. On first boot the outer display shows the Home Screen and the inner display’s framebuffer is on but black, and simctl io enumerate lists both integrated screens by the profile’s names, primary at 1398 by 2034 and primary-1 at 2007 by 2853, beside the usual virtual ones.6 I installed a single-file SwiftUI probe that reads the geometry, the size classes, the toolbarVerticalEdge environment value, and the reserved regions of both kinds with includeInactive, wraps an ArrangementView in each of the three styles, and puts six items in a navigation toolbar.6

The probe on the outer display, closed pose: 466 by 678 points, compact width, the split arrangement stacked, the toolbar horizontal.
Closed, the probe reports what a compact iPhone reports. UIScreen.main.bounds is 466 by 678 points at scale 3, the size classes are compact width and regular height, toolbarVerticalEdge is nil, UIKit’s verticalBarEdge trait reads as raw value 0, and both reserved-region queries return empty arrays even with inactive regions included, so the closed pose exposes no fold and no camera to the app. The GeometryReader inside the navigation stack measured 386 by 510 points with safe-area insets of 134 at the top and 34 at the bottom and none on the sides; on my reading the 80 points of width the system kept are the rail on the right where the status cluster sits. The split arrangement placed the primary view above the secondary, which is the taller-than-wide case Apple’s guide describes, and the toolbar drew horizontally at the top: Share and the checkmark Done button beside the overflow button, with the four secondary actions absent from the bar and, by their placement, in its menu.67
Device Hub is where the poses live. With the Duo device selected, its window exposes Rotate Right, Closed, Book, and Open as buttons the accessibility API can press, which is how the rest of this section was driven.6
Open moves the app to the inner display in its landscape-native orientation. The probe reports regular width and regular height, the GeometryReader measures 803 by 515 points with safe-area insets of 134 at the top, 34 on each side, and 20 at the bottom, and the same 80 points are missing from the width as in the closed pose, on my reading the rail again, now on the right of a 951-point-wide screen with the status cluster in it. The split arrangement puts the primary and secondary views side by side, the wider-than-tall case in Apple’s guide, and the toolbar draws horizontally at the top right, again Share and Done beside the overflow button with the four secondary actions absent from the bar.6

Open pose, inner display, 2853 by 2007 pixels: regular in both dimensions, the split arrangement side by side, the rail on the right.
Rotate Right turns the inner display portrait. The probe then measures 669 by 703 points, regular in both dimensions, with insets of 134 at the top and 34 at the bottom and none on the sides; on my reading the 80-point rail has moved to the top edge, where the status cluster now sits in a black band, and the split arrangement stays side by side even though the container is now taller than it is wide.6

The inner display rotated: 669 points wide, still regular both ways, the rail across the top.
Book, the partially folded pose, is where the reserved-region API should earn its keep, and in this beta it did not for my probe. With no app in the foreground, the inner display after the Book press showed the Home Screen; relaunched, the probe reported exactly what it reported when Open, 803 by 515 points, regular in both dimensions, and zero divisions and zero occlusions with inactive regions included, in SwiftUI and in UIKit. The closed pose reports zero as well. I did not find a pose in which reservedRegions returned a fold or a camera, so a layout that adapts to the fold is something this beta’s simulator did not let me see; Apple’s guide describes the division as active “when iPhone Duo is partially open,” and whether that is a beta gap or a probe gap is a question for the next beta.67
Two more things held across every pose. The toolbar never drew vertically: toolbarVerticalEdge was nil in SwiftUI and verticalBarEdge read as raw value 0 in UIKit, closed, open, and rotated, so the vertical bars Apple’s guide describes did not appear for a navigation stack’s toolbar in this beta. And UIScreen.main.bounds answered 466 by 678 points, the outer display, while the app was on the inner display, which is the trap Apple’s guide warns about when it says to make layout calculations “based on your scene or containing view’s bounds rather than screen dimensions”: the main screen is not the screen you are on. The compiler already says 'main' was deprecated in iOS 26.0 when the probe builds, and this device is the reason.67
One route to the other poses does not work. simctl io screenConfig can power a screen off, and powering off the outer display while the inner one stayed on did not open the phone; it crashed the simulator’s system shell, simctl launch then failed with “The system shell probably crashed,” and a reboot was needed. Poses live in Device Hub’s window.6
What the beta cannot do yet
Apple lists three limits under Simulator, Known Issues, in the beta’s own notes: “Initial Simulator launch can take several minutes.” (187708500), “StandBy is unavailable in the iPhone Duo Simulator runtime.” (187708663), and “Running and debugging most app extensions is unavailable in the iPhone Duo Simulator runtime.” (187708767).2 The StandBy one matters for anyone with widgets or Live Activities meant for it: Apple’s announcement says the phone “enters StandBy on either the outer or inner display” and calls it a “hub for widgets”, the Duo developer post covers what appears there, and until a later beta lifts the limit, StandBy on this device is something to check on hardware.11
Two more sit under Mac Catalyst, Known Issues, and they bite any app that adopts these APIs and also builds for the Mac: “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). (185924957)”, with Apple’s workaround of #if !targetEnvironment(macCatalyst) in Swift or #if !TARGET_OS_MACCATALYST in Objective-C, and “Projects that target iOS 27.1 show no Mac Catalyst run destination available. (187046347)”, with “Add a Mac Catalyst 27.0 minimum deployment in target settings.” as the workaround.2 The Xcode 27.2 beta notes add a third from the other direction: “macOS, watchOS, tvOS, and visionOS SDKs in Xcode 27.2 incorrectly report 27.1 as a valid deployment target,” and “Mac Catalyst builds with a 27.1 or 27.2 deployment target may be unable to use newly introduced API.” (187160501).8
What I would do this week
- Install the beta beside Xcode 27.0 rather than over it: expand the xip, rename the app, and point
DEVELOPER_DIRat it for command-line builds; nothing in the beta’s notes changes the 27.0 toolchain, and the compiler and linker carry identical version strings.4 - Start the runtime download before you need it, with
xcodebuild -downloadPlatform iOSunder the beta, and retry if it fails; the runtime is what makes the iPhone Duo device type bootable, and Apple warns the first launch takes minutes on top of that.23 - Build once against the 27.1 SDK with your Mac Catalyst target included, and read the two diagnostics Apple names before deciding whether to fence the new API with
#if !targetEnvironment(macCatalyst)or to lift the Catalyst minimum to 27.0.2 - Use the profile’s numbers as the sizes to preview and test against: 466 by 678 points closed, 669 by 951 open, with the inner display landscape-native. The beta’s Previews note adds a Display group to the canvas overrides picker “for previewing content on a device’s alternative display.” (182598534)25
- Log the reserved regions per pose during development:
reservedRegions(kind:options:layoutDirectionBehavior:)with.includeInactiveis documented to return the fold and the camera asReservedRegionvalues that can be active or inactive; in this beta every pose returned none, so a log line inonChange(of: proxy.size)tells you the moment a pose starts reporting them.67
FAQ
Is the iPhone Duo simulator in Xcode 27.1 beta?
Yes. The beta installs an iPhone Duo device type, com.apple.CoreSimulator.SimDeviceType.iPhone-Duo, whose profile requires an iOS 27.1 runtime that Xcode downloads separately through xcodebuild -downloadPlatform iOS. Apple’s notes warn the first launch “can take several minutes” and that StandBy and most app extensions are unavailable in that runtime.235
How do I install Xcode 27.1 beta next to Xcode 27?
Expand the xip with xip --expand, move the resulting app to a versioned name such as /Applications/Xcode-27.1-beta.app, and set DEVELOPER_DIR to its Contents/Developer folder for xcodebuild, xcrun, and swiftc. The beta requires macOS Tahoe 26.6 or later, the same floor as Xcode 27.0.24
What size is the iPhone Duo inner display in points?
669 by 951 points, per the simulator’s device profile, which defines the inner display as 2007 by 2853 pixels at scale 3 with a landscape-native orientation; the outer display is 466 by 678 points from 1398 by 2034 pixels at scale 3.5
Does Xcode 27.1 beta change the iOS 27.0 SDK or the Xcode 27 toolchain?
No. The Swift compiler and the linker report the same version strings as Xcode 27.0, and the beta’s release notes have three sections, Mac Catalyst, Previews, and Simulator, none of which touches the toolchain. The iOS 27.1 SDK is an addition, identified as build 24A94403 in both the device and simulator SDKs.24
When does iPhone Duo ship, and on what?
October 23, on iOS 27.1, per Apple’s September 16 news post: “When iPhone Duo becomes available on October 23, it will run iOS 27.1.”9
Sources
-
Apple, Releases, RSS feed fetched September 19, 2026: “Xcode 27.1 beta (27A9269)” dated Fri, 18 Sep 2026 10:00:00 PDT and “TestFlight Update” dated Fri, 18 Sep 2026 14:00:00 PDT. Apple, App Store Connect release notes, September 18, 2026, TestFlight update, quoted in full. ↩↩↩
-
Apple, Xcode 27.1 Beta Release Notes, fetched through the documentation JSON endpoint on September 19, 2026: Overview, quoted; Mac Catalyst, Known Issues 185924957 and 187046347 with their workarounds, quoted; Previews, New Features 182598534, quoted; Simulator, Known Issues 187708500, 187708663, and 187708767, quoted. The notes contain no other sections. ↩↩↩↩↩↩↩↩↩↩↩
-
Author’s runtime download on macOS 26.6.2 (25G83), September 19, 2026, with
DEVELOPER_DIRset to Xcode 27.1 beta:xcodebuild -downloadPlatform iOSprinted “iOS is already downloaded.” for the installed 27.0 runtime and then “Downloading iOS 27.1 Simulator (24A94401) (arm64)”, followed byDVTDownloadable: Download Failed. Downloadable: DVTDownloadable(identifier: 0a4e7582-0061-5907-bea9-fe234c1f9392, version: 27.1.0.1, category: simulator, contentType: cryptexDiskImage, downloadMethod: mobileAsset, platform: com.apple.platform.iphoneos)andError Domain=DVTDownloadableErrorDomain Code=41 "Download failed."; the retry,xcodebuild -downloadPlatform iOS -buildVersion 24A94401, printed “Downloading iOS 27.1 Simulator (24A94401) (arm64): 0.0% (66 kB of 7.85 GB)” and completed, after whichxcrun simctl list runtimeslisted “iOS 27.1 (27.1 - 24A94401) - com.apple.CoreSimulator.SimRuntime.iOS-27-1”. Apple’s developer downloads page, searched for “Simulator Runtime” while signed in the same day, lists disk images no newer than the iOS 18.2 Simulator Runtime. ↩↩↩↩↩ -
Author’s inspection of
/Applications/Xcode-27.1-beta.app, September 19, 2026:xcodebuild -versionprintsXcode 27.1andBuild version 27A9269;xcrun --sdk iphoneos --show-sdk-versionandxcrun --sdk iphonesimulator --show-sdk-versionboth print 27.1;SystemVersion.plistin both SDKs carriesProductBuildVersion24A94403 andProductVersion27.1;xcrun swift --versionprintsApple Swift version 6.4 (swiftlang-6.4.0.34.1 clang-2100.3.34.1)andxcrun ld -vprintsld-27037.1, the same version strings Xcode 27.0 (27A266a) prints on the same Mac.Xcode_27.1_beta.xipis 2,027,292,809 bytes;pkgutil --check-signaturereports “signed Apple Software” with a Software Update certificate chain;du -skon the expanded app reports 3,813,336 KB, against 3,804,188 KB for Xcode 27.0 (27A266a) as expanded at/Applications/Xcode-27.app. Name counts aregrep -cfor the substring inSwiftUICore.swiftmodule/arm64e-apple-ios.swiftinterface,SwiftUI.swiftmodule/arm64e-apple-ios.swiftinterface, andUIKit.swiftmodule/arm64e-apple-ios.swiftinterfacein the iPhoneOS SDK, andgrep -rlfile counts acrossUIKit.framework/Headers; availability attributes read from those files:@available(anyAppleOS 27.1, *)abovepublic struct ArrangementView<in the SwiftUICore interface and above theextension SwiftUICore.Viewthat declaresfunc toolbarVerticalBehaviorin the SwiftUI interface,API_AVAILABLE(ios(27.1), tvos(27.1), visionos(27.1))followed byAPI_UNAVAILABLE(watchos)inUIArrangementViewController.h, on bothreservedRegionsOfKind:declarations inUIView.h, and on theUIVerticalBarEdgeenum and theverticalBarEdgetrait andAPI_AVAILABLE(ios(27.1)) API_UNAVAILABLE(visionos) API_UNAVAILABLE(watchos, tvos)on itsUIVerticalBarEdgeLeadingandUIVerticalBarEdgeTrailingcases;@available(anyAppleOS 27.0, *)abovefunc presentationPlacement;@available(iOS 27.0, visionOS 27.0, *)abovepublic static let topBarPinnedTrailingand no attribute abovepublic static let cancellationAction. First launch: the firstxcodebuild -versionunder the beta’sDEVELOPER_DIRran past a two-minute timeout, and/var/log/install.logrecordsxcodebuildenqueuing a PackageKit install at 16:01:54 on September 19 that extractedCoreTypes.pkgandXcodeSystemResources.pkgfromXcode-27.1-beta.app/Contents/Resources/Packagesand finished at 16:03:04;xcodebuild -checkFirstLaunchStatusafterwards returned 0. ↩↩↩↩↩↩↩↩↩↩↩ -
/Library/Developer/CoreSimulator/Profiles/DeviceTypes/iPhone Duo.simdevicetype, installed by Xcode 27.1 beta and read withplutil -convert xml1on September 19, 2026.profile.plist:modelIdentifieriPhone19,4,productClassV68,aliasescom.apple.CoreSimulator.SimDeviceType.V68,minRuntimeVersion27.1,createByDefaultForRuntimeVersionsversionMin 27.1.capabilities.plist:ModelNumberA3447,ThinningProductTypeiPhone19,4,CompatibleDeviceFallbackiPhone18,3,DeviceCornerRadius59,HomeButtonType2,DeviceSupportsDynamicIslandtrue,DeviceSupportsEnhancedMultitaskingfalse,IsLargeFormatPhonetrue;ScreenDimensionsCapabilitymain-screen-width 1398, main-screen-height 2034, main-screen-pitch 460, main-screen-scale 3;displays:primary(displayName LCD, screenID 1, width 1398, height 2034, scale 3, hdpi and vdpi 460, refreshRate 60, nativeOrientation 0, cornerRadiusUL 8, UR 59, LL 8, LR 59, colorspace P3) andprimary-1(displayName LCD-1, screenID 3, width 2007, height 2853, scale 3, hdpi and vdpi 460, refreshRate 60, nativeOrientation 270, all four corner radii 55, colorspace sRGB), plusexternal-0(TVOut),wireless0(carPlay), andresizable(scene). The twoframebufferMaskIdentifierPDFs were rendered withqlmanageand inspected; Apple’s spec sheet figures for the panels are in the Duo developer post.xcrun simctl list devicetypesunder the beta lists “iPhone Duo (com.apple.CoreSimulator.SimDeviceType.iPhone-Duo)”. ↩↩↩↩↩↩↩↩↩ -
Author’s runs on macOS 26.6.2 (25G83), September 19 and 20, 2026. Device:
simctl create "Duo-27.1" com.apple.CoreSimulator.SimDeviceType.iPhone-Duo com.apple.CoreSimulator.SimRuntime.iOS-27-1, booted withsimctl bootandsimctl bootstatus -b(about a minute on this Mac);simctl io <udid> enumeratelists twocom.apple.framebuffer.displayports of display class 0 at 1398 by 2034 and 2007 by 2853 and, under Connected Screens, “LCD-1” with device nameprimary-1, screen ID 3, pixel size {2007, 2853}. Probe: DuoProbe, a single-file SwiftUI app built withxcrun swiftc -sdk <iPhoneSimulator.sdk> -target arm64-apple-ios27.1-simulator -parse-as-libraryunder Xcode 27.1 beta, installed withsimctl install, launched withsimctl launch --console-pty, screenshots withsimctl io <udid> screenshot --mask=alpha --display=primaryand--display=primary-1. Closed-pose console lines:DUOPROBE screen=(466.0, 678.0) scale=3.0 idiom=0 model=iPhone name=Duo-27.1;DUOPROBE size=386x510 h=compact v=regular verticalEdge=nil safe=EdgeInsets(top: 134.0, leading: 0.0, bottom: 34.0, trailing: 0.0);DUOPROBE uikit bounds=(354.0, 44.0) divisions=0 occlusions=0 verticalBarEdge=UIVerticalBarEdge(rawValue: 0); nodivision[orocclusion[lines. The--display=primary-1screenshot is black. Screen power:simctl io <udid> screenConfig --display=primary power offprinted “Screen 1 power state set to off”; the nextsimctl launchfailed withFBSOpenApplicationServiceErrorDomaincode 5, “The system shell probably crashed.”;simctl shutdownandbootrecovered the device. Pose runs on September 20 in two series, both pressing Rotate Right, Closed, Book, and Open through the accessibility API with theAXPressaction on the buttons Device Hub exposes for the selected device, and both driven by the 27.2 beta’ssimctlcommand-line tool, theDEVELOPER_DIRthose scripts set, against the 27.1 beta’s runtime, device type, and Device Hub. In the first series the probe from the previous pose was still running when the next button was pressed, then terminated and relaunched, with the console captured for twelve seconds and screenshots taken of both displays; the rotated readings below and the transitional lines come from it. In the second series the probe was terminated after each capture, so no app was in the foreground when the next button was pressed; the pre-relaunch screenshots come from it. Open:DUOPROBE size=803x515 h=regular v=regular verticalEdge=nil safe=EdgeInsets(top: 134.0, leading: 34.0, bottom: 20.0, trailing: 34.0),DUOPROBE uikit bounds=(771.0, 44.0) divisions=0 occlusions=0 verticalBarEdge=UIVerticalBarEdge(rawValue: 0), andDUOPROBE screen=(466.0, 678.0); the--display=primary-1screenshot shows the probe,--display=primaryshows black. Book: the same three lines after the relaunch; the screenshot of the inner display taken after the press and before the relaunch, with no app running, shows the Home Screen. Closed: the closed-pose lines above. After Rotate Right, Open:DUOPROBE size=669x703 h=regular v=regular verticalEdge=nil safe=EdgeInsets(top: 134.0, leading: 0.0, bottom: 34.0, trailing: 0.0)anduikit bounds=(637.0, 44.0), with the inner-display screenshot in portrait. No run printed adivision[orocclusion[line. A rotated closed state appeared only as transitional lines while a pose changed,DUOPROBE size=610x232 h=compact v=compact ... screen=(678.0, 466.0), and is not counted above. ↩↩↩↩↩↩↩↩↩↩↩↩ -
Apple, documentation JSON fetched September 19, 2026 for ArrangementView, UIArrangementViewController, reservedRegions(kind:options:layoutDirectionBehavior:), reservedRegions(kind:options:), and toolbarVerticalBehavior(_:): each page’s platform availability reads iOS 27.1 and iPadOS 27.1, marked beta. Apple, Preparing your app for iPhone Duo, fetched the same day, for the names the guide uses. ↩↩↩↩↩
-
Apple, Xcode 27.2 Beta Release Notes, fetched September 19, 2026, SDK, Known Issues, 187160501, quoted. ↩
-
Apple, “Get ready with the latest beta releases”, news, September 16, 2026, “Note about iOS 27.1 and iPhone Duo”, quoted. ↩
-
Apple, Designing for iPhone Duo, Human Interface Guidelines, fetched through the documentation JSON endpoint on September 20, 2026: “Controls on the side include both system and app elements: the Dynamic Island, the status bar, the toolbar (including navigation buttons), and the tab bar.” and “A hinge in the center lets people open and close the device”. ↩↩
-
Apple Newsroom, Apple unveils iPhone Duo, September 9, 2026, fetched September 20, 2026: “Set iPhone Duo down and it enters StandBy on either the outer or inner display” and “hub for widgets”, quoted from the StandBy paragraph. ↩