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.
At this point, Apple could release a line of $99 drink cozies and sell out 5 minutes after they announce it. The fact that people buy what Apple sells isn't really an indication of whether the product is good or not.
I didn't call it a "flop", I said it's status as a flop doesn't correlate to how good a product is. The Butterfly Keyboard never flopped, but it also never got a legitimate competitor. People bought them because they were forced to, same as they were with Airpods and arguably the Apple Watch.
I feel the same way about a lot of Apple products. The Magic Trackpad would sell out instantly if it got a new model with USB-C - but Apple knows they can ship more Lightning cables if they avoid it. It's part of the sinister math that goes into making you and I rely on Apple's constant... ahem, Innovation.
(I agree with you, for what it's worth - Apple is weirdly slow to update some of their products; AirPods Max stand out here as missing USB-C and the lossless audio of AirPods Pro.)
You're right, and it doesn't break compatibility with USB (curse the idea of MFi on PC) which is the important part.
Still, it makes my relatively-new Magic Trackpad 2 feel old and alien. Whatever reason there was for Lightning is lost me when I can't juice my peripherals up with the same cable that charges my Macbook.
I take it you mean flop differently than a successful product from a business and profit perspective. Like a comedian can flop around on stage in a hilarious bit of slapstick humor which you might call a successful flop. But the two hour comedy special the slapstick is part of might be panned by critics and audiences and that would be a flop of an entirely different sort.
Certainly. Having requirements set in stone helps rewriting any code base. They probably get more time for optimization with the language handling a lot of the security and correctness issues as well as future changes.