Do custom bottom tab bars require special ReserveRegion insets or does the system handle tab shifting automatically?
Navigation & Safe areas
If you use a regular SwiftUI TabView, the system handles the tab bar's position and adapts it across iPhone Duo's different poses. A custom bar doesn't automatically turn into the system's side tab bar when the device folds. safeAreaInset helps keep your content clear of the usual safe areas, but the fold is a separate reserved region.
For a custom bar, check the reserved regions that intersect its layout and move the bar or its buttons when they would land under the hinge or camera. In SwiftUI, Apple shows querying these with GeometryProxy.reservedRegions(kind:), including .division for the fold. You may also need to check .occlusion for areas covered by hardware. The system's standard components already handle these areas.
Apple's guide: https://developer.apple.com/design/human-interface-guidelines/designing-for-iphone-duo
SwiftUI reserved region API: https://developer.apple.com/documentation/swiftui/geometryproxy
Thanks for this great question.
The easiest way to "reserve a region" for a custom tab bar is to use the .safeAreaInset modifier. Instead of layering your tab bar in a ZStack over your content in my personal opinion.
GeometryReader { safe in
let insets = safe.safeAreaInsets
If you use the native TabView in SwiftUI or UITabBarController for UIKit, the system handles all insets and shifting natively. But the moment you go custom, you must use .safeAreaInset(edge: .bottom).
Hope this helps.
Albert WWDR