On iOS 26, a nested Menu (a drill-in submenu) visibly jumps and repositions for about a second the first time a submenu is opened, when the menu lives inside a .sheet that is at any partial-height detent — .medium, or a custom .height(...)/.fraction(...) detent. Reopening the same submenu is smooth. The problem does not occur on iPad, does not occur when the sheet is at full height (.large), and does not occur for a flat (single-level) menu. It reproduces with a completely stock Menu, and also with a UIKit UIButton + UIMenu, so it does not appear to be tied to any specific app code. The trigger is purely that the sheet's presentation host is shorter than the screen — the specific detent type does not matter.
Minimal reproducible example (stock SwiftUI only)
import SwiftUI
struct MinimalRepro: View {
@State private var showSheet = false
var body: some View {
Button("Open sheet") { showSheet = true }
.sheet(isPresented: $showSheet) {
VStack {
Menu("Status") {
Menu("Category A") {
Button("Option 1") {}
Button("Option 2") {}
Button("Option 3") {}
}
Menu("Category B") {
Button("Option 4") {}
Button("Option 5") {}
Button("Option 6") {}
}
Menu("Category C") {
Button("Option 7") {}
Button("Option 8") {}
Button("Option 9") {}
}
}
.padding()
Spacer()
}
.presentationDetents([.medium, .large])
}
}
}
Steps to reproduce
- Run on an iPhone (or iPhone simulator) on iOS 26.
- Tap Open sheet. The sheet appears at the
.medium(half-height) detent. - Tap Status to open the outer menu, then tap Category A to open the submenu.
- Observe the submenu on this first open.
Expected
The submenu appears anchored to its parent item and animates in place, exactly as on iPad and exactly as on the second open.
Actual
On the first open, the submenu appears in the wrong position / at the wrong size and then jumps (snaps) into place over roughly one second. Subsequent opens of the same submenu are smooth.
Has anyone found a way to keep drill-in submenus in a partial-height sheet without the first-open jump? So far the only workarounds I've found change the UX (flatten the menu to a single level, present at full height).