Xcode is the Mac app that developers use to create apps for Apple’s platforms, like iOS. In this tutorial, you’ll learn how you can download and install Xcode on your Mac.
Here’s what we’ll get into:
- 3 approaches to download and install Xcode on your Mac
- Tips and tricks to keep your Xcode up-to-date
- How to install Xcode betas on your Mac
Ready? Let’s go.
Xcode can only be installed on a Mac. Want to build apps with a PC? Check out your alternatives here.
How To Download Xcode for macOS
How do you download Xcode for macOS? You’ve got a few options:
Introducing Xcode 12. With an all-new design that looks great on macOS Big Sur, Xcode 12 has customizable font sizes for the navigator, streamlined code completion, and new document tabs. Xcode 12 builds Universal apps by default to support Mac with Apple Silicon, often without changing a single line of code. Version Release Build Released Requires macOS SDKs. Xcode 11.0: Beta 1: 11M336w: 3 Jun 2019: macOS 10.14.4+ 10.15 (19A471t) 13.0 (17A5492t) 6.0 (17R5491t) 13.0.
Apple has finally released the brand new IDE for iOS, MacOS and iPadOS developers: Xcode 11.I have to admit, it looks pretty good, more like a stable development environment than before.
- Get Xcode via the Mac App Store
- Download Xcode via developer.apple.com/downloads
- Install through Mac App Store CLI (see below)
Let’s walk through the approaches you can use to download and install Xcode on your Mac, and their advantages. We’ll start with the Mac App Store, because that’s the simplest option.
Here’s how you can download and install via the Mac App Store:
- Make sure you’re logged into macOS with your Apple ID
- Open the Mac App Store app
- Search for “xcode” in the search field, at the top-left
- Click on the Xcode app item that appears
- Click on the Get or Install buttom at the top-right to download and install Xcode
There are a few things you should know, though. Xcode is a huge app, about 7 gigabyte (GB) in size. You’ll need about 15 GB of free space on your Mac to install Xcode this way.
Installing via the App Store is simple, easy and seamless. Unfortunately, issues with downloading, like a lost connection, etc., usually means you’ll have to reattempt the download.
Author’s Note: Installing Xcode via the App Store never maxes out my download speed — not even close. On a 500 Mbps fiber line, it regularly drops down to 200 KB/s.
Learn how to build iOS apps
Get started with iOS 14 and Swift 5
Sign up for my iOS development course, and learn how to build great iOS 14 apps with Swift 5 and Xcode 12.
Installing Xcode on Mac
Installing Xcode via the Mac App Store is as simple as clicking Install. However, there’s an approach that gives you more control: developer.apple.com/download.
Here’s how that works:
- Go to developer.apple.com/download and log in with your Apple ID
- Click on More in the top-right of the page, next to Beta and Release
- In the search field on the left, type “xcode” and press Enter
- Locate and click the appropriate version of Xcode in the list
- In the panel slides out, click the
.xip
filename, i.e. Xcode 12.xip and save/download that file onto your Mac
This will download a .xip
file, which includes Xcode. The download size is currently about 7 gigabyte (GB). You’ll need at least twice that size of free storage on your Mac to install Xcode with this approach. Downloading Xcode this way is often faster than through the Mac App Store.
Once you’ve downloaded Xcode, open and unzip the .xip
file. This may take a while. You can then drag-and-drop the Xcode.app
file to your ~/Applications
folder. Finally, start the Xcode app. You’ll be greeted with the following prompt:
Click Install in this prompt. Xcode will now attempt to install the Xcode Command Line Tools on your Mac. They are CLI tools used to compile apps with Xcode, among other things. You often need these tools to work with other programming languages on Mac, as well.
A disadvantage of manually installing Xcode through the Developer portal is that Xcode won’t automatically update. This isn’t necessarily a bad thing, however, because you can use this approach to install multiple versions of Xcode side-by-side. This is helpful for debugging or trying out beta versions of Xcode (see below).
There’s another, more hidden benefit. Installing Xcode through the Mac App Store limits you to the most recent version of Xcode. If your version of macOS or Mac OS X doesn’t support the latest version of Xcode, you can usually install older versions via developer.apple.com!
You can pinpoint the latest version of Xcode that your Mac supports by cross-referencing a few tables on Wikipedia. First, figure out what macOS version you have. Then, go to the Xcode wiki, and find your version of macOS in the min macOS version to run column between Xcode 9.x and 12.x. The version of Xcode you can run is in the row above the one you found. For example, the latest version of Xcode you can run on macOS 10.13.6 (High Sierra) is Xcode 10.1. Keep in mind that running an older version of Xcode often limits for which iOS, Swift and SwiftUI versions you can build.
Updating Xcode to The Latest Version
How do you keep your Xcode up-to-date? Apple regularly releases new versions of Xcode. They typically include bug fixes and performance improvements, as well as new Xcode features, like the minimap.
More importantly, new Xcode versions include new versions of the iOS SDKs, Swift and SwiftUI. You can only use these new technologies with the latest versions of Xcode.
You can update your Xcode to the latest versions like this:
- If you’ve installed Xcode via the App Store, updates happen automatically, or you can manually initiate an update in the Updates tab of the app
- If you’ve manually installed Xcode via developer.apple.com, you’ll also need to manually install the newer version; updates aren’t automatic
How do you know if Xcode has a new version?
- You get a notification on your Mac (if installed via App Store)
- Keep an eye on developer.apple.com/news/releases (official)
- Check out xcodereleases.com
- Follow @XcodeReleases on Twitter
By the way, there’s a 3rd way to download and install Xcode on your Mac. It’s called mas-cli, and it’s essentially a Command Line Interface (CLI) wrapper for the Mac App Store. It uses the App Store – from the command line… Nice!
You can install mas-cli
via Homebrew, a package manager for Mac. Installing mas-cli
via Homebrew happens like this:
You can then list apps installed through the App Store on your Mac, with:
You can then search for Xcode like this:
Then, copy the numerical code you see on screen to install Xcode:
You can find outdated apps with mas outdated
. You can then upgrade all outdated apps with mas upgrade
, or selectively update Xcode by its identifier:
Awesome!
Author’s Note: As I understand it, you’ll need to have installed an app via the App Store before you can install it again with mas-cli
.
Getting Xcode Beta Versions
Apple regularly releases beta versions of upcoming software, like iOS, macOS and Xcode. This enables developers to try out new features before they become available to the general public, and provide feedback and bug reports back to Apple.
How can you download and install Xcode’s beta versions? Here’s how:
- Go to developer.apple.com/download and log in with your Apple ID
- Choose one of the following:
- Click Beta in the top-right:
- Select Applications
- Locate the featured Xcode beta you need
- Click Download
- Click More in the top-right
- Use the search field to find “xcode”
- Locate the Xcode beta you need
- Expand the panel by clicking on it
- Click the
.xip
to download
- Click Beta in the top-right:
- Once you’ve got a
.xip
, unzip it, copy the.app
to your~/Applications
folder, and start the Xcode app.
As we’ve discussed before, you can install multiple versions of Xcode side-by-side with this approach. You can, for example, have the regular Xcode installed via the App Store, and install a beta version of Xcode next to it.
You don’t need to have a paid Developer Account to install betas of Xcode. Just use the free Apple Developer Account. It can occasionally happen that Apple restricts beta software to paid subscribers only, however.
If you’re installing multiple Xcodes, change their filenames to reflect their versions. That makes it easier to tell them apart! Just so you know: when you switch between installed Xcode versions, you usually get that “Install additional components” prompt again. There are ways around that, but it’s simplest to just let it install again whenever Xcode needs to.
Learn how to build iOS apps
Get started with iOS 14 and Swift 5
Sign up for my iOS development course, and learn how to build great iOS 14 apps with Swift 5 and Xcode 12.
Further Reading
Managed to install Xcode on your Mac? Awesome! Now you know how to install Xcode’s betas next to it, and keep everything up-to-date. Here’s what we discussed in this tutorial:
- 3 approaches to download and install Xcode on your Mac
- Tips and tricks to keep your Xcode up-to-date
- How to install Xcode betas on your Mac
Want to learn more? Check out these resources:
-->System Requirements | What's New | Known Issues | Blogs | Open Source
To see installation instructions for both Visual Studio for Mac and Visual Studio 2019, please visit https://docs.microsoft.com/en-us/xamarin/get-started/installation
Requirements
- The latest features and APIs require Xcode 11 and the bundled iOS, tvOS and watchOS SDKs
- Apple Xcode 11 requires a Mac running macOS 10.14.4 (Mojave) or newer
- Visual Studio 2019 or Visual Studio for Mac
What's New in this Release
Support for Xcode 11
For more information you can consult the Xcode 11 release notes from Apple.
Support for iOS 13 and iPadOS 13
See our API diff to browse the latest changes.
For more information you can consult the iOS & iPadOS 13 release notes from Apple.
Support for tvOS 13
See our API diff to browse the latest changes.
For more information you can consult the tvOS 13 release notes from Apple.
Support for watchOS 6
See our API diff to browse the latest changes.
For more information you can consult the watchOS 6 release notes from Apple.
Support for uploading iOS, tvOS and watchOS Apps to iTunes Connect
Starting with Xcode 11, Apple stopped distributing Application Loader
, which was used to publish Apps to the iTunes Connect website.
We updated our MSBuild tasks to make use of a new tool shipped with Xcode: altool
.
This is a necessary step for the IDEs to continue providing the ability to publish Apps to the App Store.
Release History
This version of Xamarin.iOS corresponds to our xcode11
milestone and is based of the 16.2 release.
- September 12, 2019 - Xamarin.iOS 13.0.0.19
- September 3, 2019 - Xamarin.iOS 12.99.4.26
- August 21, 2019 - Xamarin.iOS 12.99.3.5
- August 7, 2019 - Xamarin.iOS 12.99.2.40
- July 25, 2019 - Xamarin.iOS 12.99.2.26
- July 10, 2019 - Xamarin.iOS 12.99.1.27
- June 27, 2019 - Xamarin.iOS 12.99.0.159
September 12, 2019 - Xamarin.iOS 13.0.0.19
Tip
This version can be used to submit Apps to the App Store.
This seventh preview is based on Xcode 11 GM. More frameworks and API are now available. Future releases will include additional API as they become available.
Updated frameworks
- 6852 - AVFoundation
- 6972 - ClockKit
- 6919 - CoreAudioKit
- 6896 - CoreData
- 6943 - CoreHaptics
- 6973 - CoreLocation
- 6908 - CoreMidi
- 6976 - CoreText
- 6897 - ImageIO
- 6934 - MapKit
- 6956 - MetalKit
- 6969 - MetricKit
- 6930 - ModelIO
- 6978 - StoreKit
Enhancements
- 6921 - [Foundation] Expose the usage of cellular data in the
NSUrlSessionHandler
. It can sometimes be useful to turn this off and it was not easy with the existing implementation. - 6942 - [MediaPlayer] Enable API that depend on AVFoundation types for watchOS.
- 6947 - [Versions] Add iOS/tvOS 12.3 & 12.4 as well as watchOS 5.3 to our versions files so we offer those options in the IDEs.
Issues
- 6906 - Updated mono to include workaround for broken Hebrew and other non-Gregorian calendars.
- 6926 - [package] Rename bundle identifier for the frameworks we ship. Apple added an App Store check to reject Apps with multiple frameworks with the same bundle identifier.
- 6899 - [mlaunch] Fix issues launching/installing with the watch simulator.
- 6948 - [UIKit] Make
UITraitCollection
thread-safe.
September 3, 2019 - Xamarin.iOS 12.99.4.26
This sixth preview is based on Xcode 11 beta 7. More frameworks and API are now available. Future previews will include additional API as they become available.
New frameworks
This preview includes the following updates to existing frameworks (all API updated to beta 7 unless noted)
- 6874 - Network (new in watchOS 6.0)
Updated frameworks
- 6748 - AVKit Community Contribution ❤️
- 6678 - CarPlay
- 6858 - CoreMedia
- 6822 - CoreVideo
- 6867 - Security (Partial Update)
- 6837 - Vision
- 6844 - VisionKit
- 6882 - WatchKit
Other changes
- 6878 - Bump the minimum iOS version to 7.0. Deprecation ℹ️
- 6850 - [registrar] Fix verification of generic parameters to accept unrelated generic types
- 6819 - [authenticationservices] Remove [Abstract] from
ASAuthorizationPasswordRequest
- 6864 - [runtime] Build native code with -std=c++14. This is required by Apple to compile headers in C++ mode
- 6855 - [mtouch] Detect when we run into the 32-bit arm size limitation, and report a better error
- 6859 - [generator] Reference bound
Appearance
types usingglobal::
syntax - 6880 - [Foundation] Ensure that the collection is not modified during the loop
- 6872 - [UIKit] Fix threading issue in the selector
performAsCurrentTraitCollection
August 21, 2019 - Xamarin.iOS 12.99.3.5
This fifth preview is based on Xcode 11 beta 6. More frameworks and API are now available. Future previews will include additional API as they become available.
Updated frameworks
This preview includes the following updates to existing frameworks (all API updated to beta 6 unless noted)
- 6804 - AuthenticationServices
- 6771 - ContactsUI
- 6784 - CoreML
- 6731 - CoreText
- 6751 - EventKit Community Contribution ❤️
- 6746 - ExternalAccessory
- 6759 & 6801 - FileProvider[UI]
- 6754 - Foundation
- 6773 - GameKit
- 6710 - HomeKit Community Contribution ❤️
- 6780 - iAd
- 6733 - MediaAccessibility
- 6741 - NaturalLanguage
- 6788 - NetworkExtension
- 6743 - PdfKit
- 6789 - QuicklookThumbnailing
- 6803 - ReplayKit
- 6767 - SafariServices
- 6760 - StoreKit
- 6807 - UIKit
- 6800 - VideoSubscriberAccount
August 7, 2019 - Xamarin.iOS 12.99.2.40
This fourth preview is based on Xcode 11 beta 5. More frameworks and API are now available. Future previews will include additional API as they become available.
Updated frameworks
This preview includes the following updates to existing frameworks (all API updated to beta 5 unless noted)
- 6718 - AuthenticationServices
- 6589 - GameController
- 6692 - HealthKit
- 6625 - IntentsUI Community Contribution ❤️
- 6719 - PassKit
- 6705 - SoundAnalysis
- 6717 - UIKit
- 6645 - VideoToolbox Community Contribution ❤️
Other changes
- 6703 - [UIKit] Add [BindAs] UIWindowSceneSessionRole to fix casting error
July 25, 2019 - Xamarin.iOS 12.99.2.26
This third preview is based on Xcode 11 beta 4. More frameworks and API are now available. Future previews will include additional API as they become available.
Updated frameworks
This preview includes the following updates to existing frameworks (all API updated to beta 4 unless noted)
- 6608 - ARKit
- 6617 - AuthenticationServices
- 6581 - CallKit
- 6563 - Contacts
- 6582 - CoreAudioKit
- 6600 - CoreLocation
- 6513 - CoreMedia partial update
- 6576 - CoreTelephony
- 6562 - CoreText partial update
- 6538 - Foundation
- 6596 - MediaPlayer
- 6579 - NotificationCenter Community Contribution ❤️
- 6612 - PencilKit
- 6521 - Photos
- 6624 - PhotosUI
- 6610 - ReplayKit
- 6577 - SpriteKit
- 6553 - UIKit
Other changes
- 6619 - [authenticationservices] Fix
ASAuthorization
andASAuthorizationRequest
- 6609 - [corenfc] Fix typo in
wellKnownTypeTextPayloadWithString
- 6637 - [generator] Do not use hardcoded
error
var name, use the one in the declaration - 6529 - [package] Fix dialog when installing on 10.15
- 6493 - [registar] Fix
NSURLsessionDelegate
issues
July 10, 2019 - Xamarin.iOS 12.99.1.27
This second preview is based on Xcode 11 beta 3. More frameworks and API are now available. Future previews will include additional API as they become available.
New frameworks
This preview includes the following new frameworks (all API updated to beta 3)
- 6438 - BackgroundTasks
- 6437 - LinkPresentation
- 6491 - PencilKit
New CoreImage filters
A new CoreImage filter:
- 6480
CIRoundedRectangleGenerator

