Xcode is fine as long as you don’t have a ton of Obj-C ↔ Swift bridging going on and avoid XIBs/Storyboards, with writing UIKit in pure code being the most stable option (SwiftUI still needs some time in the oven). Writing idiomatic Swift also helps (code smells like deeply nested closures can make SourceKit grumpy).
I’ve spent countless hours working in it and crashes and errors have been rare for years now. Especially since ditching CocoaPods in favor of Swift Package Manager for dependencies, I’ve found that Android development to be considerably more frustrating with the mess of Gradle and Proguard paired with the surprisingly anemic Android Framework. Jetpack Compose is thankfully replacing Android Framework and is a major improvement, but from time to time Gradle and Proguard make me want to tear my hair out.
I briefly worked on a swift app that had just a login screen and a background process, so no Storyboard stuff. It was still so horribly, horribly buggy, it starts getting comical. When turning to seasoned full-time iOS developers, they would just shrug it off as a normal thing. It constantly needs to be restarted, and actions retried. An insane amount of "clicking around". It was a complete joke, I cannot fathom that some people just take it as state of the art.
I tried the IntelliJ IDE, which didn't feel so shoddy, but in turn has a lot of other problems that boil down to not being the "blessed" solution.
It’s not that I’m shrugging bugginess off, I legitimately am not encountering these things. I restart Xcode maybe once every 1-2 weeks, if that. Maybe I’ve just learned how to not anger it?
Android Studio (IntelliJ) on the other hand I’ve run into mysterious things with fairly frequently, like it failing to install the app on the connected phone after hitting run for no reason or builds failing with bogus errors, requiring a project clean to fix. Its “smart” refactoring tools also can’t always be trusted to do the right thing, at least where XML UI layout files are concerned.
It makes sense that UIKit is more solid, because not only does it have 17 years of its own history, but builds upon the legacy of AppKit which stretches back another 20 years. By comparison SwiftUI is still quite young.
Haven’t touched Flutter because Material Design feels weird on iOS, its Cupertino theme isn’t great, and I’m not the type to reinvent the wheel on UI design in the apps I work on. Also don’t really feel like picking up a language, toolchain, and ecosystem for a single UI framework.
We just started migrating our app to Jetpack after migrating our iOS to SwiftUI, so far Jetpack has been more fun. The problem is just the horrible Android documentation and starter tutorial which it is more video centric, I hate it.
I’ve spent countless hours working in it and crashes and errors have been rare for years now. Especially since ditching CocoaPods in favor of Swift Package Manager for dependencies, I’ve found that Android development to be considerably more frustrating with the mess of Gradle and Proguard paired with the surprisingly anemic Android Framework. Jetpack Compose is thankfully replacing Android Framework and is a major improvement, but from time to time Gradle and Proguard make me want to tear my hair out.