Xcode is the complete developer toolset used to create apps for Apple TV, Apple Watch, iPad, iPhone, and Mac. Xcode 11 includes everything you need to create amazing apps for all Apple platforms. Includes the latest SDKs for macOS 10.15, iOS 13, iPadOS 13, watchOS 6, and tvOS 13.
- Jump to "What's new in Xcode 11.1?"
- Jump to "What's new in Xcode 11.2?"
- Jump to "What's new in Xcode 11.3?"
- Jump to "What's new in Xcode 11.4?"
- Jump to "What's new in Xcode 11.5?"
- Jump to "What's new in Xcode 11.6?"
- Jump to "What's new in Xcode 11.7?"
Supported Configurations
- Xcode 11 requires a Mac running macOS 10.14.3 or later.
- Xcode 11 includes SDKs for iOS 13, iPadOS 13, watchOS 6, macOS 10.15, tvOS 13 and Swift 5.1.
- Xcode 11 supports running multiple concurrent versions of the Xcode app and of any associated tools such as Simulator.
- Xcode 11 can coexist with previous versions of Xcode.
SwiftUI
-
Xcode 11 includes SwiftUI, a new Swift framework to provides views, controls, and layout structures for declaring your app's user interface.
-
Xcode 11 provides design tools to make it as easy as drag-and-drop to construct or edit UI, all in the same Swift code file you can also edit by hand.
-
We can share common UI code across all Apple platforms, and add custom experiences for each OS. So, you can use SwiftUI views with objects from the UIKit, AppKit, and WatchKit frameworks to take further advantage of platform-specific functionality.
-
With SwiftUI, Xcode 11 constantly run real app interface to see the live change directly in the design canvas, or you can instantly run app on an attached device.
-
SwiftUI requires iOS 13, iPadOS 13, watchOS 6, tvOS 13, or macOS 10.15. To use the SwiftUI design canvas Xcode 11 must running on macOS 10.15. You need to Select Use SwiftUI during the project setup to use SwiftUI.
Swift Package Manager (SPM)
- Swift packages can now be used natively in application on all of Apple's platforms.
- Xcode 11 can automatically retrieves and manages packages based on dependencies. Add Package Dependency option available in the File > Swift Packages > Add Package Dependency menu.
- Swift Package Manager are integrated throughout the Xcode 11 workflows. That's include create, build, debug, SCM, publish and more.
- You can easily use published Swift packages on GitHub, Bitbucket, GitLab, or your own hosts.
iPad App to Mac
- Xcode 11 makes it easy to port your existing iPad app into a native Mac app. Your Mac and iPad apps will share the same project and source code.
- Xcode 11 interface builder supports customizing iPad application interfaces for Mac.
Interface Builder
-
You can switch between the light and dark appearance for iOS application directly form the Interface Builder's device bar. Also, Asset catalog makes it easy to control images and colors for dark and light mode.
-
Xcode 11 Interface Builder supports the new Apple TV tab bar style.
-
Interface builder supports customizing iPad application interfaces for Mac.
-
The
NSStackView
inspector now allows you to set negative spacing. -
With Xcode 11, Cells in a
UITableView
can now self size with Auto Layout constrained views directly into the canvas. To use this feature for existing table views you need to enable Automatic for the table viewestimated item size, and Automatic for cell's height in the Size inspector. Similarly, you can do with theUICollectionView
. -
New Xcode 11 improved the reliability of Auto Layout constraint generation with Add Missing Constraints option.
-
Now you can scroll the
UIScrollView
directly inside the Interface Builder canvas, once its subviews are fully constrained with Auto Layout constraints. -
NSSwitch
is available when running on macOS 10.15.
Source Editor
- Xcode 11 source editor now natively supports spell checking. (Shortcut -
⌘
+;
) - Xcode 11 source editor added a mini map of the file. The mini map includes legible text for
//MARK: comments
and#pragma mark directives
, highlighted lines with errors and warnings, source control changes, breakpoints, and highlighted Find results.
- The mini map is enabled by default and can be turned off per editor.
- When dragging and dropping text, Xcode opened up some space to make it easier to see where text will be dropped.
- Finally, Xcode 11 editor allows the hierarchical code folding. Also, Code folding now supports square brackets, and parentheses.
//MARK: comments
and#pragma mark directives
now draw a separator line in the editor. You can enable it from the Xcode Preferences > Text Editing > Display > Show Mark Separators.- With Xcode 11 you can view inline code changes in the Source Editor by clicking on the Source Control Change Bar and choosing Show or Hide Change.
Simulator
- Xcode 11 no longer creates every available iOS simulator device by default. Instead a set of the most commonly used devices are created.
- You can create other devices or multiple instances of a device from the Device window.
- Metal is available in iOS 13 and tvOS 13 simulators when running on macOS 10.15. In these simulators Metal code is executed on the Mac GPU.
Debugging
- Xcode view debugger shows the names of
UIImage
instances. - The view debugger now shows the names of iOS named and system colors.
- The view debugger shows information for the constraint by double clicking a constraint in the size inspector.
- From Xcode 11, debugger can prefer using Wi-Fi to connect to a Watch when installing or debugging an app.
- The debug bar appearance switcher supports changing between dark and light modes on iOS.
Organizer
- The new Metrics tab in the organizer shows battery life and performance analytics for your app to help you drive optimizations.
- To view metrics reports, choose Window > Organizer and click Metrics. Xcode refreshes the data in the metrics reports daily.
- The available metrics are battery drain, launch time, hang rate, memory, and disk writes.
- Metrics are reported for your app when distributed on the App Store and after sufficient use. You can filter data by device and usage characteristics.
Command Line Tools
- Now, Xcode supports uploading apps from the Organizer window or from the command line with
xcodebuild
orxcrun altool
. - Application Loader and
altool
is no longer available with Xcode 11 or higher. xcodebuild
is enhanced with new options supporting Test Plans. Now you can use the new-showTestPlans
option to list all test plans associated with a project scheme.
Deprecations
- Scripting language runtimes such as
Ruby
,Perl
, andPython
are included in macOS for compatibility with legacy software. In future versions of macOS, scripting language runtimes won't be available by default, and may require you to install an additional package. - If your software depends on scripting languages, it's recommended that you bundle the runtime within the app.
- Command line tool support for Subversion — including
svn
,git-svn
, and related commands is no longer provided by Xcode. If you need Subversion or related command line tools the you need to install the Command Line Tools package by runningxcode-select --install
.
Download Xcode 11
What's new in Xcode 11.1?
Xcode 11.1 includes SDKs for iOS 13.1, macOS Catalina 10.15, watchOS 6, and tvOS 13. Xcode 11.1 supports on-device debugging for iOS 8 and later, tvOS 9 and later, and watchOS 2 and later. Xcode 11.1 requires a Mac running macOS Mojave 10.14.4 or later.
Interface Builder
- You can now preview your interface for the 7th generation iPad.
- Fixed a crash that sometimes occurred when compiling XIB files in iOS projects that backwards deploy to iOS versions earlier than 13.0.
Download Xcode 11.1
What's new in Xcode 11.2?
Xcode 11.2 includes SDKs for iOS 13.2, macOS Catalina 10.15, watchOS 6.1, and tvOS 13.2. Xcode 11.2 beta supports on-device debugging for iOS 8 and later, tvOS 9 and later, and watchOS 2 and later. Xcode 11.2 beta requires a Mac running macOS Mojave 10.14.4 or later.
Interface Builder
- Added support for configuring
WKInterfaceAuthorizationAppleIDButton
styles.
Simulator
- Simulator now has a menu item and keyboard shortcut to bring up the app switcher in iOS simulators.
simctl
video recording now produces smaller video files, supports HEIC compression, and takes advantage of hardware encoding support where available.- Ability to record video on iOS 13, tvOS 13, and watchOS 6 devices has been restored.
Download Xcode 11.2 or Xcode 11.2.1
What's new in Xcode 11.3?
Xcode 11.3 supports developing apps for iOS 13.3, iPadOS 13.3, tvOS 13.3, watchOS 6.1, and macOS Catalina 10.15.2. Xcode 11.3 supports on-device debugging for iOS 8 and later, tvOS 9 and later, and watchOS 2 and later. Xcode 11.3 requires a Mac running macOS Mojave 10.14.4 or later.
Simulator
- We can configure the Touch Bar simulator to simulate either 1st generation or 2nd generation Touch Bars.
Download Xcode 11.3 or Xcode 11.3.1
What's new in Xcode 11.4?
Xcode 11.4 includes SDKs for iOS 13.4, iPadOS 13.4, tvOS 13.4, watchOS 6.2, and macOS Catalina 10.15.4. Xcode 11.4 supports on-device debugging for iOS 8 and later, tvOS 9 and later, and watchOS 2 and later. Xcode 11.4 requires a Mac running macOS Catalina 10.15.2 or later.
Universal Purchase for iOS, iPadOS, tvOS and macOS Apps
- Xcode 11.4 supports building and distributing macOS apps as a universal purchase. To distribute your macOS app as a universal purchase, specify the same bundle identifier as your iOS app in the Xcode template assistant when creating a new project. If you have an existing project, edit its bundle identifier in the Project Editor.
- Universal purchase is enabled by default for new Mac Catalyst apps created in Xcode 11.4. When you create a new Mac Catalyst app, it will use the same bundle identifier as your iOS app.
- Automatic signing in Xcode 11.4 supports building Mac Catalyst apps with a custom bundle identifier. You can edit the bundle identifier of your app using the Signing & Capabilities tab in the Project Editor. If you choose to build your Mac Catalyst app with a custom bundle identifier that does not match your iOS app, you will not be able to distribute the app as a universal purchase.
Build System
-
Build settings have a new evaluation operator, default, which you can use to specify the default value of a build setting if it evaluates to nil in the context of the evaluation. For example:
$(SETTING:default=something)
If $(SETTING) is empty, then this expression evaluates to ‘something’. The default value may itself be an expression containing build setting evaluations.
Debugging
- The view debugger now presents layout guides (UILayoutGuide, NSLayoutGuide) and their referencing constraints.
- View debugging supports showing layers using the Show Layers menu item in the Editor menu.
Interface Builder
- Added dynamic system gray colors to inspector color pickers.
- Fixed a bug that prevented entering a 0 constant in the constraint popup editors.
Simulator
-
Dragging and dropping an SSL certificate (CER or PEM file) will now install the certificate into the simulated device’s trusted root store.
-
simctl
supports a keychain subcommand. This command can add certificates to the trusted root store or the keychain. It can also reset the keychain, deleting all saved items. For example, to install “my-selfsigned.cer” to the trusted root store:xcrun simctl keychain <device> add-root-cert my-selfsigned.cer
Adding a certificate to the trusted root store causes TLS/SSL connections to trust the certificate
-
simctl
now supports modifying privacy permissions. You can modify privacy permissions to create known states for testing purposes. For example, to allow an example app to access the photo library without any prompts:xcrun simctl privacy <device> grant photos com.example.app
To reset all permissions to defaults, as if the app had never been installed before:
xcrun simctl privacy <device> reset all com.example.app
-
Always test your application after resetting permissions to ensure you have the correct usage description keys in your Info.plist and you are properly requesting and handling different authorization states. See
xcrun simctl help privacy
for more information. -
Simulator supports toggling appearance for iOS simulators (13.0 and later). From within the app select
Debug
>Toggle Appearance
. From the command line use thesimctl ui
subcommand, e.g. to set dark appearance:xcrun simctl ui <device> appearance dark
-
Simulator now has a menu item and keyboard shortcut to bring up the app switcher in iOS Simulators.
-
simctl status_bar
now allows changing the operator (carrier) name. -
Simulator supports simulating remote push notifications, including background content fetch notifications. In Simulator, drag and drop an APNs file onto the target simulator. The file must be a JSON file with a valid Apple Push Notification Service payload, including the "aps" key. It must also contain a top-level "Simulator Target Bundle" with a string value matching the target application‘s bundle identifier.
simctl
also supports sending simulated push notifications. If the file contains "Simulator Target Bundle" the bundle identifier is not required, otherwise you must provide it as an argument:xcrun simctl push <device> com.example.my-app ExamplePush.apns
-
Simulator has a new UI that streamlines working with simulated devices. Simulated device windows have a standard title bar, with buttons for common tasks. App-level settings are now available in the Preferences window.
-
Simulator now has a menu item to trigger the guest screenshot feature in iOS simulators. This saves a screenshot to the simulated device’s camera roll. The existing screenshot feature has been renamed “Save Screen” for clarity and continues to save the device‘s framebuffer to your Mac's desktop by default. Hold Option when saving the screen to change the default location.
Swift
-
We can call values of types that declare func
callAsFunction
methods like functions. The call syntax is shorthand for applying funccallAsFunction
methods.struct Adder { var base: Int func callAsFunction(_ x: Int) -> Int { return x + base } } var adder = Adder(base: 3) adder(10) // returns 13, same as adder.callAsFunction(10)
You must include func
callAsFunction
argument labels at call sites. You can add multiple funccallAsFunction
methods on a single type, and you can mark them as mutating.func callAsFunction
works with throws and rethrows, and with trailing closures. -
Subscripts can now declare default arguments. (59012048)
struct Subscriptable { subscript(x: Int, y: Int = 0) { ... } } let s = Subscriptable() print(s[0])
Testing
-
UI testing and recording on macOS support the Fn key modifier.
-
XCTest
now supports dynamically skipping tests based on runtime conditions, such as only executing some tests when running on certain device types or when a remote server is accessible. When a test is skipped, Xcode displays it differently in the Test Navigator and Test Report, and highlights the line of code where the skip occurred along with an optional user description. Information about skipped tests is also included in the .xcresult for programmatic access.To skip a test, call one of the new
XCTSkip
functions from within a test method orsetUp()
. For example:func test_canAuthenticate() throws { XCTSkipIf(AuthManager.canAccessServer == false, "Can't access server") // Perform test… }
The
XCTSkipUnless(_:_:file:line:)
API is similar toXCTSkipIf(_:_:file:line:)
but skips if the provided expression is false instead of true, and theXCTSkip
API can be used to skip unconditionally.
Download Xcode 11.4.1
What's new in Xcode 11.5?
Xcode 11.5 supports developing apps for iOS 13.5, iPadOS 13.5, tvOS 13.5, watchOS 6.2, and macOS Catalina 10.15.4. Xcode 11.5 supports on-device debugging for iOS 8 and later, tvOS 9 and later, and watchOS 2 and later. Xcode 11.5 requires a Mac running macOS Catalina 10.15.2 or later.
There is nothing else new in this version of Xcode. This mostly contains bug fixes.
Download Xcode 11.5
What's new in Xcode 11.6?
Xcode 11.6 supports developing apps for iOS 13.6, iPadOS 13.6, tvOS 13.6, watchOS 6.2, and macOS Catalina 10.15.4. Xcode 11.6 supports on-device debugging for iOS 8 and later, tvOS 9 and later, and watchOS 2 and later. Xcode 11.6 requires a Mac running macOS Catalina 10.15.2 or later.
There is nothing else new in this version of Xcode. Release note says - There are no release notes for this software update. L0L.
Download Xcode 11.6
What's new in Xcode 11.7?
Xcode 11.7 supports developing apps for iOS 13.7, iPadOS 13.7, tvOS 13.4, watchOS 6.2, and macOS Catalina 10.15.6. Xcode 11.7 supports on-device debugging for iOS 8 and later, tvOS 9 and later, and watchOS 2 and later. Xcode 11.7 requires a Mac running macOS Catalina 10.15.2 or later.
This version of Xcode include New Exposure Notification APIs to provide additional information about potential exposures.
Download Xcode 11.7