Skip to content

SwiftUI on iPhone Duo

Apple ships the adaptive APIs directly. Most SwiftUI apps need configuration and layout review rather than rewriting.

iPhone Duo goes on sale 23 October 2026, running iOS 27.1. Anything you fix before then, your users never see broken. Start with what breaks first.

SwiftUI iPhone Duo checklist

SwiftUI has first-party iPhone Duo support, so the work is mostly removing old assumptions and adopting a few new APIs. Here is where common SwiftUI patterns stand.

SwiftUI on iPhone Duo: what works, what breaks

  • WorksNavigationSplitView and TabViewCollapse when closed; tile or overlay when open.
  • WorksStandard toolbars on the iOS 27.1 SDKMove to the side column automatically.
  • Breaks.frame(width: 390)Sized for a 402 pt iPhone, on a 626 pt display.
  • BreaksLayout driven by orientationThe inner display ignores supported orientations.
  • WorkshorizontalSizeClassRegular on the inner display, compact on the outer.
  • Breaksbounds.width - insets.left * 2Insets are asymmetric; content drifts off-centre.
  • BreaksuserInterfaceIdiom == .pad gatesiPhone Duo reports `.phone` with a regular-width display.
  • BreaksUIScreen.mainTwo displays at different densities; read the window scene.
  • WorksArrangementViewPlaces a primary and secondary view across every pose.
  • WorksreservedRegions(kind:)Reports the fold and the inner camera.
  • Looks datedText-only toolbar itemsStay in a horizontal bar; give items a title and a symbol.
  • Works.defaultTabBarPlacement(.sidebar)A sidebar instead of five tabs stretched across 626 pt.
  • BreaksLayout driven by onHingeChangeHinge angle is for interactions and effects, not layout.
  • WorksAVCaptureDeviceDirectionCoordinatorKeeps camera apps on the right lens as the device folds.

Why SwiftUI starts ahead

SwiftUI is the best-supported way to build for iPhone Duo. Declarative layout already recomputes when the available size changes, so a SwiftUI app that avoids fixed sizes gets much of the adaptation for free.

What you get without changes

Build against the iOS 27.1 SDK and the following already adapt: NavigationSplitView, TabView, sheets, popovers, context menus, and alerts. Columns collapse when the device is closed and tile or overlay when it is open. Standard navigation and toolbar buttons move into a vertical bar at the side on the closed outer display and on the inner display in landscape; the inner display in portrait keeps horizontal bars.

What you need to change

The work concentrates in four places:

  1. Fixed sizes. Any .frame(width:) tuned for a 402-point iPhone is wrong on a 626-point display. See hard-coded screen dimensions.
  2. Orientation logic. The inner display does not honor supported interface orientations. Move to @Environment(\.horizontalSizeClass). See size classes.
  3. Safe area math. Insets are asymmetric now. See asymmetric safe areas.
  4. Toolbar content. A vertical bar holds fewer items. See overflow priorities.

The new APIs worth adopting

ArrangementView is the highest-value addition — it places a primary and secondary view across every pose, taking size classes, aspect ratio, and active division regions as input:

ArrangementView {
    PlayerView()
} secondary: {
    UpNextView()
}
.arrangementViewStyle(.split)

ReservedRegion reports where the hinge divides the display and where the under-display camera occludes it:

GeometryReader { proxy in
    let regions = proxy.reservedRegions(kind: .division)
}

And one modifier that is close to free:

TabView { … }.defaultTabBarPlacement(.sidebar)

Read the full walkthrough in SwiftUI on iPhone Duo.

Free evaluation

Want this done for your SwiftUI app?

We adapt existing iOS apps to iPhone Duo. Send your email and an engineer replies with what is likely to break in your SwiftUI app, what to fix first, and a realistic estimate of the work.

Takes about 20 seconds

See what an audit costs

Checklist items that apply to SwiftUI

Open the full checklist

Weighing SwiftUI against the others? All six frameworks scored side by side — or see our iPhone Duo development services if you would rather hand the work over.

Users already reporting that your app looks wrong? What each symptom means, in plain language you can send them.