Xcode 11 Beta 4 Release Notes
Xcode 11 Beta 5 Release Notes
Update your apps to use new features, and test your apps against API changes.
Update your apps to use new features, and test your apps against API changes.
Overview
Overview
Xcode 11 includes SDKs for iOS 13, macOS Catalina 10.15, watchOS 6, and tvOS 13. Xcode 11 supports on-device debugging for iOS 8 and later, tvOS 9 and later, and watchOS 2 and later. Xcode 11 requires a Mac running macOS Mojave 10.14.4 or later.
Xcode 11 includes SDKs for iOS 13, macOS Catalina 10.15, watchOS 6, and tvOS 13. Xcode 11 supports on-device debugging for iOS 8 and later, tvOS 9 and later, and watchOS 2 and later. Xcode 11 requires a Mac running macOS Mojave 10.14.4 or later.
General
General
New Features
New Features
Xcode 11 beta supports development with SwiftUI.
Xcode 11 beta supports development with SwiftUI.
Note
Note
Tools for SwiftUI development are only available when running on macOS Catalina 10.15 beta.
Tools for SwiftUI development are only available when running on macOS Catalina 10.15 beta.
You can now change the appearance of Xcode independently of the system appearance setting. (41165587)
You can now change the appearance of Xcode independently of the system appearance setting. (41165587)
Xcode supports uploading apps from the Organizer window or from the command line with xcodebuild or xcrun altool. Application Loader is no longer included with Xcode. (29008875)
Xcode supports uploading apps from the Organizer window or from the command line with xcodebuild or xcrun altool. Application Loader is no longer included with Xcode. (29008875)
LaunchServices on macOS now respects the selected Xcode when launching Instruments, Simulator, and other developer tools embedded within Xcode. For example, when you double-click an Instruments trace in Finder, the version of Instruments for the selected Xcode launches. Change which Xcode is used with xcode-select from the command line. (6757601)
LaunchServices on macOS now respects the selected Xcode when launching Instruments, Simulator, and other developer tools embedded within Xcode. For example, when you double-click an Instruments trace in Finder, the version of Instruments for the selected Xcode launches. Change which Xcode is used with xcode-select from the command line. (6757601)
Editors can be added to any window without needing the Assistant Editor. Editors are added using the “Add Editor” button in the jump bar or the File > New > Editor command. Each editor can now be in one of three modes: “Editor Only”, “Editor and Assistant” or “Editor and Canvas”. The latter two modes automatically show relevant content when available. When using multiple editors, the View > Editor > Focus command can be used to temporarily expand the active editor to fill the entire window, hiding other editors. For source control support, the Code Review button in the Toolbar replaces the Comparison Editor. The “Show Authors” command is now available from the Source Editor’s Editor menu. The SCM Log is now in the Inspector Area. (43806898)
Editors can be added to any window without needing the Assistant Editor. Editors are added using the “Add Editor” button in the jump bar or the File > New > Editor command. Each editor can now be in one of three modes: “Editor Only”, “Editor and Assistant” or “Editor and Canvas”. The latter two modes automatically show relevant content when available. When using multiple editors, the View > Editor > Focus command can be used to temporarily expand the active editor to fill the entire window, hiding other editors. For source control support, the Code Review button in the Toolbar replaces the Comparison Editor. The “Show Authors” command is now available from the Source Editor’s Editor menu. The SCM Log is now in the Inspector Area. (43806898)
Known Issues
Known Issues
Xcode 11 doesn’t support working with SwiftUI in a Mac Catalyst app. (41416222, 51201699)
Xcode 11 doesn’t support working with SwiftUI in a Mac Catalyst app. (41416222, 51201699)
Resolved Issues
Resolved Issues
The required packages installer no longer unnecessarily appears on macOS 10.15. (51080815)
The required packages installer no longer unnecessarily appears on macOS 10.15. (51080815)
The Foundation integration for the Combine framework is now available. The following Foundation and Grand Central Dispatch integrations with Combine are available: KeyValueObserving, NotificationCenter, RunLoop, OperationQueue, Timer, URLSession, DispatchQueue, JSONEncoder, JSONDecoder, PropertyListEncoder, PropertyListDecoder, and the @Published property wrapper. (51241500)
The Foundation integration for the Combine framework is now available. The following Foundation and Grand Central Dispatch integrations with Combine are available: KeyValueObserving, NotificationCenter, RunLoop, OperationQueue, Timer, URLSession, DispatchQueue, JSONEncoder, JSONDecoder, PropertyListEncoder, PropertyListDecoder, and the @Published property wrapper. (51241500)
Issue text is no longer light when using a light theme with a dark system appearance. (48230278)
Issue text is no longer light when using a light theme with a dark system appearance. (48230278)
Apple Clang Compiler
Apple Clang Compiler
New Features
New Features
Clang now provides a mechanism for controlling exit-time destructor registration. You can disable these globally with the flag -fno-c++-static-destructors, or apply the attribute [[clang::no_destroy]] to disable the destructors of specific variables. The attribute [[clang::always_destroy]] was also added to enable destructors of specific variables when -fno-c++-static-destructors is used. (21734598)
Clang now provides a mechanism for controlling exit-time destructor registration. You can disable these globally with the flag -fno-c++-static-destructors, or apply the attribute [[clang::no_destroy]] to disable the destructors of specific variables. The attribute [[clang::always_destroy]] was also added to enable destructors of specific variables when -fno-c++-static-destructors is used. (21734598)
As an extension, C++11 enums with fixed underlying types are now supported in all language modes. (43831380)
As an extension, C++11 enums with fixed underlying types are now supported in all language modes. (43831380)
Deprecation warnings will be issued when standard library facilities that were deprecated in the active Standard version are used. (46881474)
Deprecation warnings will be issued when standard library facilities that were deprecated in the active Standard version are used. (46881474)
Stack checking is on by default on all platforms to prevent memory corruptions. (25859140)
Stack checking is on by default on all platforms to prevent memory corruptions. (25859140)
The machine code outliner is on by default under -Oz. It reduces code size by identifying identical code sequences across functions. Such sequences are encapsulated (“outlined”) in a single compiler generated function. Each original code sequence is replaced with a call to that outlined function. (46385499)
The machine code outliner is on by default under -Oz. It reduces code size by identifying identical code sequences across functions. Such sequences are encapsulated (“outlined”) in a single compiler generated function. Each original code sequence is replaced with a call to that outlined function. (46385499)
In order to improve performance and security the static linker (ld) now moves globals that are marked as constant into a new segment: __DATA_CONST. These globals may consist of compiler generated pointers that the dynamic linker (dyld) needs to fix up during load, but are otherwise constant such as vtables and explicitly declared constant pointers. Once dyld has finished loading the image it makes __DATA_CONST readonly. This change doesn’t impact well behaved code, but may break code that depends on undefined behavior such as using a type pun to write to a pointer that’s declared as const. (50898833)
In order to improve performance and security the static linker (ld) now moves globals that are marked as constant into a new segment: __DATA_CONST. These globals may consist of compiler generated pointers that the dynamic linker (dyld) needs to fix up during load, but are otherwise constant such as vtables and explicitly declared constant pointers. Once dyld has finished loading the image it makes __DATA_CONST readonly. This change doesn’t impact well behaved code, but may break code that depends on undefined behavior such as using a type pun to write to a pointer that’s declared as const. (50898833)
static int value1 = 0; // Stored in __DATA
static int value1 = 0; // Stored in __DATA
static int value2 = 0; // Stored in __DATA
static int value2 = 0; // Stored in __DATA
const int * const valuePtr = &value1; // Stored in __DATA_CONST
const int * const valuePtr = &value1; // Stored in __DATA_CONST
// ERROR: Attempting to store a value to a constant pointer
// ERROR: Attempting to store a value to a constant pointer
(int *)valuePtr = &value2;
(int *)valuePtr = &value2;
Clang now supports the C++17 <filesystem> library for iOS 13, macOS 10.15, watchOS 6, and tvOS 13. (50988273)
Clang now supports the C++17 <filesystem> library for iOS 13, macOS 10.15, watchOS 6, and tvOS 13. (50988273)
Known Issues
Known Issues
When using manual retain-release, exceptions thrown from the following methods or any functions or methods they transitively call might not be caught: release, autorelease, retain, alloc, or allocWithZone. (50253394)
When using manual retain-release, exceptions thrown from the following methods or any functions or methods they transitively call might not be caught: release, autorelease, retain, alloc, or allocWithZone. (50253394)
Resolved Issues
Resolved Issues
An if (@available( … )) check works properly when linked by Xcode into an app or framework that’s running on iOS 13, macOS 10.15, watchOS 6, or tvOS 13. (51109405)
An if (@available( … )) check works properly when linked by Xcode into an app or framework that’s running on iOS 13, macOS 10.15, watchOS 6, or tvOS 13. (51109405)
The <experimental/optional> and <experimental/variant> headers are removed. Use <optional> and <variant> from C++17 instead. (50175894)
The <experimental/optional> and <experimental/variant> headers are removed. Use <optional> and <variant> from C++17 instead. (50175894)
Resolved a long compile-time issue in the loop-invariant code motion pass of the optimizer. (39648918)
Resolved a long compile-time issue in the loop-invariant code motion pass of the optimizer. (39648918)
Asset Catalog
Asset Catalog
New Features
New Features
Assets can now be cut, copied, pasted, and duplicated using the menu or keyboard shortcuts. (27107912)
Assets can now be cut, copied, pasted, and duplicated using the menu or keyboard shortcuts. (27107912)
Known Issues
Known Issues
Your app might fail to build if it contains a launch image. The failure message resembles the following: “The launch image set named <image set name> did not have any applicable content.” Launch images are deprecated and should be removed; use a launch storyboard or .xib file instead. (50210495)
Workaround: Clear the build setting ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME.
Localized assets in an asset catalog aren’t matched to the user-preferred languages and locales. (49565973)
Localized assets in an asset catalog aren’t matched to the user-preferred languages and locales. (49565973)
Resolved Issues
Resolved Issues
Xcode no longer crashes if you press Command-U or select an asset catalog in the navigator area. (52211868)
Xcode no longer crashes if you press Command-U or select an asset catalog in the navigator area. (52211868)
Fixed a crash that could occur when using Interface Builder’s image inspector if the asset catalog contained a symbol and bitmap image assets with the same name. (51279661)
Fixed a crash that could occur when using Interface Builder’s image inspector if the asset catalog contained a symbol and bitmap image assets with the same name. (51279661)
New user-defined images added to the asset catalog show up in the image view image combo box. (51090225, 51120715)
New user-defined images added to the asset catalog show up in the image view image combo box. (51090225, 51120715)
Corrected an issue that caused the NSDataAsset asset variation for Mac Catalyst to return nil at runtime. (50022757)
Corrected an issue that caused the NSDataAsset asset variation for Mac Catalyst to return nil at runtime. (50022757)
Resolved an issue that caused NSDataAsset asset lookup to return the wrong data when an asset had variants specified for iPad and Mac Catalyst. (49990047, 51278348, 51288447)
Resolved an issue that caused NSDataAsset asset lookup to return the wrong data when an asset had variants specified for iPad and Mac Catalyst. (49990047, 51278348, 51288447)
Build System
Build System
New Features
New Features
You can use an unlimited number of Swift files in a target if you set the build setting USE_SWIFT_RESPONSE_FILE to YES. (35879960)
If tests are run using a test plan, it’s now possible to configure which targets should be included in code coverage results using the test plan’s code coverage setting. (50502861)
Xcode uses response files by default to pass input files to the Swift compiler. To turn this behavior off, set USE_SWIFT_RESPONSE_FILE to NO.
You can use an unlimited number of Swift files in a target. (35879960)
Run script phases and custom build rules may declare and emit a dependencies file, in the Makefile-style .d format output used by some compilers and build tools. The build system checks the files listed for changes during subsequent builds when determining if the rule or phase should be executed. (49226986)
Run script phases and custom build rules may declare and emit a dependencies file, in the Makefile-style .d format output used by some compilers and build tools. The build system checks the files listed for changes during subsequent builds when determining if the rule or phase should be executed. (49226986)
Projects may now use custom build rules to process header files (APPLY_RULES_IN_COPY_HEADERS). (48185100)
Projects may now use custom build rules to process header files (APPLY_RULES_IN_COPY_HEADERS). (48185100)
Custom build rules can now specify additional, static input files that are used during execution. These resolved input file paths are supplied to rule scripts using the SCRIPT_INPUT_FILE_# environment variables. (49645853)
Custom build rules can now specify additional, static input files that are used during execution. These resolved input file paths are supplied to rule scripts using the SCRIPT_INPUT_FILE_# environment variables. (49645853)
Xcode removes some entries from the Info.plist file of a product at build time if the entries are not appropriate for the platform being built for, which is useful for targets which are configured to build for multiple platforms. This behavior can be disabled by setting the build setting DISABLE_INFOPLIST_PLATFORM_PROCESSING to YES, in which case the target must assume the responsibility of managing these entries appropriately. (47797497)
Xcode removes some entries from the Info.plist file of a product at build time if the entries are not appropriate for the platform being built for, which is useful for targets which are configured to build for multiple platforms. This behavior can be disabled by setting the build setting DISABLE_INFOPLIST_PLATFORM_PROCESSING to YES, in which case the target must assume the responsibility of managing these entries appropriately. (47797497)
Custom build rules can now declare that they should run once per architecture (the default), or run only once across all architectures. This is useful for custom rules which are architecture-neutral, for example, code generation tools that generate files that don’t differ per architecture. (47716990)
Custom build rules can now declare that they should run once per architecture (the default), or run only once across all architectures. This is useful for custom rules which are architecture-neutral, for example, code generation tools that generate files that don’t differ per architecture. (47716990)
XCFramework make it possible to bundle a binary framework or library for multiple platforms —including iOS devices, iOS simulators, and Mac Catalyst — into a single distributable .xcframework bundle that your developers can use within their own applications. An .xcframework bundle can be added to an Xcode target’s Link Libraries phase and Xcode uses the right platform’s version of the included framework or library at build time. Creation of frameworks is supported from the command line using xcodebuild -create-xcframework. Frameworks or libraries bundled in an XCFramework should be built with the Build Libraries for Distribution build setting set to YES. (49948269)
XCFramework make it possible to bundle a binary framework or library for multiple platforms —including iOS devices, iOS simulators, and Mac Catalyst — into a single distributable .xcframework bundle that your developers can use within their own applications. An .xcframework bundle can be added to an Xcode target’s Link Libraries phase and Xcode uses the right platform’s version of the included framework or library at build time. Creation of frameworks is supported from the command line using xcodebuild -create-xcframework. Frameworks or libraries bundled in an XCFramework should be built with the Build Libraries for Distribution build setting set to YES. (49948269)
Known Issues
Known Issues
Watch targets that override the Architectures build setting to just armv7k may fail to process in TestFlight and Xcode’s enterprise distribution workflow. (51104990)
Workaround: Build the watchOS app with armv7k and arm64_32.
Incremental builds to may fail to codesign properly for non-source related changes to your project, such as resource file modifications, which can result in the app failing to launch. (41254808)
Incremental builds to may fail to codesign properly for non-source related changes to your project, such as resource file modifications, which can result in the app failing to launch. (41254808)
Workaround: Change a source file within the same target to trigger the codesign process, or perform a clean build.
Workaround: Change a source file within the same target to trigger the codesign process, or perform a clean build.
Updating your iOS app for Mac Catalyst might show new error diagnostics stating that certain frameworks or functionality is not available on the Mac. If one of these diagnostics is shown erroneously, you can disable it by setting the VALIDATE_WORKSPACE build setting to NO. (50607174)
Updating your iOS app for Mac Catalyst might show new error diagnostics stating that certain frameworks or functionality is not available on the Mac. If one of these diagnostics is shown erroneously, you can disable it by setting the VALIDATE_WORKSPACE build setting to NO. (50607174)
The new build system doesn’t evaluate a leading tilde (~) in paths in build settings to the user’s home directory. (41339901)
The new build system doesn’t evaluate a leading tilde (~) in paths in build settings to the user’s home directory. (41339901)
Workaround: Use $(HOME) instead.
Workaround: Use $(HOME) instead.
If a target enables RUN_CLANG_STATIC_ANALYZER, then single file processing commands — such as Compile, Preprocess, Show Assembly — won’t work correctly because they generate the static analyzer output file rather than the appropriate output. (43340227)
If a target enables RUN_CLANG_STATIC_ANALYZER, then single file processing commands — such as Compile, Preprocess, Show Assembly — won’t work correctly because they generate the static analyzer output file rather than the appropriate output. (43340227)
Workaround: Disable RUN_CLANG_STATIC_ANALYZER in the target.
Workaround: Disable RUN_CLANG_STATIC_ANALYZER in the target.
If the build of an app-hosted test target — where TEST_HOST is defined — fails, subsequent builds may fail when signing the app product because the test target is incomplete and unsigned when the initial signing of the app occurs. (43402096)
If the build of an app-hosted test target — where TEST_HOST is defined — fails, subsequent builds may fail when signing the app product because the test target is incomplete and unsigned when the initial signing of the app occurs. (43402096)
Workaround: Perform a clean build. Or, manually delete the unsigned test bundle from inside the app target’s product and rebuild.
Workaround: Perform a clean build. Or, manually delete the unsigned test bundle from inside the app target’s product and rebuild.
Targets which override the Architectures and Valid Architectures build settings for iOS may need to remove or conditionalize the overrides to build correctly for Mac Catalyst. (51074742)
Targets which override the Architectures and Valid Architectures build settings for iOS may need to remove or conditionalize the overrides to build correctly for Mac Catalyst. (51074742)
When using Xcode on macOS 10.15, some files — especially .xib files and storyboard files — might be copied rather than compiled, resulting in an incorrect build product. (49351105)
When using Xcode on macOS 10.15, some files — especially .xib files and storyboard files — might be copied rather than compiled, resulting in an incorrect build product. (49351105)
Workaround: In the File Inspector for the file which is being copied, toggle the Type popup away from Default - <some type> then back to Default. This resets the file type in the project file to the correct type and enables the build system to match it to the correct tool to process it.
Workaround: In the File Inspector for the file which is being copied, toggle the Type popup away from Default - <some type> then back to Default. This resets the file type in the project file to the correct type and enables the build system to match it to the correct tool to process it.
When building for the first time users may get a popup stating that SimulatorTrampoline would like access to Desktop Files because ibtool running in simulator needs access to these files to compile storyboards. (51114450)
When building for the first time users may get a popup stating that SimulatorTrampoline would like access to Desktop Files because ibtool running in simulator needs access to these files to compile storyboards. (51114450)
Workaround: Allow access to the files in the prompt.
Workaround: Allow access to the files in the prompt.
Some features that aren’t supported by the legacy build system are ignored instead of emitting an error. This includes use of build rule or script phase dependency files, input declarations for custom build rules, and the APPLY_RULES_IN_COPY_HEADERS build setting. (51318274)
Resolved Issues
Resolved Issues
When tests are run under multiple configurations using a test plan in Xcode Server, the integration report now properly displays the name of each configuration that a test ran under. (53402104)
If changes are made to the active test plan document while the test navigator is visible — such as the addition or removal of a test target, or enabling or disabling an individual test or test class — the navigator now updates immediately in response to the changes instead of becoming out of sync with the test plan. (52065983)
If the settings in the active test plan document are modified, and the Test Again action is subsequently invoked to rerun the tests that were last run, the modified settings will now take effect instead of the previous settings being used. (51145300)
On-Demand Resources (ODR) are now supported on macOS. (50358184)
Use of legacy build system features such as build rule or script phase discovered dependency files, input declarations for custom build rules, or the APPLY_RULES_IN_COPY_HEADERS build setting produces an error instead of silently being ignored. (51318274)
Overriding the Architectures build setting to just armv7k in a Watch targets doesn’t prevent deployment to TestFlight or Xcode’s enterprise distribution workflow. (51104990)
The indexer doesn’t wait for a build to be performed before indexing Swift response files. (52110336)
The indexer doesn’t wait for a build to be performed before indexing Swift response files. (52110336)
After closing and reopening a project, or when performing incremental builds using xcodebuild, diagnostics from prior builds regarding incompatible frameworks, app extensions, and code signing settings now are displayed with a description in the Issue Navigator and Build Log. (51131884)
After closing and reopening a project, or when performing incremental builds using xcodebuild, diagnostics from prior builds regarding incompatible frameworks, app extensions, and code signing settings now are displayed with a description in the Issue Navigator and Build Log. (51131884)
By default, Xcode’s new build system doesn’t detect changes in directories declared as inputs to shell script build phases. Enabling the build setting ALLOW_RECURSIVE_SCRIPT_INPUTS causes it to do so. However, if any of the files inside such a directory are generated by a task that depends on the output of the script phase, then a dependency cycle error is emitted and must be resolved by restructuring the target. (41126633)
By default, Xcode’s new build system doesn’t detect changes in directories declared as inputs to shell script build phases. Enabling the build setting ALLOW_RECURSIVE_SCRIPT_INPUTS causes it to do so. However, if any of the files inside such a directory are generated by a task that depends on the output of the script phase, then a dependency cycle error is emitted and must be resolved by restructuring the target. (41126633)
The build system no longer crashes when building some targets that use On Demand Resources. (49072702)
The build system no longer crashes when building some targets that use On Demand Resources. (49072702)
Command Line Tools
Command Line Tools
Resolved Issues
Resolved Issues
The python3 and pip3 commands no longer incorrectly fail with an error that claims they require Xcode when only the Command Line Tools are installed. (53284703)
pip3 is available using the default shell PATH when using macOS Catalina 10.15 beta 4. (50877974)
pip3 is available using the default shell PATH when using macOS Catalina 10.15 beta 4. (50877974)
Python 3 is available in the Command Line Tools package. (51727440)
Python 3 is available in the Command Line Tools package. (51727440)
Core Data
Core Data
New Features
New Features
There is now a checkbox that makes it possible for you to distinguish whether the default value of a string attribute should be nil or the empty string. When set, the default value is the empty string if no other default is specified. (26534406)
There is now a checkbox that makes it possible for you to distinguish whether the default value of a string attribute should be nil or the empty string. When set, the default value is the empty string if no other default is specified. (26534406)
The Xcode 11 data model file format no longer writes out or preserves deprecated Sync Services information for entities or properties. (32524648)
The Xcode 11 data model file format no longer writes out or preserves deprecated Sync Services information for entities or properties. (32524648)
The Core Data data model editor has added support for derived attributes when using the Xcode 11 data model file format and an appropriate deployment target. (45567066)
The Core Data data model editor has added support for derived attributes when using the Xcode 11 data model file format and an appropriate deployment target. (45567066)
When creating an application using Core Data, there is a new checkbox to also enable CloudKit support for the data model’s default configuration. This can also be enabled for an existing data model using the new configuration inspector. When a data model configuration supports CloudKit, the data model editor performs additional validation to ensure the model conforms to the requirements for Core Data CloudKit support. (51126024)
When creating an application using Core Data, there is a new checkbox to also enable CloudKit support for the data model’s default configuration. This can also be enabled for an existing data model using the new configuration inspector. When a data model configuration supports CloudKit, the data model editor performs additional validation to ensure the model conforms to the requirements for Core Data CloudKit support. (51126024)
Resolved Issues
Resolved Issues
When used with CloudKit, an attribute in a Core Data model must either be optional or have a default value. Xcode 11 beta 3 and earlier incorrectly required that such an attribute be both optional and have a default value. (51593507)
When used with CloudKit, an attribute in a Core Data model must either be optional or have a default value. Xcode 11 beta 3 and earlier incorrectly required that such an attribute be both optional and have a default value. (51593507)
Using the UUID attribute type, the URI attribute type, or the persistent history feature properly generates an error when used with a data model file format prior to the format used in Xcode 9. (50188371)
Using the UUID attribute type, the URI attribute type, or the persistent history feature properly generates an error when used with a data model file format prior to the format used in Xcode 9. (50188371)
Create ML
Create ML
New Features
New Features
Activity classification, tabular classification and word tagger templates are available in Create ML. (53405469)
Live listen crashes on devices without a microphone. (53405469)
Object detection and text classification templates are available in Create ML, joining the image classification and sound classification templates. Use these templates starting with macOS 10.15 beta 3. (52009035)
Object detection and text classification templates are available in Create ML, joining the image classification and sound classification templates. Use these templates starting with macOS 10.15 beta 3. (52009035)
You can now classify sounds live directly from the microphone using Sound Classification preview. (52131594)
You can now classify sounds live directly from the microphone using Sound Classification preview. (52131594)
Known Issues
Known Issues
The progress graph in the sound classifier might not update correctly. (52911042)
The progress graph in the sound classifier might not update correctly. (52911042)
Debugging
Debugging
New Features
New Features
The view debugger now shows the names of NSImage instances in the inspector. (35516797)
The view debugger now shows the names of NSImage instances in the inspector. (35516797)
The graphical filter in the Size inspector for debugging view hierarchies identifies which attributes on the selected view are constrained. Selecting attributes in the filter narrows the displayed constraints to ones matching that attribute. Standard modifier keys such as Shift and Command can be used to expand the selection showing the union of constraints matching those attributes. (44864394)
The graphical filter in the Size inspector for debugging view hierarchies identifies which attributes on the selected view are constrained. Selecting attributes in the filter narrows the displayed constraints to ones matching that attribute. Standard modifier keys such as Shift and Command can be used to expand the selection showing the union of constraints matching those attributes. (44864394)
You can now debug the view hierarchies of watchOS apps. (45173634)
You can now debug the view hierarchies of watchOS apps. (45173634)
You can now simulate network conditions and thermal states for a connected device from the Devices and Simulators window. (44608479)
You can now simulate network conditions and thermal states for a connected device from the Devices and Simulators window. (44608479)
The view debugger shows UIWindowScene instances in the debug navigator and canvas. (45378799)
The view debugger shows UIWindowScene instances in the debug navigator and canvas. (45378799)
View debugging can be disabled in the scheme options. (45928299)
View debugging can be disabled in the scheme options. (45928299)
The Size inspector for debugging view hierarchies has more details about constraints including a filter, hover highlighting in the editor, and better descriptions. (16153188)
The Size inspector for debugging view hierarchies has more details about constraints including a filter, hover highlighting in the editor, and better descriptions. (16153188)
The view debugger supports debugging Mac Catalyst apps. (37507479)
The view debugger supports debugging Mac Catalyst apps. (37507479)
The view debugger inspector shows contentTintColor for NSImageView and NSButton. (49506123)
The view debugger inspector shows contentTintColor for NSImageView and NSButton. (49506123)
The view debugger now shows the names of iOS named and system colors. (45162028)
The view debugger now shows the names of iOS named and system colors. (45162028)
The view debugger shows trait collection information. (45161975)
The view debugger shows trait collection information. (45161975)
The view debugger shows the names of UIImage instances. (45327089)
The view debugger shows the names of UIImage instances. (45327089)
The view debugger now shows symbol information, like baseline and midline. (49508874)
The view debugger now shows symbol information, like baseline and midline. (49508874)
The debug bar appearance switcher supports changing between dark and light modes on iOS. (45161907)
The debug bar appearance switcher supports changing between dark and light modes on iOS. (45161907)
The “Pause on issues” checkboxes in the Diagnostics tab of the Scheme Editor are replaced by regular breakpoints. You can use the Breakpoints Navigator to create a Runtime Issue Breakpoint. (31409112)
The “Pause on issues” checkboxes in the Diagnostics tab of the Scheme Editor are replaced by regular breakpoints. You can use the Breakpoints Navigator to create a Runtime Issue Breakpoint. (31409112)
Override system settings like appearance, dynamic type, and accessibility options for the debugged process using Environment overrides, accessible from the debug bar. (45848655)
Override system settings like appearance, dynamic type, and accessibility options for the debugged process using Environment overrides, accessible from the debug bar. (45848655)
The debugger supports working with crash logs (.crash files). (48408310)
The debugger supports working with crash logs (.crash files). (48408310)
The debugger can debug tvOS Top Shelf extensions. (48869701)
The debugger can debug tvOS Top Shelf extensions. (48869701)
Xcode can prefer using Wi-Fi to connect to a Watch when installing or debugging an app. (50313856)
Xcode can prefer using Wi-Fi to connect to a Watch when installing or debugging an app. (50313856)
The VoiceOver actions menu for breakpoints includes an action to jump to the corresponding line of code. (44941178)
The VoiceOver actions menu for breakpoints includes an action to jump to the corresponding line of code. (44941178)
When debugging views with constraints, double clicking a constraint in the size inspector selects that constraint in the editor and show information for the constraint in the inspector. (18842905)
When debugging views with constraints, double clicking a constraint in the size inspector selects that constraint in the editor and show information for the constraint in the inspector. (18842905)
Known Issues
Known Issues
In watchOS 6, an apns-push-type key is required in the APNs request header. Specify alert or background for the type of notification being sent. The template APNs files in Xcode don’t contain this header by default. (50709418)
In watchOS 6, an apns-push-type key is required in the APNs request header. Specify alert or background for the type of notification being sent. The template APNs files in Xcode don’t contain this header by default. (50709418)
The energy gauge report doesn’t show the conditions active on the device. (52349364)
Debugging symbols might be unavailable for Apple Watch. (26995636)
Debugging symbols might be unavailable for Apple Watch. (26995636)
Workaround: Verify that you have a working internet connection and that you’re signed into your Apple ID in Preferences > Accounts.
Workaround: Verify that you have a working internet connection and that you’re signed into your Apple ID in Preferences > Accounts.
You can’t debug on-device previews. (51183159)
Workaround: Debug live previews on the canvas or debug the app on the device by directly deploying it there.
On macOS 10.15, dragging the process item in the Debug Navigator might crash Xcode. (48453949)
Debugging a watch app in a watchOS simulator might fail the first time the simulator boots. (50263836)
Debugging a watch app in a watchOS simulator might fail the first time the simulator boots. (50263836)
Workaround: Wait until the watch simulator finishes booting, then start debugging it again.
Workaround: Wait until the watch simulator finishes booting, then start debugging it again.
App and thermal state tracks in the Energy Impact gauge might stop updating. (50968828)
App and thermal state tracks in the Energy Impact gauge might stop updating. (50968828)
Workaround: Stop and rerun the app.
Workaround: Stop and rerun the app.
Resolved Issues
Resolved Issues
Fixed an Xcode crash on macOS 10.15 when dragging the process item in the Debug Navigator. (48453949)
You can debug an interactive preview on a device. (51183159)
When working with devices running the current beta operating system release, the Energy Report shows the thermal conditions of the device. (52349364)
Debugging is available for on-device previews. (47668840, 51139546)
Debugging is available for on-device previews. (47668840, 51139546)
The Environment Overrides button appears in the debug bar for watchOS and iOS app extension targets without you needing to pause the process first. (51203640)
The Environment Overrides button appears in the debug bar for watchOS and iOS app extension targets without you needing to pause the process first. (51203640)
A preview debug session no longer ends when the preview isn’t visible. (50593619)
A preview debug session no longer ends when the preview isn’t visible. (50593619)
Runtime issue breakpoints added to running processes behave correctly. (49433870)
Runtime issue breakpoints added to running processes behave correctly. (49433870)
Items in the view debugger can be revealed in the Debug navigator from the context menu. (18598643)
Items in the view debugger can be revealed in the Debug navigator from the context menu. (18598643)
Improved the formatting of Swift class names when debugging the view hierarchy. (39679411)
Improved the formatting of Swift class names when debugging the view hierarchy. (39679411)
Fixed an issue where the debug console would display a page column guide. (49693398)
Fixed an issue where the debug console would display a page column guide. (49693398)
Breakpoints support the VoiceOver command to open the shortcut menu. (44940944)

