Has anybody else been getting experiences of navigations breaking for a random subset of customers since upgrading to Xcode 26?
Broadly, plainly the SwiftUI navigation state falls out of sync with the app state (in our case TCA) and refuses to carry out requested navigations.
We have now seen this manifest in 3 methods:
- A .
navigationDestinationinside a.sheetfails to push (however exhibits the button interplay and triggers different actions) - A
sheetinside awithViewStoreinside afullscreenCoverseems and dismisses itself (looping perpetually). - A button fails to show a popoverView, after an earlier permissions sheet appeared after which disappeared by itself earlier than I might work together with it.
- On this case I used to be capable of seize a memgraph (solely as soon as) which confirmed an orphaned/leaked
PresentationHostingController,PresentationHostingController,.HostingView UIPopoverPresentationController, and_UIPopoverDimmingView. - No popover or dimming view have been seen so I imagine this exhibits SwiftUI was interrupted and left in a damaged state.
- Claude claims this was induced by TCA reconciling state whereas the alert was seen and tearing it down indirectly that left SwiftUI out of the loop, however after I tried to induce the situation manually I could not.
- On this case I used to be capable of seize a memgraph (solely as soon as) which confirmed an orphaned/leaked
In all circumstances the button that ought to set off these navigations exhibits the consumer interplay and runs the opposite actions it triggers as anticipated. It is just the navigation that breaks.
Particulars of our app/state of affairs:
- We’ve a big complicated app with ~800 TCA reducers underneath ~50 top-level options. This ends in a fancy function and look at hierarchy.
- Nearly our complete app sits inside a tab bar, and most of that’s no less than one navDestination in.
- There is no such thing as a dependable sample throughout customers, system sorts, iOS variations, function flags, time of day, and many others
- No developer has been capable of reproduce case 1 ourselves, even with launch builds, regardless of attempting to hack the app to induce it. However it’s by far the most typical skilled by customers.
- This appears remoted to iOS 26, however extra particularly this solely happens if the app is compiled with Xcode 26.x. (now we have many hundred to 1000’s of circumstances on Xcode 26, and 0 after we shipped a model that reverted to Xcode 16.4).
- That implies it might be a compiler bug. There are a pair TCA points that do not fairly match however possibly there’s overlap in root trigger?
I’ve already posted on the TCA github, however this can be a wider SwiftUI challenge so posting right here as properly.
We’re actually working out of concepts on the right way to reliably reproduce, or what we’re doing improper that is breaking SwiftUI.
Has anybody seen comparable? Any recommendation on the right way to induce this for additional debugging? Thanks! 🙏

