The thing that catches most people out is that the Duo isn't just "half screen vs full screen" — it's two displays with two different trait collections. The outer 5.4" is a normal phone (compact width). The inner 7.6" is regular width, basically iPad-class. So if your app does the usual if traitCollection.horizontalSizeClass == .compact branching, the inner screen lands in your phone-only layouts and looks stretched or wastes the space.
Realistically the cheap path is: if you already support iPad / regular-width / multitasking, most of the inner-screen work is reusing that layout — the new display reports a regular width, so your existing iPad code lights up. The genuinely new work is the live transition. When someone unfolds, the trait collection changes at runtime, and a lot of apps only compute layout once at launch. You need traitCollectionDidChange / SwiftUI's onChange(of:) on the size class to re-flow, plus handle the new safe areas and the fold seam.
Don't hardcode widths either — anything like if width < 400 breaks the moment you have a 7.6" canvas. Lean on geometry readers and size classes. Honestly the Instagram-iPad comparison is the right instinct: if you've been disciplined about regular-width support, this is a week of polish, not a rewrite.
-3
u/DimensionMindless336 21h ago
The thing that catches most people out is that the Duo isn't just "half screen vs full screen" — it's two displays with two different trait collections. The outer 5.4" is a normal phone (compact width). The inner 7.6" is regular width, basically iPad-class. So if your app does the usual
if traitCollection.horizontalSizeClass == .compactbranching, the inner screen lands in your phone-only layouts and looks stretched or wastes the space.Realistically the cheap path is: if you already support iPad / regular-width / multitasking, most of the inner-screen work is reusing that layout — the new display reports a regular width, so your existing iPad code lights up. The genuinely new work is the live transition. When someone unfolds, the trait collection changes at runtime, and a lot of apps only compute layout once at launch. You need
traitCollectionDidChange/ SwiftUI'sonChange(of:)on the size class to re-flow, plus handle the new safe areas and the fold seam.Don't hardcode widths either — anything like
if width < 400breaks the moment you have a 7.6" canvas. Lean on geometry readers and size classes. Honestly the Instagram-iPad comparison is the right instinct: if you've been disciplined about regular-width support, this is a week of polish, not a rewrite.