Skip to content

UIKit on iPhone Duo

Every SwiftUI capability has a UIKit counterpart. Apps built on standard containers adapt with little work.

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.

UIKit iPhone Duo checklist

UIKit has first-party iPhone Duo support, and apps built on standard containers adapt with little work. Here is where common UIKit patterns stand.

UIKit on iPhone Duo: what works, what breaks

  • WorksUINavigationController, UITabBarController, UISplitViewControllerFully adaptive across every pose.
  • BreaksCustom UIToolbar contentNot placed in the side column.
  • BreaksUIScreen.main.scale and .boundsDisplays run at 430 and 460 ppi; use traits and the window scene.
  • BreaksuserInterfaceIdiom layout gatesPhone idiom, regular-width display: iPad layouts never appear.
  • Breaksbounds.width - insets.left * 2Left and right insets differ.
  • Worksbounds.inset(by: safeAreaInsets)Handles asymmetric insets correctly.
  • WorksUIArrangementViewControllerPlaces a primary and secondary view across every pose.
  • Worksview.reservedRegions(kind:)Reports the fold and the inner camera.
  • WorksaxisBehavior and verticalBarEdgeAdapt custom bar items to the side column.
  • BreaksUIRequiresFullScreenHonoured, but the app scales instead of being exempt.
  • BreaksPausing on sceneWillResignActiveA visible app in Split View can resign active and look frozen.
  • WorksUIApplicationSupportsMultipleScenesNew windows open on the inner display only; handle errors.
  • WorksAVCaptureDeviceDirectionCoordinatorKeeps camera apps on the right lens as the device folds.

Why UIKit apps adapt well

UIKit is fully supported on iPhone Duo, and every SwiftUI adaptive API has a UIKit counterpart. Apps built on UINavigationController, UITabBarController, and UISplitViewController get most of the adaptation automatically.

What adapts automatically

Standard containers are fully adaptive across all poses. Custom UIToolbar content is not considered for vertical bar placement, so an app that replaced the system bars with its own has more work than one that did not.

The main migrations

UIScreen.main is being deprecated on two-display devices. Read scale from traits and the screen from the window scene:

let scale  = traitCollection.displayScale
let screen = view.window?.windowScene?.screen

Safe area insets are asymmetric, so inset the rectangle rather than doubling one side:

let width = view.bounds.inset(by: view.safeAreaInsets).width

Audit userInterfaceIdiom checks. iPhone Duo reports the phone idiom with a regular-width display, so idiom-gated iPad layouts never appear. See idiom assumptions.

The new UIKit APIs

let arrangementVC = UIArrangementViewController()
arrangementVC.setViewController(playerVC, for: .primary)
arrangementVC.setViewController(upNextVC, for: .secondary)
let regions = view.reservedRegions(kind: .division)

For vertical bars, item.axisBehavior, traitCollection.verticalBarEdge, navigationItem.verticalBarCompressionBehavior, and preferredVerticalBarBehavior control placement, adaptation, compression, and opt-out respectively.

Start with the App Resizability modernization skill in Xcode 27.1, which now covers this migration. See UIKit on iPhone Duo.

Free evaluation

Want this done for your UIKit app?

We adapt existing iOS apps to iPhone Duo. Send your email and an engineer replies with what is likely to break in your UIKit 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 UIKit

Open the full checklist

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