@astro-spacecadet, did you ever find a workaround or file a Feedback for this? If you have an FB number, I'd like to reference it in mine.
I'm hitting exactly this in a production watchOS app (Apple Watch Ultra 3, watchOS 26.6): alerts present and dismiss normally on tap, but their button closures never execute - combined with every screen-transition animation going dead (pushed views snap into place, the nav-bar clock gets stuck mid-transition position). One difference from your case: mine heals on a true scene .background transition (crown press), no force-quit needed. With an active HKWorkoutSession the app never backgrounds on its own, which is why the broken state can persist for an hour of real use.
I instrumented every alert (present / action-fired / dismiss edges) plus sheet lifecycle events, and caught a full wedged session in the field. Findings:
44 consecutive alert present→dismiss cycles with zero actions fired, across 4 different alerts on 3 different presenters - including one attached directly at the NavigationStack root. So it's the scene's entire modal layer, not a particular view, binding, or spot in the hierarchy.
Everything else keeps working while wedged: plain Button actions (the buttons that raise the alerts demonstrably ran every time), NavigationStack pushes, onChange observers, even HealthKit hardware-button pause/resume. Only closures of buttons inside alerts are dropped.
Trigger correlation, likely but not deterministic: the wedged session began with a sheet dismissed programmatically (a timer clears its item binding) while the scene was .inactive - wrist down, display off. Its teardown completed ~190 ms after the binding cleared, with the scene reactivating mid-teardown - too fast for the dismissal animation to have run. A control session on the same build with the byte-identical start (same programmatic dismissal, also initiated while .inactive) stayed healthy for the whole outing - but there the animated dismissal ran fully after the scene became active again (~730 ms). So it looks like a race in the presentation layer's animation/transaction handling when a modal teardown straddles a scene-phase change, which would fit your observation that it's unreproducible on demand.
Does your flow also involve a modal being dismissed programmatically, or while the display is off? And if anyone else has hit this. I'd love to hear whether that pattern matches your case too.
Filed as FB24311744, with the full instrumented event logs of both the wedged session and the clean control attached. If anyone from the SwiftUI/watchOS team sees this: is this a known issue, and is there anything else worth capturing the next time it happens live?
Topic:
UI Frameworks
SubTopic:
SwiftUI