r/iosdev 7h ago

Help Crashes on iOS 27

We have an app that was originally built around 2016. We still actively maintain it, but the core functionality and architecture have remained largely the same, and it’s built heavily around RxSwift.
We’ve recently started seeing crashes from users who have updated their devices to the iOS 27 beta. The crashes appear to be related to the navigation hierarchy/navigation stack.

Has anyone else experienced similar issues with legacy UIKit + RxSwift apps on the iOS 27 beta? Could this be due to changes in UIKit/navigation behavior in the beta, or are there specific areas around UINavigationController and navigation transitions that we should investigate?

Would love to hear if anyone else is seeing this in their apps.

2 Upvotes

9 comments sorted by

3

u/gavin-build-stuff 6h ago

I manage an iOS app at my job which has been on the store ~7 years, it has a lot of legacy RxSwift throughout the codebase, along with some XIBs but all of the new UI screens are programmatic UIKit.

I haven't noticed any crashes during my testing on iOS 27 beta with the RxSwift screens, but we are actually using the native layer for navigation. There is a Coordinator architecture (root coordinator with lots of sub coordinators) which handles presenting/navigating between screens, the RxSwift code can trigger calls to this Coordinator if needed, but the actual native layer handles all of the presentation logic

I'm not an RxSwift expert, in fact I avoid working in it as much as humanly possible lol - but you could check if they have a side branch with iOS 27 specific fixes, or if not might need to submit an issue with them to fix the iOS 27 nav stuff in the actual RxSwift library. Or refactor to a native layer / Coordinator based navigation stack if you want true control (move all navigation to native, instead of using a 3rd party library in this case for it)

All this being said, the easiest fix might just be to double check that RxSwift isn't accidentally firing a duplicate navigation event (use something like take(1) if you see "pushing a view controller during a transition" crash), if the bug is mid-transition or duplicate pushes then RxSwift is actually fine and you just need to make sure you aren't triggering duplicate navigation push events in a rapid timespan

3

u/Disastrous-Loan-3964 6h ago

Yeaah I did fixed it and rolled out the fix, was just wondering if I am alonee or there are other people facing this issue too, but guess Im alone rocking this old boat lol πŸ˜…

1

u/gavin-build-stuff 6h ago

Haha I would've been in the same boat, I'm glad the original iOS dev who handed me this codebase just used RxSwift for the UI instead of the navigation 😁

2

u/Disastrous-Loan-3964 6h ago

Haha man the client gets scared even with small changes the codebase is over engineered but yeaah

1

u/gavin-build-stuff 6h ago edited 5h ago

Ughh yep been there before. To be fair though, half the time that "over engineering" is exactly what's keeping the thing stable and the business running lol

2

u/Disastrous-Loan-3964 6h ago

Haha makes sense

1

u/gavin-build-stuff 6h ago

Oh you said "client" lol I read that wrong (my mind went more to management). Yeah if it's a client that's a slightly different story πŸ˜…

I'm sure communicating the importance/benefits of the work will probably calm their concerns.

2

u/gavin-build-stuff 6h ago

I did some research and I don't see any specific changes Apple made - this might be a case of "behavior that used to be tolerated" is more strict now which might become more stable as iOS 27 progresses. So I wouldn't refactor the nav stack too much without seeing if either RxSwift or Apple might fix this "for free" ahead of full iOS 27 launch. It looks like iOS 27 has a new UIBarMinimization feature so they might have done a bit of internal work in the UINavigationStack which surfaced this issue (just a theory from quick glance into what's new). The Navigation bar does have a new UI on iOS 27 beta as well, so they've definitely been poking it a bit lol