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.
- 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.
- 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.
- 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
⇧+⌘+Lkeyboard 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, the
Librariesmenu, or the
- 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.
- 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
⌃+⇧+Clickor with column select
⌥+Click+Drag, or with the keyboard using
⌃+⇧+Upto column select up or
⌃+⇧+Downto 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.
Stackbutton 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.
- Support for varying image and color assets by Light, Dark, and High Contrast appearances on macOS 10.14 and above.
- Support for
- Support for ARKit 3D
- The background of the asset catalog and view debugger can be set explicitly to light or dark so foreground elements display with sufficient contrast.
- 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
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.
- 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
Project/Workspace Settingssheet. Projects configured to use the legacy build system will display an orange hammer icon in the Activity View.
- 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 (
Edit Scheme), select the
Testaction followed by the
Infotab, and then next to your test target, click
Options. Finally, select
Execute in parallel(for macOS tests) or
Execute in parallelon Simulator” (for iOS and tvOS tests).
xcodebuildhas new command line options to control the behavior of parallel testing. Use
- parallel-testing-enabledto 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
Signing and Distribution
Developer IDdistribution 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.plistcontains a key named
upload. 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.
validationdistribution methods are supported for use from xcodebuild.
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 -
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-versionflag are 4, 4.2, and 5.
- 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.
- 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.
- You can now use
…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,
vcan be a lot faster and should be preferred over
- 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
lprojdirectories 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.
- Xcode now supports downloading using macOS content caching. For information about macOS content caching, learn more about content caching on Mac.