Updated frameworks
This preview includes the following updates to existing frameworks (all API updated to beta 3 unless noted)
- 6482 - AuthenticationServices
- 6460 - ARKit
- 6434 - AudioToolBox
- 6434 - AudioUnit
- 6470 - CallKit
- 6512 - CarPlay
- 6508 - ClockKit
- 6472 - CloudKit
- 6475 - CoreBluetooth
- 6511 - IdentityLookup
- 6510 - IdentityLookupUI
- 6499 - JavaScriptCore
- 6457 - MediaAccessibility
- 6447 - PassKit
- 6479 - QuickLook
- 6483 - ReplayKit
- 6440 - Speech
- 6481 - VideoSubscriberAccount
- 6496 - WKWebKit
Other changes
- 6484 - The
IncomingCallNotifications.framework
was removed from Xcode 11 beta 3 - 6505 - [coremidi] Fix creating a native
MidiThruConnectionParamsStruct
June 27, 2019 - Xamarin.iOS 12.99.0.159
This first preview is based on Xcode 11 beta 2. Many of the new API are already available. Future previews will include additional API as they become available.
New frameworks
This preview includes the following new frameworks (all API updated to beta 2)
- 6374 - IncomingCallNotifications
- 6415 - PencilKit
- 6351 - SoundAnalysis
New CoreImage filters
New CoreImage filters includes:
CIDocumentEnhancer
CIGaborGradients
CIKMeans
CIKeystoneCorrection
CIKeystoneCorrectionCombined
CIKeystoneCorrectionHorizontal
CIKeystoneCorrectionVertical
CIMorphologyRectangle
CIMorphologyRectangleMaximum
CIPaletteCentroid
CIPalettize
CIPerspectiveRotate
Updated frameworks
This preview includes the following updates to existing frameworks (all API updated to beta 2)
- 6408 - AuthenticationServices including Sign In with Apple support
- 6405 - ClockKit
- 6397 - CoreAnimation
- 6337 - CoreGraphics
- 6358 - CoreImage partial update, new filters only
- 6419 - CoreMotion
- 6370 - CoreNFC
- 6433 - JavaScriptCore
- 6404 - MediaLibrary
- 6377 - MessageUI
- 6432 - PushKit
- 6367 - ReplayKit
- 6396 - TVMLKit
- 6391 - TVServices
- 6378 - TVUIKit
- 6392 - UIKit partial update
- 6355 - UserNotifications
- 6292 - WKWebKit
Enhancements
- 6389 - Improve bindings for
NWProtocolMetadata
to more gracefully report incorrect usage
Known Issues
- 6333 - Unable to use
PhotosUI
as framework's header can not compile.
AOT-compilation for 32-bit architectures fails on macOS 10.15 Catalina
AOT-compilation for 32-bit device architectures (ARMv7, ARMv7s and ARMv7k)does not work on macOS 10.15 Catalina.
This will be fixed in a future release.
For more information see issue #6925.
Installing on macOS 10.15 Catalina
You might get a security dialog before the installer can be executed. This will be fixed in a future preview. Additional information can be found here.

Using an older Xcode version
Using an older Xcode version (than the one mentioned in the above requirements) is often possible. For more information see the following documentation.
API Diff
The following documents contains a complete list of the API changes since the Xamarin.iOS 12.14 release:
Integrated Mono Features/Fixes
Xamarin.iOS uses a customized runtime and base class libraries (BCL) fromMono 6.0Commit 537654c
Feedback
Xcode 11 Latest Version 10.13
Your feedback is important to us. If there are any problems with this release, check the Xamarin.iOS Forums and Github Issues for existing issues. If you do not find any matching issue, please feel free to start a new discussion and report an issue.
Open Source
Xcode 11 Latest Version 64-bit
Xamarin.iOS is based on the following open-source repositories:
- xamarin-macios branch
xcode11
- mono branch
2019-02
Contributors
A big Thank You! to external contributors who made improvements in this release:
