Hacker News new | ask | show | jobs
by devsquid 1277 days ago
Ouch, this makes me glad I don't do iOS development anymore. XCode is such trash.
2 comments

I really don’t understand complaints with Xcode.

I been developing with iOS for 7 years straight.

My workflow: Open Xcode, open a bunch of files… write code… navigate symbols… build simulator… test code…

Sure.. I’d like if my builds were faster, and my unit tests were faster…but this is not a Xcode exclusive complaint.

But, “trash”? My workdays feel pretty smooth. I really don’t feel like I’m battling the IDE if at all.

Could you expand on your complaints?

You might be lucky that your project doesn't have a certain complexity. I'm working on multiple complex projects in the 100k loc to 500k loc range and here're some things that happen way too often:

- Auto completion completely doesn't work in some files

- Symbol lookup doesn't work (e.g. Xcode doesn't know the struct or class when I try to find information on it)

- Symbol search doesn't work (this literally never works. I've switched to using text based search for all things)

- The app compiles but Xcode still lists 3-4 compile errors in the sidebar. They stay there until I restart Xcode and clean the build folder

- Weird compile errors that disappear when I clean the build folder

- Swift Package Manager integration is awful. Change one package file, and Xcode needs 2min (where the UI is unresponsive) to reload all the packages and do some weird calculations

- Everything is slow. Searching for things, typing, the editor. Compare that to the speed of VSCode, where all interactions are super fast

- Sometimes the unit test buttons disappear (the ones that appear next to the unit test function name), which means I can't run individual tests anymore.

- Its still the case that compiler error messages are completely in the wrong place for complex type errors

- SwiftUI preview still doesn't work properly in many cases

- Sometimes Xcode needs forever to figure out that there's an error in something I wrote. Not while I'm typing, not when I've saved, only once I started compiling. Then it compiles, it fails, it needs another 5sec, and then the error message appears. That's a terrible feedback loop.

Apart from that, there's no useful plugin / extension interface. I'd like to have auto-reformat on save as a plugin, way better vim bindings (I mean, we finally got vim bindings but they're awful), bookmarks (I sometimes use disabled debugger breakpoints as bookmarks, but that's not really a feature).

There's obviously more, but here's the thing. I also work on a sizeable Rust project (60k loc), and while Rust analyser needs longer for the initial indexing of the project, everything else after that is way better than Xcode. VSCode is faster, smoother, auto completion works much more reliably, refactoring works great, the IDE already shows errors while I'm typing or right after I've saved. Also, when I save the code is formatted based on the guidelines, which is a godsend. I've tried to set up VSCode as a Xcode alternative, but the Swift sourcekit-lsp is way worse than Rust-Analyzer. Also, running and debugging is a pain then.

You covered all the bases. Might I add the crash stacktrace in Organizer is hit or miss too.
I only use it to release on iOS for flutter, every click takes 3 seconds, project files get random changes everytime and it plays badly with git, every update takes 12GB (not joking) and the app upload is so broken even apple had to release a third party upload tool to bypass it.

Just using it to compile the app to release it is very painful, I can't imagine doing any serious work with that kind of software.

I don’t work in flutter but I wouldn’t be surprised, having worked in react-native, if there isn’t a massive amount of native deps under the hood that have to be rebuilt often that are slowing things down more than your typical entirely native app. I’d look into fastlane and automating your uploads outside xcode it is not too bad to write a script to do this for you.
Yeah I tried fastlane but unfortunately it did not work, I'm still keeping a macbook in a box for releasing in the mean time.
I’m an iOS dev and yes Xcode is trash. We migrated to SwiftUI since we thought it will get us out of UIKit hell, and then it is much worse than we thought. Xcode just couldn’t handle very large complex codebase.
It basically stops working once a project gets too large.
It kind of works, yeah sometimes it crashes, like unfortunely many applications will keep on doing until industry settles on proper quality standards.