I am observing inconsistent pointer hover behavior for a SwiftUI Menu placed inside a ToolbarItem on iPadOS 26.2 (real device).
Scenario:
• Screen A is pushed inside a NavigationStack. • Screen B is presented as a sheet (with its own NavigationStack). • Both screens contain the same toolbar Menu item using an SF Symbol (arrow.up.arrow.down).
Observed behavior:
- In the pushed view, hover is mostly stable.
- In the sheet-presented view, the SF Symbol visibly shifts/jumps when pointer hover activates.
- The hover highlight shape differs from the native navigation back button.
- Label-level hoverEffect modifiers do not stabilize the behavior.
Minimal example:
import SwiftUI
struct ContentView: View { @State private var showSheet = false
var body: some View {
NavigationStack {
VStack {
Button("Open Sheet") {
showSheet = true
}
}
.navigationTitle("Home")
.toolbar {
ToolbarItem(placement: .topBarTrailing) {
Menu {
Button("Option A") { }
Button("Option B") { }
} label: {
Image(systemName: "arrow.up.arrow.down")
}
}
}
.sheet(isPresented: $showSheet) {
SheetView()
}
}
}
}
struct SheetView: View { var body: some View { NavigationStack { Text("Sheet View") .navigationTitle("Sheet") .toolbar { ToolbarItem(placement: .topBarTrailing) { Menu { Button("Option A") { } Button("Option B") { } } label: { Image(systemName: "arrow.up.arrow.down") } } } } } }
This behavior is reproducible 100% on device.
Is this expected behavior for Menu inside ToolbarItem when presented as a sheet, or a regression in pointer interaction rendering?