Working with Multiple Versions of Xcode

App Store Preferences

Life is Not That Simple!

The version of Xcode you use to build your app has a number of important consequences.

  • It sets the base SDK version that you are building against. This can implicitly opt you in to certain OS features or device support. For example, building against the iOS 12 SDK in Xcode 10.x opts your app in to support the iPhone XS Max and iPhone XR screen sizes. Build with Xcode 9.x (against the iOS 11 SDK) and even when opened on an iPhone XS Max running iOS 12, your app will use the iPhone X resolution and be scaled to fill the larger screen. See How iOS Apps Adapt to the iPhone XS Max and iPhone XR Screen Sizes for more information.
  • For Swift code, the version of the language itself can change. This was particularly important during the Swift 2.x to 3.0 timeframe when the language underwent many significant, and incompatible, changes. Still using Swift 3? You can’t use Xcode 10.2 or higher. Upgraded your code to Swift 5? You can’t use Xcode 10.1 or lower.
  • Support for older OS versions. Xcode is quite aggressive at dropping simulator support for older iOS versions. If you want simulator support for more than the current and previous two or three major iOS versions, you often can’t use the latest Xcode release.
  • Xcode betas. At the time of writing, WWDC 2019 is about to start. If you want to start testing against beta OS versions or take advantage of new APIs, you’re going to need to use a beta version of Xcode. You can’t release app updates built with a beta version of Xcode.

Installing Multiple Versions of Xcode

For the most flexibility, the best approach is to download specific versions of Xcode manually rather than using the Mac App Store version. Apple provides download links for released versions of Xcode on its website at Between WWDC and public release, the latest beta version of Xcode can be downloaded from The link on that page for the currently released version just directs you to the Mac App store. It’s best to use the manual download. Sometimes it takes a little while for the most recent public release to become available for manual download.

  • Download. Download the .xip file.
  • Unarchive. Double click the .xip file in your Downloads folder to unarchive it.
  • Download. Download the .dmg file.
  • Install. Double click on the .dmg file. The installer suggests dragging to the Applications folder. If you already have an in /Applications (perhaps the Mac App Store version), don’t do that. Instead, drag it to your desktop.
  • Rename. Rename the file to include the version number (e.g. “”) to identify the version and to set a unique filename. Downloads of beta versions of Xcode already have a unique name and this step is not required (unless you prefer to use an alternate name).
  • Move to /Applications. Drag the file to your Applications folder.
  • Since March 2019 all iOS apps submitted to the App Store need to be built with at least Xcode 10.1 (against the iOS 12.1 SDK) in order to support the iPhone XS Max and 3rd generation 12.9" iPad.
  • From April 2020, all new apps and app updates for iPad will need to be built with Xcode 11 (against the iOS 13 SDK) in order to support the all-screen design of the 3rd generation 12.9" iPad Pro.

Command Line Tools

Developers with more complex build processes prefer to build from the command line. In more recent versions of Xcode, choosing which version of the command line tools to use can be done from the Locations tab in Xcode’s Preferences window:

Xcode Preferences
$ sudo xcode-select -s /Applications/$ xcode-select -p

Launching different Xcode Versions

Older versions of Xcode don’t like being run multiple times but this has improved since Xcode 9. I still recommend only running one version of Xcode and its simulators at once. This reduces the risk of problems and, more importantly, it ensures you don’t accidentally build (or release!) your code with an older/newer version than you intended.

About Xcode
⌘-Tab App Switcher
Spotlight Search for “xcode”


Alternatively, one of the features of my XcLauncher menu bar app is to launch a specific version of Xcode:

XcLauncher’s Open Xcode menu

Other Articles That You Might Like

If you’re an iOS developer you might be interested in my long-running series of articles that show how apps adapt to newer device sizes depending on which Xcode version they are built with:



Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Geoff Hackworth

Geoff Hackworth


Independent and freelance software developer for iPhone, iPad and Mac