I have a bone to pick with Xcode

Despite Xcode being the one and most used IDE for iOS, it is far from perfect. I have used many tools in my career and here are some features, that would make it much better or what I miss from other IDEs. I encourage others to chip in discussion and lets all hope, Apple starts to improve Xcode. Will put each issue in separate comment below.

  1. Slow debugger: not sure what bloat Xcode has or what it is doing, but sometimes it can take more than 10 seconds from breakpoint firing to actually see values. Moreover when debugging SwiftUI or something objC I have to drill down to see value of property or use po and p command and hope it works. SwiftUI views and states are a big pain to debug, to see what is changing a value I have to always use didSet trick or some other black magic. Is it too hard to make it easier? Breakpoints with condition can take up to 1 minute to load and I have M1 Max MBP. Just tried cursor IDE few days ago and breakpoints are much faster and without too much bloat in variable inspector.

  1. Editor options: AppCode, VSC have much better visual aids for easier readability of code. Cursor has even colored matching brackets, vertical guides with extensions... in Xcode I have to do mental gymnastics all the time to find proper starting or ending bracket. God forbid I have something than spans out of monitor height...

A nice touch is also some IDEs write out in grey a type of parameters or values so I don'e need to always alt+click everywhere. Below is example of nice little helpers, make code much easier and faster to read

  1. Find usages: this functionality in Xcode is so basic, that it is embarrassing. Below is example from IntelliJ how to make usages and mark them separately where we have reading and writing of values. It is for js, but it was similar in AppCode. How hard can it be?

  1. Visual debugger: debugging SwiftUI with visual debugger is in 90% useless task and waste of time. There should be some jump to view button to quickly find View that is inspected. More information about view in right pane would be more helpful. Not to mention that opening visual debugger multiple times hogs up whole RAM on mac This could be very powerful tool, but currently it is just a feature we avoid to use and to keep sanity. Also it is very slow.

AI tools. If you would like to compete with other AI tools, we will need much more than just some half broken autocomplete functionality. More than 50% of suggestions are wrong. Also model needs to be updated with new Swift features like concurrency. Memory usage. I have 64GB of RAM and sometimes it seems it is not enough. Visual debugger is eating memory like peanuts, whole debugger is slow even when using simulator (it should just read from memory?) and it seems like RAM is always an issue with Xcode. Speed, even when using M1 Max MBP, it is still very slow in some cases. Like mentioned, debuggers are very slow, it is always indexing something, and compiling SwiftUI previews... that one deserves special point.

Compiling SwiftUI previews and getting them to work. NIGHTMARE! Why did you make our lives harder wit including Unit tests to be a part of compile solution for previews? I see no sense in that decision. Compile time for previews is like: compiling all files first, then switch to indexing, pause indexing and compile 5-10% of files, rinse and repeat with indexing for about 10-20 times before either showing preview or throwing some vague error. I do not get it. first make SwiftUI framework, and then neglect all tools to make it easier and faster to use? I would understand some company with budget problems, but Apple??? How hard and expensive it has to be? Why did IntelliJ managed to make better IDE in less time and even make it more expandable with extensions? Sure Xcode has "extensions", but nothing comes close to AppCode or VSC (Cursor).

Come on Apple, get your s**t together for once and instead of making some new features or frameworks, start working on tools for developers. With better tools you will get more developers and with that more apps. Sorry for some foul words and my English, but I had to rant somewhere. I know you have many capable engineers, but looks like priorities are totally backward at the moment. Fix Xcode first, then add new features please. MXGA - make Xcode great again.

Despite Xcode being the one and most used IDE for iOS, it is far from perfect

No one ever said it was. People use Xcode to write apps for Apple's market, not because they like Xcode.

I have used many tools in my career

Perhaps that's the problem. Xcode is currently at version 16.2, and even that's not true. The original Project Builder app was 22 years old before it was discontinued. There's a whole lot of history and legacy that you seem to have missed.

Slow debugger: not sure what bloat Xcode has or what it is doing, but sometimes it can take more than 10 seconds from breakpoint firing to actually see values.

Try using print statements instead. In many cases, especially UI-related, breakpoint debugging simply isn't possible. There are far too many event loop iterations that happen in normal behaviour.

Find usages:

Have you tried "show callers"? That seems to be the equivalent functionality.

Visual debugger: debugging SwiftUI with visual debugger is in 90% useless task and waste of time.

Many of your complaints seem focused on SwiftUI. That's a delicate topic. I recommend focusing on why you're using Xcode in the first place. Because you love Xcode and SwiftUI? Or because you want access the market? Just because Apple publishes and pushes a given tool or framework, doesn't mean you have to use it.

I have 64GB of RAM and sometimes it seems it is not enough

My primary computer has 32GB of RAM and my test rig only has 16 GB. Both have no problem with Xcode. But then, the 32GB still runs Ventura and I gave up on SwiftUI a long time ago.

Compiling SwiftUI previews and getting them to work. NIGHTMARE!

Yeah. That was maybe the first thing I dumped when trying to use SwiftUI.

I do not get it. first make SwiftUI framework, and then neglect all tools to make it easier and faster to use? I would understand some company with budget problems, but Apple???

Apple runs a very tight and lean ship. The teams behind the features, frameworks, and apps are much, much smaller than you might imagine.

Why did IntelliJ managed to make better IDE in less time and even make it more expandable with extensions?

Their developer and user market share is a tiny fraction of Apple's.

With better tools you will get more developers and with that more apps

Apple has many more developers and apps than it needs.

Try using print statements instead. In many cases, especially UI-related, breakpoint debugging simply isn't possible. There are far too many event loop iterations that happen in normal behaviour.

Problem with that is always putting print or log statements all over the place, you also cannot put them on the fly as sometimes it may be hard to get into "bugged" state and then forgetting them inside or have more than 50% of whole code just print statements? No thanks. Breakpoints are there with a reason and should work. Having a framework that is undebugable is a design flaw or a major lack of tools to work with. Biggest problem is probably second one, because SwiftUI is not so new. It should be polished and have tools already.

Have you tried "show callers"? That seems to be the equivalent functionality.

Same functionality as find selected symbol but in popup. Still I cannot quickly see where reads or writes are done.

Yeah. That was maybe the first thing I dumped when trying to use SwiftUI.

Yeah good for you. I don't mind dumping something that should make our work faster. So should we just dump AI and Xcode as well and just use notepad then?

Apple runs a very tight and lean ship. The teams behind the features, frameworks, and apps are much, much smaller than you might imagine.

Maybe that is a problem?

Apple has many more developers and apps than it needs.

Maybe for now, but they are losing a grip, falling behind others. Few years ago android was total crap, but faster and faster it is overtaking iOS. Swift could be better language used on both platforms, but it seems it still lags behind.

I have a bone to pick with Xcode
 
 
Q