Xcode is the complete developer toolset used to create apps for Apple TV, Apple Watch, iPad, iPhone, and Mac. The Xcode development environment bundles the Instruments analysis tool, Simulator, and the OS frameworks in the form of tvOS SDKs, watchOS SDKs, iOS SDKs, and macOS SDK.
- Jump to "What's new in Xcode 10.1?"
- Jump to "What's new in Xcode 10.2?"
- Jump to "What's new in Xcode 10.3?"
Supported Configurations
- Xcode 10 requires a Mac running macOS 10.13.6 or later.
- Xcode 10 includes SDKs for iOS 12, watchOS 5, macOS 10.14, and tvOS 12.
- Xcode 10 supports running multiple concurrent versions of the Xcode app and of any associated tools such as Simulator.
- Xcode 10 can coexist with previous versions of Xcode.
Dark Mode
- macOS Mojave has a new dark interface which brings dark mode to the Xcode 10. You can switch it on from System Preferences.
- Xcode 10 also gives you powerful tools for creating your own dark apps for macOS. Interface Builder lets you quickly switch your design and preview from light to dark.
- You can switch your app in and out of Dark Mode while debugging. This is all done using controls within Xcode that only apply to your app. No need to change your system settings.
General
- Library content has moved from the bottom of the Inspector area to an overlay window, which can be moved and resized like Spotlight search. It dismisses once items are dragged, but holding the Option key before dragging will keep the library open for an additional drag.
- The library can be opened via a new toolbar button, the View > Libraries menu, or the
⇧+⌘+L
keyboard shortcut. Content dynamically matches the active editor, so the same UI provides access to code snippets, Interface Builder, SpriteKit, or SceneKit items. The media library is available via a long press on the toolbar button, theView
>Libraries
menu, or the⇧+⌘+M
keyboard shortcut. - Custom code snippets can now be added to the library via the Editor > Create Code Snippet menu item.
- Newly-created schemes are now shared by all users of an Xcode project. To create a personal scheme, uncheck the “Shared” checkbox in the “Manage Schemes” sheet.
Source Editor
- The Xcode 10 Source Editor now supports multi-cursor editing allowing you to quickly edit multiple ranges of code at once. You can place additional cursors with the mouse via
⌃+⇧+Click
or with column select⌥+Click+Drag
, or with the keyboard using⌃+⇧+Up
to column select up or⌃+⇧+Down
to column select down. - With a source control-enabled project the source editor displays changes made by a developer in the gutter and shows changes made by other developers that haven’t yet been pulled into the project.
Interface Builder
- The
Stack
button in the canvas bar has been replaced with a pop-up menu containing all embedding options for the selection. - The menu for choosing a font family in the Attributes inspector now renders a preview of each font.
- Controls using named colors from an asset catalog now update as the value of the color changes.
- Image and color inspector properties that reference an asset catalog resource have a navigation button to jump to that resource. Option + click will show the resource in the Assistant Editor.
Asset Catalog
- Support for varying image and color assets by Light, Dark, and High Contrast appearances on macOS 10.14 and above.
- Support for
CarPlay
assets. - Support for ARKit 3D
ARReferenceObject
assets. - The background of the asset catalog and view debugger can be set explicitly to light or dark so foreground elements display with sufficient contrast.
Debugging
- Xcode's view debugger adds an option to choose between light and dark canvas background color.
- You can change the appearance of your macOS app at runtime by using the
Debug
>View Debugging
>Appearance menu
, the Override Appearance menu in the debug bar, or the touch bar. - Named colors shown in the inspector while view debugging now indicate their names and whether they are system colors.
Build System
- Again, Xcode 10 uses a new build system. The new build system provides improved reliability and build performance, and it catches project configuration problems that the legacy build system does not.
- The legacy build system is still available in Xcode 10. To use the legacy build system, select it in the
File
>Project/Workspace Settings
sheet. Projects configured to use the legacy build system will display an orange hammer icon in the Activity View.
Testing
- Xcode 10 supports running tests in parallel, which reduces the time it takes to run tests. Test parallelization is supported for macOS unit tests, as well as unit and UI tests on iOS and tvOS simulators. To enable parallelization, navigate to the scheme editor (
Product
>Scheme
>Edit Scheme
), select theTest
action followed by theInfo
tab, and then next to your test target, clickOptions
. Finally, selectExecute in parallel
(for macOS tests) orExecute in parallel
on Simulator” (for iOS and tvOS tests).
xcodebuild
has new command line options to control the behavior of parallel testing. Use- parallel-testing-enabled
to override the per-target setting in the scheme for whether parallelization is enabled. If you want to control the number of runners that are launched, use- parallel-testing-worker-count
or-maximum-parallel-testing-workers
.
Signing and Distribution
- The
Developer ID
distribution option in Xcode's Organizer now provides support for uploading apps to Apple to be notarized. After building an archive, this option can be selected in the Organizer by clicking the Distribute App button and then selecting the Developer ID method and the Upload destination. In order to upload an app to be notarized, you must enter an Apple ID in Xcode’s Accounts preferences pane with the necessary App Store Connect role and provider membership. In addition, apps uploaded to be notarized must be signed with a Developer ID certificate. The distribution workflow can create this certificate if necessary, but requires an Apple ID account with the Agent role in order to do so.
- After uploading an app to be notarized, you can view your app’s status in the Organizer window by selecting your archive and clicking the Show Status Log button. When you receive notification that your app has been notarized, you can export it from the Organizer window by selecting your archive and clicking the Export App button. The exported app contains a stapled
ticket and is ready for distribution. - Support for uploading apps to Apple via the command line. The xcodebuild -exportArchive command will perform an upload if the provided
ExportOptions.plist
contains a key nameddestination
with valueupload
. In addition, an Apple ID account with the necessary App Store Connect role and provider membership must be added in Xcode’s Accounts preference pane.
Theapp-store
,developer-id
, andvalidation
distribution methods are supported for use from xcodebuild.
Source Control
Now Xcode supports working directly with several source code collaboration platforms, including:
- GitHub and GitHub Enterprise
- Bitbucket Cloud and Bitbucket Server
- GitLab.com and GitLab self-hosted
What's new in Xcode 10.1?
Xcode 10.1 includes SDKs for iOS 12.1, watchOS 5.1, macOS 10.14.1, and tvOS 12.1. Xcode 10.1 supports on-device debugging for iOS 8 and later, tvOS 9 and later, and watchOS 2 and later. Xcode 10.1 requires a Mac running macOS 10.13.6 or later. Here are some notable changes in Xcode 10.1 -
- Xcode 10.1 has support for arm64e (Preview).
- Now new build system supports On Demand Resources (ODR).
- The Breakpoint editor for Exception breakpoints now has an ignore count field.
- Control-dragging in the canvas to add constraints now always includes all four directions, not just the ones closest to the direction of the drag.
What's new in Xcode 10.2?
Xcode 10.2 includes SDKs for iOS 12.2, watchOS 5.2, macOS 10.14.2, and tvOS 12.2. Xcode 10.2 supports on-device debugging for iOS 8 and later, tvOS 9 and later, and watchOS 2 and later. Xcode 10.2 requires a Mac running macOS 10.14 or later. Here are some notable changes in Xcode 10.2 -
Swift 5
Xcode 10.2 comes with Swift 5. Which means now we have ABI (Application Binary Interface) stability for the Swift Standard Library. So,
- Swift apps no longer include dynamically linked libraries for the Swift standard library and Swift SDK overlays in build variants for devices running iOS 12.2, watchOS 5.2, and tvOS 12.2. As a result, Swift apps can be smaller when deployed for testing using TestFlight, or when thinning an app archive for local development distribution.
- Your application will still go to AppStore Connect with Swift Standard Library since anything before iOS 12.2 will need them. App thinning will remove them as for iOS 12.2 or higher. If you set 12.2 as the minimum supported version for you application, then it would skip it.
- Swift 3 mode has been removed. Now in Xcode 10, supported values for the
-swift-version
flag are 4, 4.2, and 5.
Interface Builder
- Double-clicking in a storyboard no longer zooms. Instead, zoom using a pinch gesture on the trackpad or hold Option and scroll.
- Images rendered in the Interface Builder canvas render with the scale factor matching the chosen device.
- Improved the intrinsic size of images in 2x and 3x slots in the Interface Builder canvas if the file name inside the asset catalog doesn’t end in @2x or @3x.
- Actions in Swift files are now correctly parsed by Interface Builder when annotated with @objc @IBAction.
Debugging
- UIStackView properties are now presented in the view debugger object inspector.
- Xcode can now automatically capture a memory graph if a memory resource exception is encountered while debugging. You can enable memory graph captures in the Diagnostics tab of the scheme’s run settings.
- On iOS and watchOS, Xcode shows the memory limit for running apps in the Memory Report as you approach the limit. Use Instruments and Xcode Memory Debugging to optimize your app to have the smallest possible memory footprint.
- The view debugger presents a more compact 3D layout.
LLDB Debugger
- You can now use
$0
,$1
,…
shorthands in LLDB expression evaluation inside closures. - C variable length arrays are now supported in LLDB.
- The LLDB debugger has a new command alias,
v
, for the "frame variable" command to print variables in the current stack frame. Because it bypasses the expression evaluator,v
can be a lot faster and should be preferred overp
orpo
.
Localization
- Opening a project that uses any deprecated localization identifiers now produces a warning for each one used. Selecting one of these warnings presents an assistant for migrating files in the associated legacy
lproj
directories tolproj
directories named for the equivalent modern identifier. If necessary, this process also updates the project’s development region to a modern identifier. Migrated projects are compatible with older versions of Xcode. - You can now export and import localizations for a project’s development region.
Others
- Xcode now supports downloading using macOS content caching. For information about macOS content caching, learn more about content caching on Mac.
What's new in Xcode 10.3?
Xcode 10.3 includes SDKs for iOS 12.4, watchOS 5.3, macOS 10.14.6, and tvOS 12.4. Xcode 10.3 supports on-device debugging for iOS 8 and later, tvOS 9 and later, and watchOS 2 and later. Xcode 10.3 requires a Mac running macOS 10.14.3 or later. There are no new additional feature in Xcode 10.3 since Xcode 10.2.1.