Six iOS frameworks, each scored against the common patterns its own code can express: what already works on iPhone Duo, what breaks, what merely looks dated, and what cannot be reached without native code. Maintained by Ingenious Techlab and updated as vendors ship support.
Apple-side facts are sourced from Apple’s iPhone Duo developer material. The verdicts on third-party frameworks are our engineering analysis, because no cross-platform vendor has published iPhone Duo guidance. Each framework’s own guide shows the code behind every row.
Counts are of common patterns we checked per framework, not a severity score: a single “breaks” row can be more work than four others combined. The totals differ between frameworks because the patterns differ — a Dart widget has no UIKit equivalent to check.
What the verdicts mean
WorksThe pattern already adapts on iPhone Duo with no change.
BreaksVisibly wrong for users, or silently returns the wrong answer, until you change it.
Looks datedFunctional, but it leaves the display unused or keeps a bar where the system would move it.
Needs nativeNo API exists in this framework. Reaching it needs a native module or platform channel.
UnverifiedWe expect it to work and could not confirm it without hardware. Test it yourself.
SwiftUI
Apple ships the APIs
Needs work
.frame(width: 390)Sized for a 402 pt iPhone, on a 626 pt display.
Layout driven by orientationThe inner display ignores supported orientations.
bounds.width - insets.left * 2Insets are asymmetric; content drifts off-centre.
userInterfaceIdiom == .pad gatesiPhone Duo reports `.phone` with a regular-width display.
UIScreen.mainTwo displays at different densities; read the window scene.
Layout driven by onHingeChangeHinge angle is for interactions and effects, not layout.
SwiftUI and UIKit have first-party adaptive APIs: arrangements, reserved regions and vertical bar behaviours are all available to them, and most of the work is configuration rather than rewriting. Every cross-platform framework is, so far, on its own. None of them exposes the fold, and each needs a native module or platform channel to reach it.
That does not make them unusable. Flutter’s layout system is resolution-independent and React Native’s flexbox reflows on its own, so most screens adapt without fold-specific code. What breaks in both is the same short list: a size cached at launch, an orientation lock the inner display ignores, safe-area maths that assumes symmetry, and pausing on the wrong lifecycle event.
We would like to use Google Analytics to see which guides get read. It is off until you agree, and the site works exactly the same either way.Privacy policy.
Free app evaluation
Will your app work on iPhone Duo?
Tell us about your app and an engineer will reply with what breaks, what to fix first, and a realistic effort estimate.