So, while this announcement is sad, I can't say it's shocking. In other languages I know, IntelliJ products are significantly better than the competitors. For Swift, it's a bit more... meh.
As for performance, it’s basically like any other major macOS app now in my experience. Only caveat might be the git committing which was a bit crap still last time I checked.
IntelliJ software still feels like everything takes 100ms longer than I expect, which makes it feel sluggish even if the heavy lifting is relatively fast.
They have Fleet wich should support LSP, but i'm not sure if that product will be successful, they have a lot of work to do with regard to performance (cpu/memory), and based on the recent public preview, it's built with the wrong foundation for that matter
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?
- 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.
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.
Oh, and if at all possible avoid XIBs and storyboards and write your UI in pure code. Interface Builder was once a thing of beauty back when it was its own app, but it’s been a slow quirky mess ever since it got merged into Xcode. Code only UIs are a bit more verbose but it’s not too bad with Swift+UIKit and it’s so much less trouble, especially when you consider how much more git friendly code is than machine generated XML (merge conflicts with storyboards are nightmarish).
Doing this, I encounter little trouble with Xcode using it day in and day out. As a whole it’s smoother than my typical session in Android Studio.
AppCode team, you did such a great job IMO