Breakpoints support the VoiceOver command to open the shortcut menu. (44940944)

Deprecations
Deprecations
The WatchKit framework is no longer included in the iOS SDK. If you’re using WatchKit APIs from iOS, you need to remove this use. The WatchKit framework remains available on watchOS. If you’re using WatchKit APIs from iOS to infer availability of features on the paired Apple Watch, include information about your use case when you submit feedback to Feedback Assistant. (49707950)
The WatchKit framework is no longer included in the iOS SDK. If you’re using WatchKit APIs from iOS, you need to remove this use. The WatchKit framework remains available on watchOS. If you’re using WatchKit APIs from iOS to infer availability of features on the paired Apple Watch, include information about your use case when you submit feedback to Feedback Assistant. (49707950)
Scripting language runtimes such as Python, Ruby, and Perl 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. (49764202)
Scripting language runtimes such as Python, Ruby, and Perl 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. (49764202)
Use of Python 2.7 isn’t recommended. This version is included in macOS for compatibility with legacy software. Future versions of macOS won’t include Python 2.7. Instead, it’s recommended that you run python3 in Terminal. (51097165)
Use of Python 2.7 isn’t recommended. This version is included in macOS for compatibility with legacy software. Future versions of macOS won’t include Python 2.7. Instead, it’s recommended that you run python3 in Terminal. (51097165)
The Quartz Composer framework is deprecated. Starting in macOS 10.15, the Quartz Composer framework will be marked as deprecated and remain present for compatibility purposes. Transition to frameworks such as Core Image, SceneKit, or Metal if your app is using Quartz Composer. (50911608)
The Quartz Composer framework is deprecated. Starting in macOS 10.15, the Quartz Composer framework will be marked as deprecated and remain present for compatibility purposes. Transition to frameworks such as Core Image, SceneKit, or Metal if your app is using Quartz Composer. (50911608)
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, install the Command Line Tools package by running xcode-select --install. (50266910)
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, install the Command Line Tools package by running xcode-select --install. (50266910)
Devices
Devices
Known Issues
Known Issues
Testing using xcodebuild might cause a crash when running to multiple destinations concurrently. (52962341)
Testing using xcodebuild might cause a crash when running to multiple destinations concurrently. (52962341)
Workaround: Disable concurrent destination testing by passing the -disable-concurrent-destination-testing flag to xcodebuild.
Workaround: Disable concurrent destination testing by passing the -disable-concurrent-destination-testing flag to xcodebuild.
Specifying a run destination using a device or simulator name from xcodebuild doesn’t resolve correctly. (52081230)
Specifying a run destination using a device or simulator name from xcodebuild doesn’t resolve correctly. (52081230)
Workaround: Specify the destination by platform and ID instead of the name.
Workaround: Specify the destination by platform and ID instead of the name.
Building and running a watchOS app on a device might show a system spinner indefinitely. (51726238)
Building and running a watchOS app on a device might show a system spinner indefinitely. (51726238)
Workaround: Reboot the device.
Workaround: Reboot the device.
Resolved Issues
Resolved Issues
Resolved an issue that prevented running a watch app built with the thread sanitizer enabled on older versions of watchOS. (49288795)
Resolved an issue that prevented running a watch app built with the thread sanitizer enabled on older versions of watchOS. (49288795)
Resolved an issue with half point frame differences caused by switching between Retina and non-Retina monitors. (20175879)
Resolved an issue with half point frame differences caused by switching between Retina and non-Retina monitors. (20175879)
DriverKit
Resolved Issues
DriverKit drivers build properly. (52858797)
Instruments
Instruments
New Features
New Features
Tracks in Instruments can now be formed in hierarchies. They can now represent any engineering type and are created using Custom Instruments. (28615789)
Tracks in Instruments can now be formed in hierarchies. They can now represent any engineering type and are created using Custom Instruments. (28615789)
Instruments now allows for copying multiple rows from a table at one time. (39326522)
Instruments now allows for copying multiple rows from a table at one time. (39326522)
Instruments allows for creating scopes for easier navigation within the trace document. (49022012)
Instruments allows for creating scopes for easier navigation within the trace document. (49022012)
<os-signpost-point-schema> is available in the Custom Instruments to match point events coming from os_signpost(_:dso:log:name:signpostID:). (50586708)
<os-signpost-point-schema> is available in the Custom Instruments to match point events coming from os_signpost(_:dso:log:name:signpostID:). (50586708)
Known Issues
Known Issues
When profiling a standalone watchOS app, an iOS simulator is launched. (49788679)
When profiling a standalone watchOS app, an iOS simulator is launched. (49788679)
Resolved Issues
Resolved Issues
The selected track is rendered in the Touch Bar area of Instruments. (50186374)
The selected track is rendered in the Touch Bar area of Instruments. (50186374)
When profiling on a device running iOS, iPadOS, watchOS, or tvOS, Instruments uses the correct category for os_log(_:dso:log:_:_:) and os_signpost(_:dso:log:name:signpostID:) messages received from it. Points of interest now receive events properly and custom instrument category matching behaves correctly. (52193505)
When profiling on a device running iOS, iPadOS, watchOS, or tvOS, Instruments uses the correct category for os_log(_:dso:log:_:_:) and os_signpost(_:dso:log:name:signpostID:) messages received from it. Points of interest now receive events properly and custom instrument category matching behaves correctly. (52193505)
Interface Builder
Interface Builder
New Features
New Features
Interface Builder supports iOS 13 UIVisualEffectView blur and vibrancy visual effects. (48023286)
Interface Builder supports iOS 13 UIVisualEffectView blur and vibrancy visual effects. (48023286)
Interface Builder supports iOS 13 UIActivityIndicatorView styles. (48573772)
Interface Builder supports iOS 13 UIActivityIndicatorView styles. (48573772)
The iOS home indicator color now adapts to light and dark canvas appearances. (48610782)
The iOS home indicator color now adapts to light and dark canvas appearances. (48610782)
Interface Builder supports customizing UIButton symbol configurations. (51323174)
Interface Builder supports customizing UIButton symbol configurations. (51323174)
Interface Builder supports the new layout TVCollectionViewFullScreenLayout on Apple TV. (47598895)
Interface Builder supports the new layout TVCollectionViewFullScreenLayout on Apple TV. (47598895)
UIViewController instances now default to the Automatic modal presentation mode. Modal presentation segues can override this setting. (48129590)
UIViewController instances now default to the Automatic modal presentation mode. Modal presentation segues can override this setting. (48129590)
Interface Builder supports Dark Mode on iOS. (45314199)
Interface Builder supports Dark Mode on iOS. (45314199)
Interface Builder’s device bar lets you switch between the light and dark appearance for iOS apps. (45282451)
Interface Builder’s device bar lets you switch between the light and dark appearance for iOS apps. (45282451)
You can add SwiftUI hosting controllers, such as UIHostingController, to connect a storyboard controller flow to a hosting controller that manages a SwiftUI view hierarchy. You can populate the contents of a hosting controller in Interface Builder by providing a custom subclass that programmatically sets the rootView of the controller. (46039344)
You can add SwiftUI hosting controllers, such as UIHostingController, to connect a storyboard controller flow to a hosting controller that manages a SwiftUI view hierarchy. You can populate the contents of a hosting controller in Interface Builder by providing a custom subclass that programmatically sets the rootView of the controller. (46039344)
You can also set the root view of a UIHostingController or NSHostingController using a Segue Action.
You can also set the root view of a UIHostingController or NSHostingController using a Segue Action.
The object library now matches the selected system-wide appearance. (50874168)
The object library now matches the selected system-wide appearance. (50874168)
The NSStackView inspector now allows configuring negative spacing. (49012055)
The NSStackView i
NSSwitch is available when running on macOS 10.15. (47566686)
Cells in a UITableView can now self size with Auto Layout constrained views in the canvas. To opt into the behavior for existing table views, enable “Automatic” for the table view estimated item size, and “Automatic” for cell’s height in the Size inspector. (35735970)
NSView and UIView have a layout mode option in the Size inspector to explicitly opt into “translates autoresizing mask into constraints”. The default setting is “Automatic”, which is the existing behavior. “Automatic” implies that “translate autoresizing mask into constraints” is off when a view affect by constraints in the storyboard or .xib file, but on if unconstrained. (37352354)
Improved the reliability of Auto Layout constraint generation with “Add Missing Constraints”. (43694622)
The contents of a UIScrollView are scrollable within the canvas, once its subviews are fully constrained with Auto Layout constraints. (44727961)
Cells in a UI