# Stop relying on supported interface orientations > The iPhone Duo inner display ignores supportedInterfaceOrientations, so a portrait-locked app is still laid out in landscape. Source: https://iphoneduosupport.com/checklist/orientation-lock-ignored/ Severity: blocker Category: layout Applies to: all Symptom: A portrait-locked app renders sideways, stretched, or with a layout it was never designed to show. Sources: https://developer.apple.com/videos/play/tech-talks/111461/ Last verified: 2026-09-09 --- Apple's guidance is explicit: the inner display **does not honor supported interface orientations**. ## Why it happens Orientation locking was always a way of saying "only ever lay out at one aspect ratio". That worked when a phone had one screen and a hinge did not exist. On iPhone Duo the user physically unfolds the device, and the app is expected to occupy the space that results. Refusing to rotate is not a meaningful answer to that, so the inner display ignores the request. If your entire layout strategy rests on the guarantee that width is always less than height, that guarantee is gone. ## The fix Replace orientation checks with size classes, which describe the space you actually have: ```swift // Before if UIDevice.current.orientation.isLandscape { … } // After — SwiftUI @Environment(\.horizontalSizeClass) private var horizontalSizeClass var body: some View { if horizontalSizeClass == .regular { WideLayout() } else { NarrowLayout() } } ``` ```swift // After — UIKit switch traitCollection.horizontalSizeClass { case .regular: applyWideLayout() default: applyNarrowLayout() } ``` The size classes to design against are: - **Inner display** — regular width × regular height, with room for a sidebar - **Outer display** — compact width × regular height, familiar iPhone territory Note that Split View multitasking changes your size class too, without any change in orientation. Size classes handle both cases with one code path; orientation handles neither. Cross-platform stacks need the same change. In React Native, replace a cached `Dimensions.get('window')` with the `useWindowDimensions()` hook so the component re-renders on resize. In Flutter, read `MediaQuery.sizeOf(context)` in `build` rather than caching it in `initState`. ## How to verify Set the app to portrait-only in the target settings, then run it on the Duo inner display and rotate. The app will rotate regardless. Every layout it produces should be one you designed on purpose. --- Published by iPhone Duo Support (https://iphoneduosupport.com). Not affiliated with Apple Inc.