For iPhone Duo, should I use size classes or GeometryReader? How should I think about which one to reach for?
Asked on 2026-10-29
1 search
For iPhone Duo / resizable iPhone app layouts, think of it like this:
- Use size classes when you want to make a layout decision based on the available space class — for example, collapsing navigation, switching between compact and regular arrangements, or choosing between broad layout modes.
- Use
GeometryReaderor the surrounding view size when you need finer-grained control over the actual dimensions of a specific view.
Apple’s guidance in Modernize your UIKit app is to stop checking user interface idiom for layout decisions and to use size classes instead for sizing constraints. If you need more precision, use the view’s available size rather than scene bounds or orientation.
How to choose
A good rule of thumb:
- “What layout mode should I use?” → size classes
- “Exactly how big is this container right now?” → geometry / available size
- Avoid using:
- interface idiom
- interface orientation
- screen bounds for layout decisions
Mental model
On newer iPhone experiences, your app can appear in more contexts and sizes, so Apple wants apps to be dynamic and adaptive instead of tied to a specific device shape. Size classes are the higher-level signal; geometry is the lower-level measurement.
If you want, I can also give you a SwiftUI vs UIKit decision guide for when to use GeometryReader versus size classes.

Modernize your UIKit app
Discover the latest updates to UIKit. Learn how to update your iPhone app layouts to work great when resized with iPhone Mirroring and on iPad. Explore new APIs for tab and navigation bars, find out how to prepare your app for new Apple Intelligence capabilities, and get introduced to a skill for your coding agent of choice that helps modernize your codebase.

Platforms State of the Union
Discover the newest advancements on Apple platforms.

What’s new in SwiftUI
Explore the latest additions to SwiftUI and discover how they can improve your apps. We’ll introduce a new Document protocol with direct disk access and snapshot-based diffing for building high-performance apps; new APIs for reordering content in lists, grids, and sections; and toolbar enhancements including visibility priority and auto-minimizing behavior. We’ll also cover expanded presentation APIs — including swipe actions on any view — plus AsyncImage caching improvements and lazy state initialization for Observable types.
