| SwiftUI exists to solve exactly this problem - the ui is declarative and state driven. However, its predecessor UIKit is mostly imperative and it takes a lot of manual code to keep the UI reflective of the underlying data model. For this reason I find many IOS apps, and especially apple’s own, to be always mildly broken. Programming in UIKit is like programming in JQuery, or maybe Backbone at best. SwiftUI brings us to the modern age of react (but with less capabilities and more bugs) IOS developers though tend to be pretty resistant to such “modern” paradigms. If you read the rest of the discussion on this post, you fill find that even using Swift, let alone SwiftUI is still a very debated issue. Maybe the grass is greener, but I don’t find the same resistance for new ideas in the web (typescript) or Android (kotlin) communities. I do wonder if this resistance is combing from an objective evaluation of the new tech, or the lack of desire/time to learn something new. |
The newness is an issue because new SwiftUI revisions ship with new iOS releases, which means that big chunks of it are gated by the oldest iOS version you support. Jetpack Compose on Android gets this more right since it’s independent of the OS, but suffers from other tradeoffs (Java ecosystem and the rest of Android dev gives me a headache sometimes).
SwiftUI is also just missing various things that are present in UIKit, and so if you’re using those things it’s easier to write the whole app in UIKit instead of bridging those controls to SwiftUI.
I absolutely foresee going SwiftUI exclusive but realistically that’s still a few years down the road.