Auto Layout is a good baseline, but a few UIKit things commonly break on Duo even in Auto Layout apps.
First, reading the size once at launch (UIScreen.main.bounds, a cached width) goes stale when the window resizes. Apple lists "Reading size once at launch" as an anti-pattern: https://developer.apple.com/iphone-duo/prepare/
Second, branching on userInterfaceIdiom. Apple says the idiom stays .phone, so use size classes (outer display compact width, inner display regular width): https://developer.apple.com/design/human-interface-guidelines/designing-for-iphone-duo
Third, the fold and cameras are reserved regions. UIView.reservedRegions(kind:options:) returns them, and UIKit tracks the regions you read in updateConstraints(): https://developer.apple.com/documentation/uikit/uiview/reservedregions(kind:options:)
Fourth, the SDK you build with changes what the app gets (iOS 26 SDK: centered, iOS 27 SDK: fills the screen but avoids the status bar, iOS 27.1 SDK: edge to edge), so rebuild with Xcode 27.1 and test in Device Hub.
I put a free, MIT-licensed checklist and a static scanner that flags these patterns in a Swift project together here, with every claim linked to an Apple page or labelled third-party: https://github.com/ilan-uzan/duo-ready (I'm the author.)
Topic:
UI Frameworks
SubTopic:
UIKit
Tags: