Xcode Upgrades: Lessons learned

Yesterday was remarkably instructive when it comes to how badly App Store can completely mess up a download: particularly for a popular app like Xcode that’s being requested by gazoodles of people at once.


My download got stuck over and over. I had to clear out my app store caches, restart my app store daemons, and reboot my computer several times.

I ended up with a partial install that thought it was done, that installed all the “extra” components on launch, and then turned out to be a 7.2.1 install that was convinced it was 7.3. It was not.

I even cleaned up the whole install process, tossed my mangled 7.2.1, restored a copy from Time Machine (not a quick process), and tried to update again from the store.

I couldn’t use Xcode during this time to get any work done.

Screen Shot 2016-03-21 at 5.13.19 PM

I spent roughly 8 hours all told downloading, installing, and updating Xcode, much of which could have been bypassed by following two simple rules:

  1. Never update Xcode from the Mac App Store
  2. Wait until Apple posts the upload on developer.apple.com/downloads and  then update from there.

When Apple’s servers are overwhelmed they begin delivering artisanal teaspoons of hand-curated data via authentically indigenous pack animals to your computer. Apple has taken its passion for the slow data delivery movement beyond its products and introduced it into its upgrade practices.

Screen Shot 2016-03-22 at 9.43.41 AM

As part of their continuing mission to leave the world a better place, Apple delivers beautiful products using the most impact-free transmission. This commitment assures that developers are forced to stop work and smell the roses, as Apple promotes appreciation for our beautiful planet and life outside of the IDE window.

Under such circumstances, you’ll always be better off  downloading the bossy full-figured 5GB dmg than upgrading a model-thin Chanel-wearing 2.6GB differential, especially when servers are mocking you with NananaNAN completion estimates.

This is why you should always wait for a DMG. No matter how long it takes to appear on the developer site. No matter how slow the download ends up being. The advantages of downloading a DMG are numerous:

  1. It does not block you from  using Xcode during the entire day or however long it takes for your download to complete.
  2. It does not hang App Store or produce a situation where it insists on taking over the download (“Apple’s App Store download servers have a cheerful and sunny disposition. It is their pleasure to download for you using the gentle rhythms of tectonic flow and their satisfaction to keep you from getting any work accomplished, with a knowledge of a job well done.”)
  3. You can see exactly how much data has downloaded in terms of real progress and not imaginary hidden-temporary-file weird pkgs that takes over your /Applications folder and refuse to surrender that spot once active.
  4. Simple downloads are better for your resting heart rate, your blood pressure, and world peace.

Update: Final lesson. If you have downloaded the dmg directly from Apple and not from a third party source, you can run the following to skip the verification checks:

sudo xattr -d com.apple.quarantine /Applications/Xcode.app

Proceed at your own risk. Make sure you know what you’re doing and accept those risks.


  • Love this post; it mostly is true! (I saw you rant on Twitter too :P) However I successfully upgraded 4 Macs at the same time using the Mac App Store. Mainly, you have to click update, then WHATEVER the progress bar tells you, DO NOTHING! It should eventually (after an hour or two) “just work” (…)

  • FWIW, my upgrade through the app store only took a few minutes ? didn’t have to do any work tho, so no time was wasted while it was downloading. If that’s a risk, direct download does sound like a better approach.

  • I agree with your sentiments when this stuff doesn’t work. It must be based on your geographic location. (I think potentially my local ISP must cache this type data)

    I’m in Van,BC and I updated two machines with Xcode and two iOS devices. And it all worked. 10.11.4 updated, just works… all a click of a button, hot and fresh out of the door.

    That said I did one iOS device and machine at a time, since i cannot be without getting something done, i’d go nuts! 😉 Downloading the fat installer guarantees you don’t start updating without all the necessary pieces 🙂

  • I feel for you, what a pain! The frustration has driven you to new heights of eloquence, though. Your posts are always well-written but this one topped them!

  • I agree totally, had same/similar problems.

  • Generally I agree it’s probably better to download and update Xcode manually, that said my App Store upgrade was fine – it did take around eight hours to finish, but I just started it before I went to bed and it was done at the end.

  • Erica Sadun – documenting Xcode tectonic flow, so you don’t have to.

  • […] Erica Sadun: […]

  • Oh. I did the same. No problem. Downloaded all sorts of stuff overnight, finished it this morning on a different network and updated. No errors or NanananaNan.

  • Just saw your post since I was having problems downloading Xcode 7.3 through the mac app store. I kept getting a message saying the download failed. I am now downloading through the developer website. That should work.

  • I feel your pain, right on!!

  • Having had this problem in the past I can only agree. My problem with downloading the dmg’s is how the (*&*&% do you ya know what to download? Looking at /downloads now, I see 6 dmg’s since I updated to 7.2.1; do I have to download them all and install them one by one?

  • Mine downloaded, but is stuck on installing at 4 minutes for an excessively long time…

  • A friend directed me to this post. The App Store “wheel” has been rotating for one week. Still no Xcode in sight. Still no progress bar or nothing, just “update” grayed out.

  • Thank you for saving me. I mistakenly gave in to the nagging and upgraded a test device to iOS 9.3, only to find out that I could no longer debug on that device with Xcode 7.2. Kind of a problem since our project has dependencies that do not support xcode 7.3.
    Fortunately I found a method that to hopefully copy some files from a 7.3 install into my 7.2.1 install that will get me back on track, but in order to do that I needed to actually get 7.3 and the only path I’d found without your help was the app store, which was not working for me, apparently just like all the other 1 star reviewers.

    I’m fairly new to macs and iOS, about a year now, and frankly I don’t get why some people are so over the moon about apple. Their support is crap, Xcode is crap, the finder is crap. Thank god I can work mostly in Unity3d on a PC.

  • Even when using the dmg, it’s still surprisingly shit since it shoves El Capitan down your throat.
    Why would it need to update the entire OS just so you can target a version with minuscule differences is truly and baffingly beyond me.
    Also Xcode 7.3 is notably slower than 7.2 because of course it is.

  • Xcode 7.3 . At first i try again to download via Apple store.. 4 days waste and it’s restarted again. Then i use download using apple developer website and google chrome give the error.. network issue. I think apple set a timer session for download. It’s a bad idea since their server is dam slow. Sometimes 40 kbps sometime 100 kbps. Why the heck apple don’t follow standard linux update? 5.2 gb or 4.8 gb said it in website is the largest ide i been download.

  • Thank you! Been fighting with this version 7.3 for days now. Tim

  • Thank you for verbalizing my internal monologue of screams and at times pathetic whimpers as I wait and grow old for Xcode to install through the App Store! I just re-built my home desktop and need Xcode before I can install all of my other libs and tools but alas I am sitting here or making cup after cup of coffee waiting for it to install. I will never use the App Store again for this.

  • Thanks Erica, I wondered what the heck was going on with my Xcode App Store download (but this doesn’t mean I’ll forgive you for removing the classic for-loop in Swift 3)

  • I’m not sure if the download page has changed (the live URL doesn’t have an s on the end like the one in this post), but either way it just routes you through to iTunes. Follow the “See more downloads” link at the bottom of the page to find the DMG files: https://developer.apple.com/download/more/

  • If the download process worked seamlessly and quickly for any particular person who is motivated to join the conversation, that’s nice… glad to hear it… well not really. It is immaterial that out of hundreds of thousands of developers, many of whom like me, pay

    US$100 per year membership x 8 years, plus …
    phones X 3 generations X 4 family members X US$700, plus…
    machines X 1 X US$700 (Mini) plus 2 X US$1300 (children), plus
    … (the list goes on),
    too many of us spend days trying to update XCode. I was fooled enough to try a down version of Xcode that would just get me over the hump for what I wanted. Another mistake that wasted time.

    After doing the “store dance” and hanging indefinitely for the third (?) time on just this update sequence, I resorted to the DMG (now XIP) and remembered this whole nonsense from last time. Oh, yeh. It took days last time. I write this rant while waiting to stop (yes I have to wait even while attempting to stop the move of the unzipped app from Downloads to Applications). I gave up and did a coldstart; we’ll see if it corrupts even the download.

    So what I’m saying is… it doesn’t matter if it worked well for you or even 100,000 people. Or to use an analogy from my US Verizon FIOS backup battery, if 127,000 people watched a video to suppress their damn backup battery, how many people do you think had the problem? How many called for Tech Support. Can you understand why there are not enough people in the world to answer the Tech Support phones?

    So, we’re happy for you, but it has nothing to do with the problem.

  • It seems that now you can only get a DMG for the beta versions. 🙁