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 -version prints Xcode 27.1 and Build version 27A9269; the iPhoneOS and iPhoneSimulator SDKs both identify as iOS 27.1 build 24A94403; the Swift compiler reports the same swiftlang-6.4.0.34.1 version string as Xcode 27.0 and the linker the same ld-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 ArrangementView and reservedRegions(kind:options:layoutDirectionBehavior:) in SwiftUICore, toolbarVerticalBehavior(_:) in SwiftUI, and UIArrangementViewController, preferredVerticalBarBehavior, and verticalBarEdge in UIKit. SwiftUI marks them @available(anyAppleOS 27.1, *); UIKit’s headers mark the arrangement controller and the reserved-region methods API_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 class V68, model number A3447) defines two integrated displays: primary at 1398 by 2034 pixels, scale 3, and primary-1 at 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 reservedRegions returned nothing, even with inactive regions included, toolbarVerticalEdge stayed nil, the toolbar drew horizontally, and UIScreen.main.bounds kept 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 iPhone Duo simulator's outer display on first boot, running iOS 27.1 beta: a dark Home Screen with a Settings icon at the top left, the clock and Wi-Fi status stacked vertically on the right edge, a Dock tile on the right, and a Search button at the bottom right

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 app on the iPhone Duo simulator's outer display: a toolbar at the top right with a share icon, an overflow ellipsis, and a checkmark, the values size 386 by 510 points, size classes compact and regular, toolbarVerticalEdge nil, divisions 0 and occlusions 0, a split arrangement with the primary view above the secondary view, and the clock and Wi-Fi status stacked on the right edge

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

