Xcode 9 is Unacceptable

EDIT: This post was suspended by forum moderation for unknown reasons around 2 weeks. And now (2017-12-15) activated again with original content unchanged.


I do not know where to start but Xcode 9 is a total mess, with countless bugs and performance issues.

I myself reported 7 bugs so far, and there are many more to report. But I gave up.

Why did I give up? Because I started to feel Apple does not care about us, the Developer Community, at all.

For Apple, the Developer Community is nothing more than some impressive numbers to be stated in their fancy Keynotes and blog posts.

Xcode 9 is a joke, it should not have been released at all.

Actually, it is worse than a joke, it is an insult.

Tens of thousands of developers working hard to make apps and giving life to the App Store ecosystem.

But nowadays, most of them are busy with dealing ridiculous Xcode 9 problems, instead of working on their own products.

Why? Because some people at Apple are so dedicated to ruin existing products, instead of improving them.

They choose to spend their time, money and energy on making useless stuff and creating more problems.

And they feel no shame about releasing underdeveloped and undertested products.

Apple's software quality is constantly degrading, especially last few years.

I am sure I am not the only one who can see this fact.

Along with iOS, any Apple operating system, web service or other kind of software product have unacceptable amount of problems.

From the end user viewpoint, these might be simple problems they encounter occasionally. Maybe they do not notice at all.

But from the developers viewpoint, this is serious. This is making our jobs less funny and more painful, as well as costing us time and money constantly.

Today, Apple is one of the most succesful companies in the world.

Anyone in the business clearly knows, Apple would not be at this point without iPhone.

And iPhone would be nothing without the App Store, and the App Store would be nothing without the Developer Community.

So, we want our voices to be heard.

We want people at Apple to know that they are failing their jobs and we are getting sick of this.

People at Apple!

Please show some respect to the Developer Community, and start fixing things without creating more problems.

Stop biting off more than you could chew. Develop more elaborately, and do more comprehensive testing on products before you release them.

Best regards,


Post marked as unsolved Up vote post of osmenda Down vote post of osmenda

102 Replies

Indeed. They did it in version 4, but since then it accumulated so much cruft that it would be time to redo again.

Apple should make this IDE from scratch, worse IDE i knew


Looked to Xcode and Developer program to lift this macOffice and Search dreamer to new heights. Feel ripped off for a hard-earned $Ben.

Virtually incomprehensible program. UI from ****.

Keychain and Archiving issues from the start.

Overwhelmed, underwhelmed and brought to my knees with despair.

Hopeful words welcome. Heartbroken. Lost.

Thought I'd pile on with some observations I've been writing down since the end of last year. I've been using Xcode for 7 hours a day for about 5 years now.

Xcode 10 came out a month or so ago, and what I originally wrote below is all still the case. But we have darkmode now so that's nice.

The new build system is orders of magnitude slower than the legacy build system. Instead of taking 4 minutes to build (if the weather is just right) it takes around 15 minutes for our large ObjC/Swift project. And since Xcode is still a point-oh release we have deal with nothing being remotely optimised on top of everthing from Xcode 9: I have to restart my machine at least once a day or a cannot type text into a text field.

Code suggestion is still terrible in Xcode 10, but it's more consisitently rubbish. In 9 you'd often be suggested garbage that bore a passing likeness to what you typed. In Xcode 10 it'll hide this until it has accurate results to show you. This takes no less than 10 seconds in our project for any kind of symbol. It could be a var directly above the line you are typing, it doesn't matter, you'll be staring at a blinking cursor for ages before anything shows up. For long, complicated method names (especially things like UICollectionViewDatasource methods) there is no alternative but to open Safari and Google "UICollectionViewDatasource" to get the method signature you're looking for than to start typing `minimumLineSpac..." and wait for it to show up: you can litearlly summon this information from the other side of planet earth faster than Xcode can dredge it up from your SSD. This one issue alone makes Xcode a misery to use, but it has plenty of company:

Infuriatingly long build times with Swift projects. We're talking up to 10 minutes for very large projects. During this compilation phase you will barely be able to scroll your source files because the UI thread will be constantly interrupted. Building big projects on a MBP absolutely obliterates the battery.

Bringing up the Commit dialog to commit changes beachballs Xcode for about a full minute. And then crashes it more often than not. No wonder, during WWDC 2017's Xcode developer presentation, the crowed actually laughed out loud when an engineer claimed "Xcode has robust versoin control features".

General slowness or stickiness in navigation and typing even when nothing is building and nothing indexing. It's as if the UI thread is being interrupted every three seconds.

Scrolling a source file is choppy and frequently stutters.

Scrolling a source file while the Version editor is visible is extremely choppy and unusuable while actually working on code - it's only useful for checking changes since a MacBook Pro seemingly cannot support typing text while this feature is open.

The debugger takes up to 30 seconds to print out a variable.

The debugger, by default, outputs a never ending stream of unwanted OS logs unless you disable that 'feature' in the scheme. It also somehow can't scroll reliably to the bottom, which is perhaps mostly where you'll actually want to be.

Stepping through lines can be prohibitively slow on large Swift projects. It can take literally 5 seconds to get from one line to the next and with the Xcode window and iPhone window trading focus between every step this whole feature feels repellently sluggish and heavy.

Phantom errors that don't go anywhere when you click them, or that disappear except when actively building, or they let you build anyway.

CoreData generating subclasses of NSManagedObject: no matter where I put them, what group I add them to, what folder I save them to, something always gets messed up here - files missing from the project or extra files hanging around in the root folder, or files which haven't been made part of the project for some reason.

The simulator does really not want to go to the app switching view; the timing of double clicking the home button to trigger app switching is like a frame-perfect Street Fighter 2 Turbo Plus Alpha blocking manouvre.

CMD-clicking on symbols does one of four things: 1) nothing at all, 2) shows a big dumb question mark, 3) takes you to a completely unrelated class because there is a variable/method with the same name there, 4) eventually, maybe, after several long seconds, take you to the correct var/method. It is always quicker to jump by copy & paste: Copy the class name, CMD-shift-o, paste and 90% of the time the top entry is what you want, and it takes no time.

This may sound silly, but this problem is compounded by the arrow key layout on Macbook keyboards: the up and down arrow are microscopic and surrounded on either side by gigantic left/right arrow keys, so when the suggestion menu does eventually pop up there is about a 40% chance I'll tap left instead of down and lose the menu altogether. Again, maybe silly, but whenever it happens I curse out loud at Xcode and this keyboard layout - it's a frustrating user experience to say the least.

The complete lack of any kind of descriptive error if you chooose "Automatically Generate Subclasses" for NSManagedObjects when you already have a subclass; compiles fail with duplicate file warnings because of an pre-ticked check box you might not even know exists - and the files that it generates are not visible to you anywhere in your project.

Having to hit space-backspace at the end of almost every sentence because Xcode thinks you want a tiny thumbnail of the image "blueArrow.png" from your assets folder in your line of code because you typed 'BlurredViewHelper' which has the letters B L U E in it. Because autocomplete for actual code symbols rarely works, these pointless suggestions are often the only ones you ever see. Xcode has to work to pull these from the assets folder apparently, because when things start getting busy this suggestion-of-pointless-images will actually slow your typing down. In 2018 I don't think it's unreasonably to wish for an IDE which can display letters as fast as you can type them.

The song and dance around unlocking, disconnecting, and reconnecting devices all the time. This is compounded by poor USB-C ports on MacBook Pros which disconnect if they are 1/10th of a mm out of the port; this happens dozens of times a day for me. Debugging on a device usually results in the device losing connection because of this.

Debugging on the Apple Watch is prohibitively slow, to the point where almost nobody even bothers making watch apps.

Add a folder to you project, and start typing a name for it, say "TransitionHandlers". The first letter will be entered. and then the navigation window will jump to another folder that starts with the second letter, leaving your new folder named "T".

Autocompletes paramater-less methods withtout ().

The QuickLook menu is UX infuriating. This is where you hover over a variable in code, not in the inspector in the window at the bottom. It does not show until variables have been loaded for introspection by the debugger, but it doesn't tell you this by using any kind of activity indicator; instead it will just appear to work sometimes and not work other times for no obvious reason. You end up hovering your mouse cursor over a variable like you're rubbing a magic lantern. And after you do get it to show up, it'll very likely say it can't load QuickView data for the var.

A certain number / kind of changes to a file will render SourceKit unable to figure out what's going on anywhere in that file; it cannot intelligently distinguish classes/methods.

To other member's point of how Apple's engineers can possibly suffer Xcode internally: they very probably do the vast majority of their development in Objective-C with the exception of some recent apps like Music/Podcast and some apps which _have_ to be written in Swift (for appearances) like the WWDC app. In my experience almost all of the issues I outlined above are not really an issue when developing solely in ObjC - they are occasional annoyances rather than a waking nightmare.

At this point I'm beyond frustrated with Xcode. I finish each day with a headache, exhausted, from fighting with this stuttering, broken IDE.

After updating to XCode 9 I am facing many weird issues.

1. Even after solving merge conflicts by selecting "Choose right then left" or any options "Pull" button ever enable, So everytime there is some kind of merge issue I can't solve using Xcode build in version control tool. but as soon as I deselect any file then "Pull" button get enable but now I can't recheck that file again. So it keeps me uncertainty that, "Did I lost all the work I was doing" Its too much annoying.

Is anyone else also facing the same issue, I think its a bug as its happing every time and with both the developer, I am working with.

More accurately I am using XCode 9.4.1 and the same issue I am talking about https://stackoverflow.com/questions/50175042/xcode-9-3-git-merge-issue-after-solving-conflict

My UserInterfaceState.xcuserstate gets corrupted often.

Upon xcode restart it will forget the color scheme.

or I would collapse a bunch of groups on the left side bar and after a few seconds xcode would expand them back.

Thank you for the tips.

So what do you do when Xcode crashes for the umptieth time and it asks you _again_ if you want to report it? Do you... dismiss it, or fill in a nicely and detailed description how it got there, or... get a little emotional when typing up stuff? Gotto admit, I am getting more and more in camp #3 as time goes on. Anyone has some "creative writing" examples they like to share?

my rules of xcode

1. never install a $version.0 wait for at least *.1

2. time machine current workspace on at least two separate drives

3. delete all the cache, preferences and cruft that builds up from upgrading after upgrading, there are many notorious files like com.apple.Xcode.plist which become a mess

That's not necessarily correct, perhaps only superfically true if this was a C forum, since swift is used in these parts . He could have created a new operator or overriden the type, protocol, etc

infix operator == { associativity left precedence 140 } 
infix operator =. { associativity left precedence 140 }

write strange overloading function here

It seems so simple: Make great software. That's all Apple has to do in order to stay on top. In fact, their entire eco-system (and so business model) depends on people not wanting to move away from them in any capacity: For software, for media, for everything. As soon as their user experience degrades to the point that they have a similar experience on other (cheaper) systems, there's no reason to stick around. Dear Apple, this is what we're paying for: Convenience and good user experience!

Apple automatically give themselves a step up over the competition: They control the hardware. They know exactly what hardware they're writing for, so they can always ensure that every one of their customers gets that good experience. Google/Android, Microsoft/Windows, don't have this luxury. They have to build and design something for an unlimited, unknowable number of different hardware combinations... and yet they're not offering comparable experiences to Apple!

Apple is squandering the opportunity it has to produce software that is absolutely tailored to its hardware. The one edge it has over the competition. Why can't someone at Apple see this?? We don't care about new features, we care about frustration free experiences.

If their customers don't have that, they will leave. Then there's no reason for developers to stick around to develop for them. The entire eco-system collapses!

It creates much fan noise and the amount of lag in the simulator when using a MacBook is horrendous.

Thank you for this post. As I'm sitting here late on a Friday wondering why I have to deal with a compiler that gives me segmentation faults instead of warnings on symple syntax errors in my unit tests, I get comfort in knowing I'm not alone.

Totally agree with you. Xcode is very poor.

Trying to get started with Swift on a MacPro with 16Gb RAM. I haven't found a pattern yet...but as I work through the GuidedTour.playground after every few steps of working through the tour, the IDE stays in the "Running GuidedTour" mode and hangs...no errors. If I exit Xcode entirely and launch again...after the slow startup phase, the same code works fine. This is very frutstrating...😕

This should be Productivity = 0.

== is not the same as =. This is a common beginner C programmer error.