The probe app on the iPhone Duo simulator's inner display in the Open pose, landscape: size 803 by 515 points, size classes regular and regular, toolbarVerticalEdge nil, divisions 0 and occlusions 0, a split arrangement with primary and secondary side by side, the toolbar at the top right, and the clock and Wi-Fi status in a black rail on the right edge

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 probe app on the iPhone Duo simulator's inner display rotated to portrait: size 669 by 703 points, size classes regular and regular, the split arrangement still side by side, and the clock and Wi-Fi status in a black band across the top

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

  1. Install the beta beside Xcode 27.0 rather than over it: expand the xip, rename the app, and point DEVELOPER_DIR at 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
  2. Start the runtime download before you need it, with xcodebuild -downloadPlatform iOS under 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
  3. 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
  4. 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
  5. Log the reserved regions per pose during development: reservedRegions(kind:options:layoutDirectionBehavior:) with .includeInactive is documented to return the fold and the camera as ReservedRegion values that can be active or inactive; in this beta every pose returned none, so a log line in onChange(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


  1. 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. 

  2. 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. 

  3. Author’s runtime download on macOS 26.6.2 (25G83), September 19, 2026, with DEVELOPER_DIR set to Xcode 27.1 beta: xcodebuild -downloadPlatform iOS printed “iOS is already downloaded.” for the installed 27.0 runtime and then “Downloading iOS 27.1 Simulator (24A94401) (arm64)”, followed by DVTDownloadable: 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) and Error 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 which xcrun simctl list runtimes listed “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. 

  4. Author’s inspection of /Applications/Xcode-27.1-beta.app, September 19, 2026: xcodebuild -version prints Xcode 27.1 and Build version 27A9269; xcrun --sdk iphoneos --show-sdk-version and xcrun --sdk iphonesimulator --show-sdk-version both print 27.1; SystemVersion.plist in both SDKs carries ProductBuildVersion 24A94403 and ProductVersion 27.1; xcrun swift --version prints Apple Swift version 6.4 (swiftlang-6.4.0.34.1 clang-2100.3.34.1) and xcrun ld -v prints ld-27037.1, the same version strings Xcode 27.0 (27A266a) prints on the same Mac. Xcode_27.1_beta.xip is 2,027,292,809 bytes; pkgutil --check-signature reports “signed Apple Software” with a Software Update certificate chain; du -sk on 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 are grep -c for the substring in SwiftUICore.swiftmodule/arm64e-apple-ios.swiftinterface, SwiftUI.swiftmodule/arm64e-apple-ios.swiftinterface, and UIKit.swiftmodule/arm64e-apple-ios.swiftinterface in the iPhoneOS SDK, and grep -rl file counts across UIKit.framework/Headers; availability attributes read from those files: @available(anyAppleOS 27.1, *) above public struct ArrangementView< in the SwiftUICore interface and above the extension SwiftUICore.View that declares func toolbarVerticalBehavior in the SwiftUI interface, API_AVAILABLE(ios(27.1), tvos(27.1), visionos(27.1)) followed by API_UNAVAILABLE(watchos) in UIArrangementViewController.h, on both reservedRegionsOfKind: declarations in UIView.h, and on the UIVerticalBarEdge enum and the verticalBarEdge trait and API_AVAILABLE(ios(27.1)) API_UNAVAILABLE(visionos) API_UNAVAILABLE(watchos, tvos) on its UIVerticalBarEdgeLeading and UIVerticalBarEdgeTrailing cases; @available(anyAppleOS 27.0, *) above func presentationPlacement; @available(iOS 27.0, visionOS 27.0, *) above public static let topBarPinnedTrailing and no attribute above public static let cancellationAction. First launch: the first xcodebuild -version under the beta’s DEVELOPER_DIR ran past a two-minute timeout, and /var/log/install.log records xcodebuild enqueuing a PackageKit install at 16:01:54 on September 19 that extracted CoreTypes.pkg and XcodeSystemResources.pkg from Xcode-27.1-beta.app/Contents/Resources/Packages and finished at 16:03:04; xcodebuild -checkFirstLaunchStatus afterwards returned 0. 

  5. /Library/Developer/CoreSimulator/Profiles/DeviceTypes/iPhone Duo.simdevicetype, installed by Xcode 27.1 beta and read with plutil -convert xml1 on September 19, 2026. profile.plist: modelIdentifier iPhone19,4, productClass V68, aliases com.apple.CoreSimulator.SimDeviceType.V68, minRuntimeVersion 27.1, createByDefaultForRuntimeVersions versionMin 27.1. capabilities.plist: ModelNumber A3447, ThinningProductType iPhone19,4, CompatibleDeviceFallback iPhone18,3, DeviceCornerRadius 59, HomeButtonType 2, DeviceSupportsDynamicIsland true, DeviceSupportsEnhancedMultitasking false, IsLargeFormatPhone true; ScreenDimensionsCapability main-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) and primary-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), plus external-0 (TVOut), wireless0 (carPlay), and resizable (scene). The two framebufferMaskIdentifier PDFs were rendered with qlmanage and inspected; Apple’s spec sheet figures for the panels are in the Duo developer post. xcrun simctl list devicetypes under the beta lists “iPhone Duo (com.apple.CoreSimulator.SimDeviceType.iPhone-Duo)”. 

  6. 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 with simctl boot and simctl bootstatus -b (about a minute on this Mac); simctl io <udid> enumerate lists two com.apple.framebuffer.display ports of display class 0 at 1398 by 2034 and 2007 by 2853 and, under Connected Screens, “LCD-1” with device name primary-1, screen ID 3, pixel size {2007, 2853}. Probe: DuoProbe, a single-file SwiftUI app built with xcrun swiftc -sdk <iPhoneSimulator.sdk> -target arm64-apple-ios27.1-simulator -parse-as-library under Xcode 27.1 beta, installed with simctl install, launched with simctl launch --console-pty, screenshots with simctl io <udid> screenshot --mask=alpha --display=primary and --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); no division[ or occlusion[ lines. The --display=primary-1 screenshot is black. Screen power: simctl io <udid> screenConfig --display=primary power off printed “Screen 1 power state set to off”; the next simctl launch failed with FBSOpenApplicationServiceErrorDomain code 5, “The system shell probably crashed.”; simctl shutdown and boot recovered the device. Pose runs on September 20 in two series, both pressing Rotate Right, Closed, Book, and Open through the accessibility API with the AXPress action on the buttons Device Hub exposes for the selected device, and both driven by the 27.2 beta’s simctl command-line tool, the DEVELOPER_DIR those 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), and DUOPROBE screen=(466.0, 678.0); the --display=primary-1 screenshot shows the probe, --display=primary shows 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) and uikit bounds=(637.0, 44.0), with the inner-display screenshot in portrait. No run printed a division[ or occlusion[ 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. 

  7. 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. 

  8. Apple, Xcode 27.2 Beta Release Notes, fetched September 19, 2026, SDK, Known Issues, 187160501, quoted. 

  9. Apple, “Get ready with the latest beta releases”, news, September 16, 2026, “Note about iOS 27.1 and iPhone Duo”, quoted. 

  10. 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”. 

  11. 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. 

Related Posts

arm64e.x1: Apple's Checked Pointer Arithmetic Slice

iOS 27 RC notes add arm64e.x1: checked pointer arithmetic (CPA2) on A20 Pro, M6, and S11. What clang emits, the four Xco…

18 min read

iOS 27.0 Release Notes: Deprecations, Breaks, and Fixes

iOS 27.0 (24A437) shipped September 14. The notes, read for developers: 11 deprecations, what fires when you build with …

34 min read

Designing for iPhone Duo: What Moves, Splits, and Stays

Apple's iPhone Duo design guide and three Tech Talks, read as rules: two size classes instead of poses, displacement at …

23 min read