Did a macOS Update Brick your T2 Mac? I will Show you how to Boot your Mac into DFU Mode so you can Restore BridgeOS.
This article will go over how to restore BridgeOS on your T2 Mac. This is not something that you will ever normally have to do. Restoring or reinstalling BridgeOS firmware would only be needed in the following situations.
1. Failed macOS Upgrade
2. Failed macOS Combo or Delta Update
3. Failed macOS Security Update
4. Failed macOS Reinstall
5.Failed BridgeOS or Failed Firmware Update
6. “Command Option R” fails to boot your T2 Mac to the newest version of macOS Internet Recovery. (Example: 10.14 is out but the Mac boots to 10.13)
2. Warning about “Restore” Full Erase! Please Read
The new version of Apple Configurator 2 (2.12.1+) and newer has different options!
Actions > Advanced > Revive Device = Reinstall BridgeOS Only – Revive should be the first option to try. If a Revive does not work, move to the second option Restore.
Actions > Restore = Reinstall BridgeOS & ERASE OS AND USER DATA! – This option will reinstall BridgeOS and erase the SSD. This option is for more serious issues where the Mac does not respond after installing an update.
3. List of T2 Compatible Macs
This is a list of T2 Mac that you can can have BridgeOS restored.
2019-2020 16″ MacBook Pro
2018-2019 13″ & 15″ Macbook Pro
2018-2020 MacBook Air
2018 Mac Mini
2020 iMac
2017 iMac Pro
2019 Mac Pro
4. How do I find the BridgeOS Version on my T2 Mac?
From support.apple.com/en-us/HT203001 – “Choose Apple menu > About This Mac. This opens an overview of your Mac, including your Mac model, processor, memory, serial number, and version of macOS. To see the greater detail provided by the System Information app, click the System Report button.”
5. Setup and Cable Requirements before you begin.
You will need to meet the following requirements –
(The Host Mac will do the work and the Target Mac is the Mac you need to Restore)
1. USB-C Mac as the Host Machine.
2. The Host Mac must have at least macOS 10.13.5 and Apple Configurator 2.6 or newer installed. (Version 2.12.1 is the latest)
3. The Host Mac Must be on the same OS version as the Target Mac that you want to Restore. (Example – If the Target Mac is on 10.15 you will need the Host Mac to be on 10.15. If the Host Mac is on 10.14 you will get an error 10)
3. Internet access on the Host Mac – “You may need to configure your web proxy or firewall ports to allow all network traffic from Apple”
4. USB-C to USB-C Cable – The white Apple USB-C Charge will work fine.(USB-C Cable MUST Support Power & Data). Apple notes that a Thunderbolt 3 to Thunderbolt 3 cable is not supported but I’ve tested it and it works fine.
5. The Host Mac can have the cable plugged in anywhere.
6. The Target Mac MUST have the USB-C Cable Plugged in to the Left Hand side USB-C port. This is First port in line (Port closest to the front of the Mac or trackpad) If you are still confused look at the picture below.
If you don’t meet all the prerequisites booting to DFU Mode or BridgeOS Upgrade might fail.
6. Download Apple Configurator 2
If you do not have Apple Configurator 2, you can download it now from the Mac App Store with this link.
With all the startup keyboard commands you can issue a Mac, booting into DFU Mode should be pretty simple right?
NOPE!
You have to follow a very particular sequence to get this to work. I have attempted to find the exact way to get this to work every time. Even then sometimes the system will refuse to Boot into DFU mode.
Apple’s Instructions
You can find Apple’s instructions for booting into DFU mode here.
Bottom line, it’s hard to get your T2 Mac into DFU mode. You could try Apple’s instructions 10 times and STILL not get into DFU mode.
Once you have meet all of the pre requisites above, follow the instructions below to get into DFU Mode every time.
1. The Target Mac must be OFF to begin.
2. Press the Power button and hold for 1 second.
3. While STILL holding power immediately hold down RightShift, Left Control and Left Option.
Hold down all 4 keys for 8 Seconds (count 1 one thousand) then let go of all keys.
You will not see anything on the Target Mac screen.
Keep an eye on the Host Mac’s Apple Configurator 2 Application. The App should say “Connect Devices”
When the Target Mac is booted into DFU mode correctly, the host will show a big DFU icon in Apple Configurator 2.
After you see the DFU picture pop up on the Host Mac you can let go of the keys.
9. Instructions for the iMac (2020) & iMac Pro (2017)
The iMac 2020 & iMac Pro 2017 are a little different yet are super simple to get into DFU Mode.
1. Disconnect the power cord from the iMac Pro or Mac Mini.
2. Plug USB-C/Thunderbolt cable into the USB-C port next to the Ethernet Port.
3. Plug the other end into the Host Mac.
4. While holding down the power button, connect the iMac Pro or Mac Mini to power and continue to hold the power button for about 3-5 seconds
5. You should now see the DFU logo on the Host Mac.
10. Instructions for the Mac Mini (2018)
The Mac Mini 2018 instructions are close to the iMac Pro but the USB-C port that you need is next to the HDMI port instead of the Ethernet port like the iMac Pro.
1. Disconnect the power cord from the Mac Mini.
2. Plug USB-C/Thunderbolt cable into the USB-C port next to the HDMI Port.
3. Plug the other end into the Host Mac.
4. While holding down the power button, connect the Mac Mini to power and continue to hold the power button for about 3-5 seconds
5. You should now see the DFU logo on the Host Mac.
11. Instructions for the Mac Pro (2019)
The Mac Pro 2019 instructions were just added to the DFU instruction guide.
1. Disconnect the power cord from the Mac Pro.
2. Plug USB-C/Thunderbolt cable into the USB-C port farthest from the power button.
3. Plug the other end into the Host Mac.
4. While holding down the power button, connect the Mac Pro to power and continue to hold the power button for about 3-5 seconds.
5. You should now see the DFU logo on the Host Mac.
12. You made it! Apple Configurator 2 Steps
The hard part is now over. Now we can restore BridgeOS on the Target Mac. When you first open Apple Configurator 2 the screen will look like this.
Once your Mac is booted to DFU mode, you will see this screen on Apple Configurator 2. You are now ready for the next step.
13. Begin BridgeOS Revive
You are now ready to restore BridgeOS on the Target Mac. Click Actions > Advanced > Revive Device.
(DO NOT CLICK RESTORE YET) Only run Restore if Revive does not work. (Restore Erases your Hard drive!!!!!!!)
You will now see a warning message. Do you want update “iBridge” to the latest firmware version? You cannot undo this action. This means that once you update BridgeOS/iBridge you cannot go back to the previous version.
An updated Apple support document shows that we now have 2 different options.
Actions > Advanced > Revive Device = Reinstall BridgeOS Only
Actions > Restore = Reinstall BridgeOS & ERASE OS AND USER DATA!
The message below is what you will see on at least AC2 version 2.10 and below. OR if you click Revive instead of restore.
Click the Restore Button to begin. Step one will download the latest BridgeOS update from Apple.
Step 2. Unzipping BridgeOS
Step 3. Installing BridgeOS Update.
14. Finishing Up
If you would like to see more information you can click View and see a new activity window.
The entire process will only take about 4-10 Minutes. Most of the time is spent downloading the 400-600MB BridgeOS Update. The Unzip and Install parts only take about 1 minute each. When complete the Mac will automatically Boot up.
NOTE: with version 2.12.1, the entire process may never finish correctly and get stuck at the final part (probably a bug). Once your Target Mac is at the login window the restore is complete. The error that you might see is 0xFA5 (4005)
15. Can I Downgrade from a Beta Version of BridgeOS to a Production version? i.e Bug Sur BridgeOS to Catalina Version?
Let’s say that you installed Big Sur Beta 6, and are now having a ton of problems. You probably want to downgrade to Catalina so you can work again. The only problem is, you are still on Big Sur Beta 6 BridgeOS version 18.16.12370. Keep in mind, your Mac SHOULD still work fine with this version. An example of this is if you have Catalina 10.15.6 installed on your Mac, your BridgeOS version is 17.16.16610. Let’s say that you need to test something on version 10.15.3. After installing Catalina 10.15.3, your BridgeOS version will NOT be downgraded to the period correct version of 17.16.13050. It will run just fine on the 10.15.6 version of 17.16.16610 BridgeOS. The same is the case if you have a Big Sur Beta version of BridgeOS and you downgrade to Catalina.
The answer is YES, follow the link below for an explanation.
I can’t get my Mac to boot into DFU mode. This is the toughest part of the whole process as I mentioned above. Keep trying the steps I listed above. Sometimes it takes multiple attempts to get his to work.
You can use System Information to see if the USB-C port lists your Mac in DFU Mode.
BridgeOS Restore Error 79- The OS Cannot be restored on this device. The Operation couldn’t be completed. (AMRestoreErrorDomain error 79 – Failed to handle message type StatusMsg) [AMRestoreErrorDomain – 0x4F (79)] – If you get this error it means that the BridgeOS update has failed and is unable to complete. The system will be unable to boot. When powered on the screen will be black. The Mac will have to be brought to an Apple Store for Service.
BridgeOS Restore Error 10 – The BridgeOS Restore failed! This is most likely because the host Mac was 1 or 2 OS Versions behind the Target Mac. The Host and Target Mac need to be on the same OS Version.
If your Target Mac is on 10.15, then your Host Mac needs to be on 10.15.
The OS Cannot be restored on this device.
The operation couldn’t be completed. (AMRestoreErrorDomain error 10 – Failed to handle message type StatusMsg) [AMRestoreErrorDomain – 0xA (10)]
Host Mac and Target Mac Disconnected during restore. – Error 4005
The OS Cannot be restored on this device.
Gave up waiting for device to transition from RestoreOS state to BootedOS State. [com.apple.MobileDevice.MobileRestore – 0xFA5 (4005)]
This error will come up when the restore process has been interrupted.
Or, you might get this using Apple Configurator 2 version 2.12.1, as the process never seems to complete properly. If the Target Mac awakes to the login window the process is complete even though the progress bar is at 100%. After unplugging the USB-C cable you will get the error above.
Apple Configurator 2 Reports RECOVERY instead of DFU Status.
If you see RECOVERY this means that BridgeOS is unable to boot and is the default status when you power on the Mac.
Failed BridgeOS Restore due to OS Version Mismatch! The Target Mac is a previous OS i.e 10.14 trying to restore a 10.15 Mac, the update will fail with an Error 10
If the Mac already failed the Upgrade, it could already be in this status. If so, you can attempt a BridgeOS restore.
Configurator could not perform the requested action. Apple Controller devices do not support this action.
This means that you selected Actions > Update, which is not supported. You need to select Actions > Advanced > Revive Device
Apple Configurator 2 BridgeOS Firmware Download Location.
Thanks MrMacintosh Reader Max C for letting me know the location of the BridgeOS Firmware files.
I am going to try documenting Xcode patch change notes, maybe this will end up being useful to Developers. As Michael said if Apple would organize the patch notes with every new build version, I wouldn’t have to do this.
This article is meant to save you time going through the notes to find what is new and what is still leftover from the last beta. I went through both Beta 6 and the new New Xcode 11 Beta 7 (11M392r) release notes to find all the changes. I also included the entire patch notes list as an archive. When Apple releases the Beta 8 patch notes the previous patch notes are overwritten and taken down.
Summary of New Xcode 11 Beta 7 Patch Notes
1 New Warning
8 New Features
7 New Resolved issues
7 New Known Issues
0 New Deprecations
A Full List of changes is listed below, along with the full patch notes list.
Xcode General – Known Issues Xcode 11 beta 7 incorrectly reports as beta 6 on the welcome screen. (54795525)
1. New Warnings in Xcode 11 Beta 7
Xcode Previews in Xcode 11 beta 7 have a known incompatibility with macOS Catalina beta 6. Upgrade to macOS Catalina beta 7 or later. (54621598)
2. New Features in Xcode 11 Beta 7
General – Xcode 11 beta 7 and later supports development for devices running iOS 13.1.
Build System – 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)
Instruments – 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)
Swift – You can now use the Self expression to refer to the innermost nominal type inside structure, enumeration and class declarations. For example, the two method declarations inside this structure are equivalent:struct Box { func transform1() -> Self { return self } func transform2() -> Box { return self } } In classes, Self is the dynamic type of the self value, as before. Existing restrictions on Self in declaration types still apply; that is, Self can only appear as the return type of a method. However, Self can now be used inside the body of a method without limitation. (SE-0068, 17892696)
Swift – More thorough checking has been implemented for restrictions around escaping closures capturing in-out parameters or values of noescape type. While most code isn’t affected, there are edge cases where the Swift 5.0 compiler accepted code that violated these restrictions. (SR-8546, SR-9043, 43355341)An example of invalid code which was incorrectly accepted by the Swift 5.0 compiler is an @escaping closure that calls a local function that references an in-out parameter from an outer scope:struct BadCaptureExample { var escapingClosure: () -> () mutating func takesInOut(_ x: inout Int) { func localFunction() { x += 1 } escapingClosure = { localFunction() } } } The compiler now correctly diagnoses the above code by pointing out that the capture of x by localFunction() is invalid, since localFunction() is referenced from an @escaping closure.This also addresses certain cases where the compiler incorrectly diagnosed certain code as invalid, when in fact no violation of restrictions had taken place. For example:func takesNoEscape(_ fn: () -> ()) { func localFunction() { fn() } { localFunction() }() }
Testing – xccov now supports being passed result bundles directly, in addition to raw report and archive files. For example, to view the coverage report within a result bundle, invoke xccovas follows: xccov view –report /path/to/result_bundle.xcresult. (50500789)
Testing – The format of result bundles changed in Xcode 11. A result bundle is an asset produced by Xcode 11 with the xcresult file extension that contains information about the build, tests, code coverage, and more. Any xcresult files produced with Xcode 10 or earlier cannot be read by Xcode 11. A result bundle can be produced by passing -resultBundlePath ./Example.xcresult to an xcodebuild invocation and the Example.xcresult can then be opened in Xcode. Xcode also creates result bundles in Derived Data. The current result bundle version number is 3, which can be specified by passing the xcodebuild flag -resultBundleVersion 3. Version 3 is the default in Xcode 11, but it is still recommended for automation to explicitly pass the flag, so that any potential future versions that become the default do not cause issues to existing tools. Result bundles can be inspected using xcresulttool. A JSON representation of the root object of the result bundle can be exported using xcrun xcresulttool get –format json –path ./Example.xcresult and any nested object, identified by its reference found in the JSON output, can be exported by adding the flag –id REF. xcresulttool also provides the description of its format using xcrun xcresulttool formatDescription. (41633595)
Testing – xcodebuild is enhanced with new options supporting Test Plans. Use the new -showTestPlans option to list all test plans associated with a scheme. Use the new -testPlan option to specify which test plans associated with a scheme to use for testing or building tests. If -testPlan is not specified, xcodebuild test will use the scheme’s default test plan. (46346197)
3. New Resolved Issues in Xcode 11 Beta 7
Build System – 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)
Library – The Swift REPL and LLDB’s python scripting work properly when the python binary in PATH isn’t the system one. (40961425)
Library – Multiple issues that prevented LLDB from accessing variables while debugging XCTesttests are resolved. (41471338)
Source Control – Source control status in the file navigator will reflect the same information as git status from the terminal. (14986450)
Source Editor – Added dedicated syntax coloring for // MARK: comments and #pragma markdirectives, which you can customize in Preferences > Fonts & Colors > Mark. (22114159)
Swift – weak and unowned stored properties no longer inhibit the automatic synthesis of Equatable or Hashable conformance. (SR-9827, 50566123)
Swift Packages – Adding a new file in a C-family target of a Swift package doesn’t create the file with the .swift extension. (31395814)
4. New Known Issues in Xcode 11 Beta 7
General – Xcode 11 beta 7 incorrectly reports as beta 6 on the welcome screen. (54795525)
Build System – 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 codesignprocess, or perform a clean build.
Source Control – When using xcodebuild, resolving packages may fail to verify SSH fingerprints unless that fingerprint is already in the ~/.ssh/known_hosts file. (50686014)Workaround: SSH into the host and verify the fingerprint from the command line before using xcodebuild, or manually add the host fingerprint to the ~/.ssh/known_hostsfile.
SwiftUI – Drag and drop operations that result in insertions of containers around an existing view and a new sibling in the container don’t work if the existing view is at the top level of a conditional statement in a view builder. For example, you can’t drop an HStack or VStackaround the Text. (50300406):var body: some View { VStack { if true { Text(“Hello World”) } } } Workaround: Embed the existing view into a container — either in the canvas or the source editor — then drop the new view into that container.
SwiftUI – Dragging a Text modifier onto text in the canvas that already has a View modifier such as frame(width:height:alignment:) results in a compilation error. (50712235)Workaround: Reorder the modifiers so that modifiers specific to Text appear before any View modifiers.
SwiftUI Tutorials – The scheme that’s autogenerated for a Swift package isn’t automatically updated when the package adds or removes targets. (50586754)Workaround: Delete the scheme from the swiftpm/xcode/xcshareddata/xcschemes directory inside the package directory, then reopen the package to automatically generate a new scheme.
Swift Packages – The scheme that’s autogenerated for a Swift package isn’t automatically updated when the package adds or removes targets. (50586754)Workaround: Delete the scheme from the swiftpm/xcode/xcshareddata/xcschemes directory inside the package directory, then reopen the package to automatically generate a new scheme.
5. New Deprecations in Xcode 11 Beta 7
None
General
New Features
Xcode 11 beta 7 and later supports development for devices running iOS 13.1.
Xcode 11 beta supports development with SwiftUI.NoteTools 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)
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)
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
Xcode 11 beta 7 incorrectly reports as beta 6 on the welcome screen. (54795525)
Xcode 11 doesn’t support working with SwiftUI in a Mac Catalyst app. (41416222, 51201699)
Resolved Issues
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)
Issue text is no longer light when using a light theme with a dark system appearance. (48230278)
Apple Clang Compiler
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)
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)
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)
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 value2 = 0; // Stored in __DATA
const int * const valuePtr = &value1; // Stored in __DATA_CONST
// ERROR: Attempting to store a value to a constant pointer
(int *)valuePtr = &value2;
Clang now supports the C++17 <filesystem> library for iOS 13, macOS 10.15, watchOS 6, and tvOS 13. (50988273)
Resolved Issues
When using manual retain-release, exceptions thrown from the following methods or any functions or methods they transitively call will properly be caught: release, autorelease, retain, alloc, or allocWithZone. (50253394)
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)
Resolved a long compile-time issue in the loop-invariant code motion pass of the optimizer. (39648918)
Asset Catalog
New Features
Assets can now be cut, copied, pasted, and duplicated using the menu or keyboard shortcuts. (27107912)
Known Issues
Localized assets in an asset catalog aren’t matched to the user-preferred languages and locales. (49565973)
Resolved Issues
Fixed crash that could occur when loading recent colors. (53027898)
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)
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)
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
New Features
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)
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)
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)
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
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 codesignprocess, 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)
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.
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.
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.
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)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)Workaround: Allow access to the files in the prompt.
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)
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)
The build system no longer crashes when building some targets that use On Demand Resources. (49072702)
Command Line Tools
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)
Python 3 is available in the Command Line Tools package. (51727440)
Known Issues
When using the Command Line Tools for beta 4 or later, some users may experience random crashes in the Swift compiler. (53582696)Workaround: In Terminal, execute the command sudo rm -f /Library/Developer/CommandLineTools/usr/lib/swift/macosx/libswift*.dylib.
Deprecations
Xcode’s built-in usdz_converter tool is deprecated and will be removed. Use the updated tool suite located under Resources in Augmented Reality. (52922369)
Core Data
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)
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)
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
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)
Create ML
New Features
Activity classification, tabular classification, tabular regressor, and word tagger templates are available in Create ML. (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)
You can now classify sounds live directly from the microphone using Sound Classification preview. (52131594)
Known Issues
Non-ASCII characters cannot be used as training labels for Image Classification and Sound Classification. (53594243)
Apps importing the Create ML framework may not launch if they are compiled by Xcode 11. This doesn’t impact existing apps. (53795065)Workaround: Add the file libswiftCreateML.tbd in the ‘Link Library with Libraries’ section.
Resolved Issues
Resolved a crash that could occur when using Live listen devices without a microphone. (53472928)
The progress graph in the sound classifier updates appropriately. (52911042)
Debugging
New Features
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)
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)
The view debugger shows UIWindowScene instances in the debug navigator and canvas. (45378799)
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 view debugger supports debugging Mac Catalyst apps. (37507479)
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 the names of UIImage instances. (45327089)
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 “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)
The debugger supports working with crash logs (.crash files). (48408310)
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)
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)
Known Issues
When trying to run a Watch App from Xcode that has the ‘Supports Running Without iOS App Installation’ setting on a pre-watchOS 6.0 device or simulator the Watch App doesn’t launch. (54104164)Workaround: Build and Run the containing iOS App once to the paired iPhone device or simulator. Then you can switch back to the Watch App scheme and it will work normally.
Console output for Previews is only shown when debugging Live Previews in the Simulator. (49891045)
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)
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.
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.
App and thermal state tracks in the Energy Impact gauge might stop updating. (50968828)Workaround: Stop and rerun the app.
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)
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)
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)
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)
Breakpoints support the VoiceOver command to open the shortcut menu. (44940944)
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)
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)
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)
Devices
Known Issues
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.
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.
Building and running a watchOS app on a device might show a system spinner indefinitely. (51726238)Workaround: Reboot the device.
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 with half point frame differences caused by switching between Retina and non-Retina monitors. (20175879)
DriverKit
Resolved Issues
DriverKit drivers build properly. (52858797)
Instruments
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)
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)
When profiling a standalone watchOS app, an iOS simulator is launched. (49788679)
Resolved Issues
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)
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’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 also set the root view of a UIHostingController or NSHostingControllerusing a Segue Action.
The object library now matches the selected system-wide appearance. (50874168)
The NSStackView inspector now allows configuring negative spacing. (49012055)
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 UICollectionView can now self size with Auto Layout constrained views in the canvas. To opt into the behavior for existing collection views, enable “Automatic” for the collection view’s estimated size, and “Automatic” for cell’s size from the Size inspector. If deploying before iOS 13, you can activate self sizing collection view cells by calling performBatchUpdates(_:completion:) during viewDidLoad(). (45617083)
In inspector font popovers, the Family popup now renders menu items as a preview of the applicable font. (31484154)
Update Frames can now be performed document-wide for misplaced frames, without selecting a view. (22076710)
Content and Frame Layout guides are supported for UIScrollView and can be enabled in the Size inspector for more control over your scrollable content. (29711618)
Interface Builder supports the new Apple TV tab bar style. (47598643)
The new WKInterfaceTextField interface element is available for watchOS. (45754186)
The canvas supports customizing interfaces for Mac Catalyst apps. (37797710)
SF Symbols are available in image inspector properties. (47532055)
The UIImageView inspector includes support for configuring symbols. (47797500)
A view controller method annotated with the new @IBSegueAction attribute can be used to create a segue’s destination view controller in code, using a custom initializer with any required values. This makes it possible to use view controllers with non-optional initialization requirements in storyboards. Create a connection from a segue to an @IBSegueAction method on its source view controller. On new OS versions that support Segue Actions, that method will be called and the value it returns will be the destinationViewController of the segue object passed to prepare(for:sender:). Multiple @IBSegueAction methods may be defined on a single source view controller, which can alleviate the need to check segue identifier strings in prepare(for:sender:). (47091566)An IBSegueAction method takes up to three parameters: a coder, the sender, and the segue’s identifier. The first parameter is required, and the other parameters can be omitted from your method’s signature if desired. The NSCoder must be passed through to the destination view controller’s initializer, to ensure it’s customized with values configured in storyboard. The method returns a view controller that matches the destination controller type defined in the storyboard, or nil to cause a destination controller to be initialized with the standard init(coder:) method. If you know you don’t need to return nil, the return type can be non-optional.In Swift, add the @IBSegueAction attribute:@IBSegueAction
func makeDogController(coder: NSCoder, sender: Any?, segueIdentifier: String?) -> ViewController? {
PetController(
coder: coder,
petName: self.selectedPetName, type: .dog
)
}
In Objective-C, add IBSegueAction in front of the return type:- (IBSegueAction ViewController *)makeDogController:(NSCoder *)coder
sender:(id)sender
segueIdentifier:(NSString *)segueIdentifier
{
return [PetController initWithCoder:coder
petName:self.selectedPetName
type:@"dog"];
}
Known Issues
A Segue Action on a relationship segue between a NSWindowController and a View Controller is currently not supported and ignored. (48252727)
Older IB3 documents strings won’t be extracted during localization export, and won’t be included in the XLIFF. (47650747)
When viewing an iPad storyboard with the Mac device selected in the device bar, custom fonts added by the project don’t render. (48528374)
If a glyph has a light and dark mode representation, the dark mode representation won’t be picked up in the storyboard. (50354204)
UIKit menus configured in Interface Builder are available at runtime on macOS, but not on iOS. (51077651)
The iOS status bar is not displayed in the Interface Builder canvas. (48639919)
Projects created with Xcode versions prior to Xcode 11 beta retain their default custom color when opened in Xcode 11 beta. (50828300)
Resolved Issues
Connect-to-source popover fields support cut, copy, paste, and select all. (40899355)
Fixed an issue that prevented connect-to-source from connecting actions to methods. (53441991)
Device bar icons draw correctly with “Use Trait Variations” unchecked. (52848149)
TVCardView’s background color inspector menu will list colors other than just Mac system colors. (53122711)
Changing global tint color will show in canvas, without needing to reload the document. (53278707)
View controller scenes that contain menu commands created with Xcode 11 no longer cause the app to crash when running on iOS 12. (50871098)
ARView objects in Apple TV storyboards no longer crash Interface Builder rendering. (50971800)
Fixed a compilation issue for storyboards that have a NSCollectionView flow layout item size of NSZeroSize. Xcode will reinterpret the value as the default item size. (53448850)
Storyboards and .xib files in iOS or tvOS template projects created with Xcode 11 can now be opened in previous Xcode versions. (51230799)
Storyboards and .xib files created with Xcode 11 containing Quaternary System Fill Color, Secondary System Fill Color, Tertiary System Fill Color, or System Fill Color can be opened on older Xcode versions without causing a crash. (51233884, 51236844)
Fixed collection view cell self-sizing layout issues coming from storyboards and .xib files when compiling and deploying to iOS 12.4 and later (49537998)
Resolved an issue that prevented the light or dark interface style group in the Interface Builder device bar from taking effect when viewing a storyboard for a Mac Catalyst app. (50929581)
Corrected the alignment of UILabel, UITextField, and UITextView instances with alignment set to “center” or “right” in Interface Builder when designing for or running on macOS. (50062524)
Xcode doesn’t crash when opening a .xib file or storyboard file with a custom view that’s marked as IBDesignable if that project contains Swift packages. (50551974)
Dragging out a new iOS Main Menu no longer causes a crash if you drag across an existing menu in the canvas. (51237295)
Resolved a performance regression associated with opening storyboards and .xib files. (51282755)
The inspector for UIDatePicker now shows only the properties applicable to the selected mode. (26726319)
The preview editor’s menu for adding iOS devices now matches the current canvas orientation. (48818470)
Preview editor items now preserve the configured locale or pseudo-locale. (48303753)
UIDatePicker objects configured as Count Down in Interface Builder now use the specified duration at runtime. (23426425)
The Embed In bar button is also visible in documents not using Auto Layout. (46855203)
Subclasses of NSControl now have unique icons in the library and document outline. (24231920)
Library
Known Issues
Fixed an issue where child view controllers had incorrect background colors when dragged from the library. (50388578)
All UI controls from the library correctly switch to dark mode. (49830961)
Linking
Resolved Issues
Targets containing Swift code with the Enable Bitcode build setting set to Yes link correctly when built with the Archive action. (52804818)
LLDB
New Features
LLDB’s Python scripting is now based on Python 3. If you are using Python extensions that aren’t compatible with Python 3, they will break. To help with the transition, you can run in Python 2 mode by setting a default:defaults write com.apple.dt.lldb DefaultPythonVersion 2
Python 2 support will be removed in the future. (47806994)
Swift Decimal values have a data formatter in LLDB, making them display in a readable way. (38983073)
LLDB now supports examining Swift types that are compiled with support for library evolution. (48018240)
Resolved Issues
Redeclaring self in Swift code works properly with LLDB. (39611934)
The Swift REPL and LLDB’s python scripting work properly when the python binary in PATH isn’t the system one. (40961425)
Multiple issues that prevented LLDB from accessing variables while debugging XCTesttests are resolved. (41471338)
Localization
New Features
You can now localize assets in asset catalogs. Localization is enabled in the attribute inspector. (12948139)
The settings bundle is now included in Xcode Localization Catalogs. (12495197)
The manual page for genstrings has documents its behavior in more detail. (19709369)
The genstrings tool is enhanced and merged with the extractLocStrings tool. The previous version is deprecated, has been renamed to ogenstrings, and must now be invoked with xcrun. Any scripts that invoked xcrun extractLocStrings should be changed to use genstrings, but a compatibility symbolic link is currently provided that invokes genstrings. (19709395)
The genstrings tool now takes an -encoding argument that allows specification of the file encoding for input files. (48224455)
The updated version of genstrings has improved error reporting, and may report errors in scenarios that were previously silently accepted. As an example, genstrings MyApp/* will fail if the MyApp directory contains a subdirectory, because genstrings file arguments are required to be source files. (48304658)
The genstrings tool can now take any number of -s arguments to specify additional macros similar to NSLocalizedString or functions from which to extract strings. For example, genstrings -s MyErrorSring -s MyUIString myfile.swift treats both MyErrorString and MyUIString as equivalent to NSLocalizedString. (48734596)NoteUsing -s arguments doesn’t suppress support for NSLocalizedString or CFCopyLocalizedString.
The Export for Localization command and genstrings tool now support multiline Swift and Objective-C strings, and have relaxed whitespace requirements when recognizing arguments to NSLocalizedString. (50516442)
The performance of the Export for Localization command is substantially improved. (40548416)
Resolved Issues
The Export for Localization command and genstrings tool no longer crash on escaped, high Unicode code points such as \U0001F603. (18898240)
Importing a localized string that contains embedded newlines now produces strings files with escaped \n sequences. (44649979)
XLIFF files produced by Xcode localization export now add xml:space="preserve" to <trans-unit /> elements to ensure that whitespace is preserved. (44928807)
Mac Catalyst
Known Issues
The color asset variant for Mac Catalyst isn’t passed at runtime. (51113192)
The NSDataAsset asset variation for Mac Catalyst returns nil at runtime. (50022757)
Organizer
New Features
The new Metrics organizer shows battery life and performance analytics for your app to help you drive optimizations.
Metrics are reported for your app when distributed on the App Store and after sufficient field use.
The available metrics are battery drain, launch time, hang rate, memory, and disk writes.
You can filter data by device and usage characteristics. (43028903)
Playgrounds
Known Issues
Playgrounds don’t work on machines running macOS 10.14, and playgrounds that use SwiftUI may not work on machines running macOS earlier than 10.15 beta 5. (54054895)
Playgrounds in a workspace can’t import targets from a Swift package. (47668990)
Resolved Issues
SwiftUI live views and inline results in playgrounds are supported. (42226387)
Quick looks and inline result previews of views in UIKit no longer display as blank rectangles. (50787870)
The top few lines of a playground no longer become stuck under the top of the window. (47529397)
Fixed a delay that could occur when running a playground on macOS 10.15 with a slow or unreliable internet connection. (48995467)
Playgrounds no longer crash if your code references a view off of the main thread. (46579594)
Project Navigator
New Features
Xcode can find assets in your workspace or project using the Find navigator. The Asset catalog Editor also supports find and replace, and you can rename assets using Replace. (14279237)
Reality Composer
New Features
Added support for object anchors in AR scenes. (48774003)
Known Issues
A new project that contains a USDz file and was never manually saved will have missing USDz objects when opened after an autosave. (53565602)Workaround: Manually save and re-open the project.
Reality Files created by previously released beta versions of Reality Composer or Xcode are no longer supported. (53180175)Workaround: Re-export your Reality Files using the latest version of Reality Composer or Xcode.
Objects added from the content library in Reality Composer on macOS are incompatible with build 1A68 of Reality Composer on iOS and iPadOS.
The RealityKitARView class isn’t found at runtime when loading a storyboard if its module isn’t specified in Interface Builder. The following error message displays in the Xcode console: “Unknown class ARView in Interface Builder file.” (50840767)Workaround:ARView is a Swift view class, and requires both its class name (ARView) and module (RealityKit) to be specified in the Interface Builder inspector.
RealityKit’s ARView class is not found at runtime when loading a storyboard if RealityKit isn’t otherwise used within the Xcode project. The following error message displays in the Xcode console: “Unknown class _TtC10RealityKit6ARView in Interface Builder file.” (50900969)Workaround: This issue occurs if you import RealityKit and define an @IBOutlet with a type of ARView, but don’t otherwise use RealityKit symbols in your project. To ensure that RealityKit is loaded at runtime with this configuration, manually add RealityKit to your target’s Link Binary with Libraries build phase.
Resolved Issues
Improved support for imported USDZ files. (49630946)
Improved support for manipulating objects. (50036512)
Notification triggers and notify actions from other scenes no longer appear in scenes in which they weren’t authored. (51008577)
The .reality file generated automatically by Xcode from a Reality Composer project contains all scenes in the project. (51048599, 51868814)
RealityKit is available in iOS simulators. (48603396)
Server
Known Issues
When editing bots for a project that authenticates with SSH, Xcode Server may disable some project-specific settings. (51009722)Workaround: Either replace repositories in the Repositories tab when editing the bot or use HTTPS-based authentication with your Xcode Server integrations.
Xcode Server can cause a crash when a bot is created from the context menu of any integration. (51082255)Workaround: Create bots from the context menu of the server or from the Product menu in Xcode.
Build issues occurring in a source file built by multiple targets may be marked resolved and reintroduced on every integration. (46523551)
Resolved Issues
Xcode Server now supports Mac Catalyst apps. (50602873)
Swift packages consistently appear in the Xcode Server bot configuration Repositories pane. (50058808)
Resolved an issue where Xcode Server failed to automatically sign projects that use the iCloud, Application Groups, Apple Pay, or Wallet capabilities. (41008156, 44704694)
Signing and Distribution
New Features
Xcode 11 beta 4 supports the new maccatalyst. bundle identifier prefix. As a result, provisioning profiles used by Mac Catalyst apps must be regenerated to reflect the new prefix. If you’re using automatic signing, a new provisioning profile is generated automatically. If you’re using manual signing, log into your developer account and regenerate the provisioning profiles used by your Mac Catalyst apps. (52535178)If you’re using a previous Xcode 11 beta and already have a provisioning profile for your app, it continues to work until you update to Xcode 11 beta 4. If you don’t already have a provisioning profile for your app, you need to update to Xcode 11 beta 4 in order to generate one with the correct app ID prefix.If your code contains references to your bundle identifier, you will need to update those references.
Signing and capabilities settings are now combined within a new Signing & Capabilities tab in the Project Editor. The new tab enables using different app capabilities across multiple build configurations. The new capabilities library makes it possible to search for available capabilities. (35254597)
Xcode 11 supports the new Apple Development and Apple Distribution certificate types. These certificates support building, running, and distributing apps on any Apple platform. Preexisting iOS and macOS development and distribution certificates continue to work, however, new certificates you create in Xcode 11 use the new types. Previous versions of Xcode don’t support these certificates. (45527608)
Known Issues
If your iPad app uses private entitlements, those entitlements may not be available for use in your Mac Catalyst app. (51599125)Workaround: Generate a new entitlements file for your Mac Catalyst app and exclude the unavailable entitlements by following these steps:1. Select your entitlements file in the project navigator then select File > Duplicate.2. Give your Mac Catalyst entitlements file a unique name and save it.3. Remove any unavailable private entitlements from your new Mac Catalyst entitlements file.4. Navigate to your Mac Catalyst app’s build settings in the project editor and locate the Code Signing Entitlements build setting.5. Expand the build setting so that you can view its value for all build configurations. For each of your build configurations, click the plus (+) button to add a conditional setting.6. From the popup button in each conditional setting, select Any macOS, then edit the conditional setting’s value to refer to the name of your new Mac Catalyst entitlements file.
Automatic signing may fail with the error “This request is forbidden for security reasons” when creating a development certificate. (50964225)Workaround: You may have hit a certificate limit for your account. View your Apple Developer account in Safari and revoke any development certificates that you aren’t using, then try again in Xcode.
The archive action does not code sign command-line executable products from Swift packages. (48717735)Workaround: Manually sign archived executables using the codesign tool before distributing them.
Mac provisioning profiles that you have manually installed using the bot editor’s Signing tab will be installed using the wrong file extension, causing integrations to fail. (47636041)Workaround: Sign into your bot user’s account and rename the affected profiles in the ~/Library/MobileDevice/Provisioning Profiles directory.
Resolved Issues
Fixed a code signing issue that caused In-App purchase content bundles to fail to build. (50736776)
Resolved an issue where Xcode threw an error when creating new signing certificates for members of the iOS Developer University Program. (50640287)
Resolved an issue where Xcode incorrectly reported: “No iTunes Connect access for the team” when uploading to the App Store. (39292849)
Simulator
New Features
Simulator can automatically select the macOS GPU based on the current power source. When your Mac is connected to AC power the discrete GPU is used. When your Mac is running on battery power the integrated GPU is used. You can change the policy in Simulator by navigating to File > GPU Selection. (53032365)
simctl can now override status bar values for iOS devices. For example, to set the time and battery, use:xcrun simctl status_bar <device> override --time "9:41" --batteryState charged --batteryLevel 100
See xcrun simctl help status_bar for the full range of options. (51697821)
Metal is available in iOS 13 and tvOS 13 simulators when running on macOS 10.15. Metal code is executed on the host Mac GPU, and is significantly faster than simulated OpenGL code. The APIs in SceneKit, CoreAnimation, and other system frameworks abstract many differences between GPUs, reducing the need for device-specific code. When running on earlier versions of macOS or in an environment where Metal is not available, simulators continue to use software rendered OpenGL. If your Mac has multiple GPUs, use the File menu in Simulator to select which GPU to use. If the GPU in use becomes unavailable, any simulators using it automatically shut down. (18430676)
Xcode no longer creates every available iOS simulator device by default. Instead a set of the most commonly used devices are created. To create other devices — or multiple instances of a device — open the Devices window, select Simulators, click the + button, enter a name, and select the relevant device type and OS version. (49428617)
CAMetalLayer is available in iOS 13 and tvOS 13 simulators. (45101325)
iOS 13, watchOS 6, and tvOS 13 simulators now have a dyld shared cache. This improves simulator launch times and reduces the number of open file handles used by simulator processes. If you report an issue you believe is related to the shared cache, include a simctl diagnose and the output of launching your program with DYLD_PRINT_LIBRARIES=1. (13632739)
simctl now accepts short aliases for runtime names. This means you can create a new iPhone X simulator with a command like simctl create 'iPhone X' iOS13. (41089607)
For headless and continuous integration scenarios, you can configure CoreSimulator to skip compositing operations in the virtual frame buffer by setting defaults write com.apple.CoreSimulator FramebufferServerRendererPolicy to none. In this mode simulators can’t be viewed and simctl io is unable to take screenshots or record videos. (48264341)
Bundles without a CFBundleVersion are invalid and can’t be properly installed on devices or simulators. CoreSimulator now checks and rejects such bundles earlier in the process with a clearer error message. (49892531)
The Simulator dock icon now includes a menu to quickly boot a simulator. (43067512)
Simulator’s File menu now includes a GPU selection menu to control which GPU is used by Metal support in simulators and for compositing by Simulator’s virtual frame buffer. If the Use External GPU When Available item is checked, any simulators booted after an external GPU is connected use the external GPU. If the external GPU is disconnected, any simulators using it automatically shut down. Changes to these settings only take effect when a simulator is booted. Simulators already booted when this setting is changed continue using the previously selected GPU until they’re restarted. (46134036)
Game controller input is available in iOS simulators. (50082777)
Known Issues
Some clipboard-related actions in other applications may occasionally cause Simulator to crash or become unresponsive when automatic pasteboard synchronization is enabled. (54011137)Workaround: Disable “Automatically Sync Pasteboard” in Simulator’s Edit menu. Restart Simulator to recover from an unresponsive state.
Changing the audio in a simulated device while a video is playing in Safari will mute the audio of the video. (51207286)
Simulator doesn’t distribute the load if multiple GPUs in a system match the chosen GPU policy. Only the first matching GPU, as returned by MTLCopyAllDevices(), is used. (50608554)Workaround: You may see higher performance by locating the simulator window on the display directly connected to the GPU the simulator is using, which avoids copying across GPUs.NoteAs with any app that leverages the GPU, the performance behavior for an externally connected display varies depending on workload.
Video recording of the iOS 13, tvOS 13, and watchOS 6 simulator through xcrun simctl io <UDID> recordVideo returns an error instead of recording video. (50625716)
watchOS simulators don’t honor a breakpoint on a cold boot. (51148192)Workaround: Completely boot the simulator before launching the app you’re debugging.
Resolved Issues
Automatic pasteboard synchronization now functions correctly for all Simulators running iOS 11.1 and newer. (53231481)
Invoking Send Pasteboard immediately after Get Pasteboard in Simulator no longer causes devices to become unusable. (52866417)
Fixed the ability to override cellular bars with simctl. (51698044)
The Rotate Device Automatically option in Simulator works with iOS 13 simulators. (51147050)
Simulator delivers game controller events to simulated devices when Simulator isn’t the foreground app on macOS Catalina 10.15. (51759699)
Fixed an issue that caused simulators to stop presenting frame updates to the screen. (51993678)
Simulator correctly displays the checkmark for Touch ID > Enrolled when it’s enrolled. (50553667)
Automatic synchronization of pasteboards between a host and simulated devices behaves correctly. (46686100)
Safari’s Share to Simulator behaves correctly. (49331693, 49416352)
Resolved a leak of IOSurface instances in processes in Simulator on macOS 10.14.5 and earlier. (50880827)
iCloud sync is available in iOS simulators. (50924245)
iOS 13 simulators don’t have a simulated display connected when TVOut is configured as “disconnected”. (50829453)
iOS simulators color match Metal content to the display’s color space. (50625671)
Resolved an issue that caused Core Image shaders using Metal to fail to run on iOS 13 simulators, with the error “Metal DAG compiler disabled.” (51521248)
Game controllers work properly with iPad simulators. (51034639)
Resolved an issue that prevented simulator devices running versions of iOS prior to iOS 13 from rendering the display correctly. (50963987)
IOSurface is now functional in iOS 13, watchOS 6, and tvOS 13 simulators. (11051639)
Apps in a simulator that plays audio no longer automatically also open the microphone for input. (32406954)
The previously deprecated availability field in simctl list’s JSON output is removed. Use the isAvailable Boolean field to determine availability. (45142676)
ATSC texture formats are supported by transparently decompressing them on the CPU prior to uploading them to the macOS GPU. (51347811)
Source Control
New Features
You can now cherry-pick changes from one branch to another. (18285039)
When cloning a new repository, you can now select the branch to check out from the list of available branches. (41122122)
Using the new source control file inspector, you can browse the full history of a file for the current branch. The log inspector is available for all file types, including Interface Builder documents. (45109443)
You can now stash changes and manage stashes from the source control navigator. Additionally, Xcode offers to automatically stash and restore changes for source control operations like pulling from a repository. (8797804)
Source control authors are now available on a per-editor basis. (45108927)
Known Issues
When performing a Pull in Xcode on a branch that’s already up to date when rebase is enabled, the sheet doesn’t dismiss automatically. (50377240)
Viewing the changes for a revision of a file from the source control log inspector may fail if that file has since been renamed. (49673170)
Filtering packages in the Add Package assistant isn’t supported for Bitbucket Cloud or Bitbucket Server hosted accounts. (47290085)
Filtering packages in the Add Package assistant isn’t supported for GitLab or GitLab Self-Managed hosted accounts. (47290125)
When using xcodebuild, resolving packages may fail to verify SSH fingerprints unless that fingerprint is already in the ~/.ssh/known_hosts file. (50686014)Workaround: SSH into the host and verify the fingerprint from the command line before using xcodebuild, or manually add the host fingerprint to the ~/.ssh/known_hostsfile.
Resolved Issues
Source control status in the file navigator will reflect the same information as git statusfrom the terminal. (14986450)
Improved the display of source control information when the Package.swift file is selected in the project navigator. (50696823)
Pulling with rebase no longer fails if author information isn’t yet configured for Git in Preferences > Source Control. (48680076)
Resolved issues where hosted account providers like GitHub and BitBucket were unavailable in the add account sheet, and previously added accounts would be disabled. (47645098)
Addresses an issue where source control operations in Xcode presented a “Couldn’t communicate with helper application” dialog. (47227781)
Fixes a performance issue where Personal, organizational and Starred repositories took a long time to load. (48620126)
Addresses an issue where user avatars from GitHub didn’t always load after adding a GitHub account. (48698029)
Fixes a bug where some source editor menu options were unavailable in the Code Review Editor. (48774008)
Source Editor
New Features
Semantic highlighting, code completion, live issues, symbol search, and jump-to-definition are now supported for the Metal shading language. (45144204)
Introduces the ability to view inline code diffs for changes in the Source Editor by clicking on the Source Control Change Bar and choosing Show or Hide Change. (49073551)
Added new High Contrast (Dark) theme and High Contrast (Light) theme. Also added new settings for Marks, Type Declarations and Other Declarations. (50036007)
Added dedicated syntax coloring for declarations in Swift files, which can be customized in Preferences > Fonts & Colors under Type Declarations and Other Declarations. Declaration coloring for C-family languages isn’t supported. (10342935)
Xcode’s source editor now supports spell checking. (32062963)
Xcode 11’s source editor introduces a mini map of the file. The mini map includes legible text for Mark:, 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. (35939517)
Added syntax highlighting for markup in documentation comments and playground markup. You can customize the prose font in Preferences > Fonts & Colors under Documentation Markup, and customize delimiter appearance in Preferences > Text Editing > Display. (42941263)
When dragging and dropping text, space is opened up between lines to make it easier to see where text will be dropped. When dragging full lines, Xcode only allows drops to occur between other lines. (44735912)
The editor allows hierarchical code folding. (47502128)
Code folding supports square brackets, and parentheses. (50460404)
// MARK: comments and #pragma mark directives now draw a separator line in the editor. The preference for showing mark separators is in Preferences > Text Editing > Display > Show Mark Separators. (7299224)
Resolved Issues
NSProgressIndicator objects now preserve the current value configured in the inspector when built and run. (43257511)
C++ operator overloads are shown in the Jump Bar. (50841460)
Resolved an issue where Xcode erroneously opened an assistant editor when you ran Fix All Issues using a keyboard shortcut. (37995114)
Added dedicated syntax coloring for // MARK: comments and #pragma markdirectives, which you can customize in Preferences > Fonts & Colors > Mark. (22114159)
You can command-click on Swift operators to use Quick Help and Jump to Definition. (32695862)
Resolved an issue that could occur when editing an unclosed block in Objective-C. (48201424)
Resolved an issue where code completion sorted deprecated symbols ahead of their nondeprecated counterparts. (38422586)
Resolved an issue where code completion rows appeared empty when deleting text. (48621410)
Resolved an issue where C++ functions weren’t parsed correctly when using throw or noexcept clauses. (37682611)
Accessibility Zoom focus now follows the insertion point in the source editor while typing. (32775118)
VoiceOver doesn’t repeat the previous line when moving by line in the source editor. (34334763)
VoiceOver has rotors in the source editor for methods, errors, warnings, breakpoints, and marks which makes it easy to search for and move to the line of code corresponding to an error or other rotor item. (34493080)
VoiceOver text attributes now include the number of spaces, number of tabs, indent level and line number for a line of code in the source editor. (34607795)
VoiceOver no longer speaks extra characters around placeholder tokens when reading in the source editor, and says that they are placeholders. (44941610)
Resolved an issue where C++ raw strings didn’t highlight correctly. (10770485)
Resolved an issue of issues where C++ class declarations didn’t parse correctly when using qualified names, templates, or multiple inheritance. (11286215)
Resolved an issue where local classes nested inside functions or methods weren’t shown in the jump bar. (13337638)
Resolved an issue where C++11 trailing return types weren’t properly recognized. (13634062)
Resolved an issue where C++ typed enums were not parsed correctly. (13693443)
Improved the parsing of declarations that use availability macros and attributes. (14569168)
Resolved an issue where C++ numeric literals with single quotes were not recognized. (18121031)
Resolved an issue where struct member functions were not parsed correctly. (27946356)
Resolved an issue where enum declarations were not displayed in the Jump Bar correctly. (32518576)
Improved the recognition of classes and functions in JavaScript. (42537831)
Resolved an issue where functions returning enum types were not parsed correctly. (46164630)
Resolved an issue where unsigned and long integer literals were not syntax colored correctly. (47138177)
Updated JavaScript syntax highlighting to include ECMAScript 6 keywords. (47354463)
Fixed an issue where double clicking on a C++ destructor name would also select the tilde (~). (6368356)
Static Analyzer
New Features
The static analyzer checks for violations of the MIG calling convention in mach server routines. These violations can lead to use-after-free vulnerabilities. (35380337)
The static analyzer checks for violations of IOKit and libkern reference counting rules with respect to out-parameters. (46357478)
The static analyzer checks for violations of DriverKit reference counting rules. These violations can lead to leaks and use-after-free issues. (50349513)
Swift
New Features
The @frozen attribute for structures and enumerations is now available. (36597490)
The memberwise initializer for structures now provides default values for variables that hold default expressions. (SE-0242, 47130624)struct Dog {
var name = "Generic dog name"
var age = 0
// The synthesized memberwise initializer
init(name: String = "Generic dog name", age: Int = 0)
}
let sparky = Dog(name: "Sparky") // Dog(name: "Sparky", age: 0)
An @autoclosure parameter can now be declared using a type alias. (SR-2688, 50560849)class Foo {
typealias FooClosure = () -> String
func fooFunction(closure: @autoclosure FooClosure) {}
}
Methods declared using the @objc attribute inside a class can now return Self. (SR-7601, 50560991)class MyClass: NSObject {
@objc func clone() -> Self { return self }
}
Key path expressions can now include references to tuple elements. (50562288)
Single-parameter functions that accept values of type Any are no longer preferred over other functions. (50562333)
Conversions between tuple types are now fully implemented. Previously, the following would diagnose an error. (SR-2672, 12340004)let values: (Int, Int) = (10, 15)
let converted: (Int?, Any) = values
You can now declare and use type subscripts, just like type properties and type methods. Declare one by applying the static or, in classes, class modifier to the subscript declaration. (SE-0254, 16555559)// Declare a type with a static subscript:
enum ProcessEnvironment {
static subscript(name: String) -> String? {
get { getenv(name) }
set { setenv(name, to: newValue) }
}
}
// Use it with any of these syntaxes:
ProcessEnvironment["PATH"]! += ":/usr/local/bin"
ProcessEnvironment["PATH"]! += ":/usr/local/bin"
someVarOfProcessEnvironmentDotType["PATH"]! += ":/usr/local/bin"
Type subscripts can also be used with dynamic member lookup to create dynamic type properties.// Declare a type with a static subscript:
@dynamicMemberLookup
enum ProcessEnvironment {
// …As above…
static subscript(dynamicMember name: String) -> String? {
get { self[name] }
set { self[name] = newValue }
}
}
// Now you can use property syntax with ProcessEnvironment:
ProcessEnvironment.PATH! += ":/usr/local/bin"
ProcessEnvironment.self.PATH! += ":/usr/local/bin"
someVarOfProcessEnvironmentDotType.PATH! += ":/usr/local/bin"
Assigning Optional.none to an enumeration that also has a none case, or comparing such an enumeration with Optional.none now produces a warning. Such expressions create an ambiguity because the compiler chooses Optional.none over the none case defined by your own enumeration. (SR-2176, 26126801)enum Foo { case none }
// Assigned Optional.none instead of Foo.none.
let foo: Foo? = .none
// Comparing with Optional.none instead of Foo.none.
let isEqual = foo == .none
The compiler provides a warning along with a fix-it to replace .none with Optional.none or Foo.none to resolve the ambiguity.
Functions can now hide their concrete return type by declaring what protocols it conforms to, instead of specifying the exact return type:func makeACollection() -> some Collection {
return [1, 2, 3]
}
Code that calls the function can use the interface of the protocol, but doesn’t have visibility into the underlying type. (SE-0244, 40538331)
Enum cases can now be matched against an optional enum without requiring a ‘?’ at the end of the pattern. (SR-7799, 41494702)enum Foo { case zero, one }
let foo: Foo? = .zero
switch foo {
case .zero: break
case .one: break
case .none: break
}
The existing @dynamicMemberLookup attribute now supports typed key path implementations. (SE-0252, 49069813)struct Point {
var x, y: Int
}
@dynamicMemberLookup
struct Box<T> {
var v: T
init(_ v: T) {
self.v = v
}
subscript<U>(dynamicMember member: KeyPath<T, U>) -> U {
get { return v[keyPath: member] }
}
}
var box = Box(Point(x: 0, y: 0))
_ = box.x
You can now use the Self expression to refer to the innermost nominal type inside structure, enumeration and class declarations. For example, the two method declarations inside this structure are equivalent:struct Box<Value> {
func transform1() -> Self { return self }
func transform2() -> Box<Value> { return self }
}
In classes, Self is the dynamic type of the self value, as before. Existing restrictions on Self in declaration types still apply; that is, Self can only appear as the return type of a method. However, Self can now be used inside the body of a method without limitation. (SE-0068, 17892696)
More thorough checking has been implemented for restrictions around escaping closures capturing in-out parameters or values of noescape type. While most code isn’t affected, there are edge cases where the Swift 5.0 compiler accepted code that violated these restrictions. (SR-8546, SR-9043, 43355341)An example of invalid code which was incorrectly accepted by the Swift 5.0 compiler is an @escaping closure that calls a local function that references an in-out parameter from an outer scope:struct BadCaptureExample {
var escapingClosure: () -> ()
mutating func takesInOut(_ x: inout Int) {
func localFunction() {
x += 1
}
escapingClosure = { localFunction() }
}
}
The compiler now correctly diagnoses the above code by pointing out that the capture of x by localFunction() is invalid, since localFunction() is referenced from an @escaping closure.This also addresses certain cases where the compiler incorrectly diagnosed certain code as invalid, when in fact no violation of restrictions had taken place. For example:func takesNoEscape(_ fn: () -> ()) {
func localFunction() {
fn()
}
{ localFunction() }()
}
Known Issues
If a type has the same name as its containing module, importing that module from a module interface might fail. (19481048, 48445154)Workaround: Rename the type so it no longer conflicts with the module name.
Resolved Issues
The Swift compiler properly accepts an optional stored property with a property wrapper and no initializer expression. (53504653)
Duplicate tuple element labels are no longer allowed, because it leads to incorrect behavior. (SR-8974, 45218256)The following is now diagnosed as an error:let dupLabels: (foo: Int, foo: Int) = (foo: 1, foo: 2)
enum Foo {
case bar(x: Int, x: Int)
}
let f: Foo = .bar(x: 0, x: 1)
You can still use duplicate labels when declaring functions and subscripts, as long as the internal labels are different. For example:func foo(bar x: Int, bar y: Int) {}
subscript(a x: Int, a y: Int) -> Int {}
Declarations with opaque return types that require the Swift 5.1 runtime in iOS 13, macOS 10.15, watchOS 6, or tvOS 13 are enforced by the Swift compiler. (50731151)
APIs deprecated before macOS 10.9 show up properly as unavailable when compiling with Require Only App-Extension-Safe API build setting. (51417764)
The Swift REPL works properly when launched from Terminal. (51374106)
The compiler no longer crashes if a type uses an opaque return type to satisfy an associated type requirement of a protocol and that associated type is referred to by name inside another generic declaration. (50509030)
Static libraries are now always force-loaded in their entirety during linking, fixing runtime errors related to demangling failures. (47598583)
weak and unowned stored properties no longer inhibit the automatic synthesis of Equatable or Hashable conformance. (SR-9827, 50566123)
If symbols in a crash log aren’t properly demangled, run the swift-demangle command and pass in the content of the crash log. (34920390)
SwiftUI
Known Issues
Switching the run destination when using Xcode previews will continue to show the old device in the canvas until another preview update is made. (54006837)Workaround: After switching the run destination, make a simple change to your code to refresh the preview with the newly selected device.
Deploying SwiftUI previews to a device in a project with a deployment prior to iOS 10 will fail, even if the device is running iOS 13. SwiftUI previews can only be deployed to devices when the deployment target of the project is iOS 10+, and the device is running iOS 13. (52121546)
Opening the same file in a new window and then closing that window causes previews in the first window to error. (47619828)Workaround: Click “Try Again” in the first window when the error appears.
Preview providers that are defined in projects which don’t have -DDEBUG set for OTHER_SWIFT_FLAGS and wrapped in #if DEBUG don’t display in the canvas. That happens, for example, in Objective-C apps which that never had occasion to specify OTHER_SWIFT_FLAGS. (51138834)Workaround: Remove the #if DEBUG and #endif from around the PreviewProviderdeclaration.
With Xcode 11 beta 6, previews are only available on macOS Catalina 10.15 beta 5 or later. (52059562)
The software keyboard doesn’t appear in previews. (35615536)
Code changes you make while running an on-device preview might display the Home screen briefly while the app relaunches. (48208765)
Pinching to zoom is unavailable in live previews. (51183125)Workaround: Exit live mode or use the zoom controls in the canvas or editor menu.
Static previews for iOS, tvOS, and watchOS don’t support SceneKit, MapKit, and Metal views, and experience a delay when rendering updates. (50965310)
Drag and drop operations that result in insertions of containers around an existing view and a new sibling in the container don’t work if the existing view is at the top level of a conditional statement in a view builder. For example, you can’t drop an HStack or VStackaround the Text. (50300406):var body: some View {
VStack {
if true {
Text("Hello World")
}
}
}
Workaround: Embed the existing view into a container — either in the canvas or the source editor — then drop the new view into that container.
Previews in packages always perform a full build of the active scheme. (51030302)
Dragging a Text modifier onto text in the canvas that already has a View modifier such as frame(width:height:alignment:) results in a compilation error. (50712235)Workaround: Reorder the modifiers so that modifiers specific to Text appear before any View modifiers.
HStack and VStack inspectors don’t support custom layout guides. (49710501)Workaround: Use the source editor for custom layout guides.
The attribute inspector doesn’t allow specifying flexible frames. (51310989)
Entering live preview mode in the canvas might take several seconds the first time. (46505269)
Previews may fail or update incorrectly when switching between files. (50841287)Workaround: Add a newline to the end of the active file, then click Resume in the banner that appears.
The attributes inspector stays visible after the canvas closes, gets stuck on the last selected item, and doesn’t function. (50958316)Workaround: Reopen the canvas or switch to a different file.
Previews don’t work for macOS apps with App Sandbox enabled. (51088926)
Previews don’t appear in the canvas for private and fileprivate structures that conform to PreviewProvider. (47011316)Workaround: Remove the private or fileprivate access control from your conforming type.
Previews might take several seconds to update when switching devices in the run destination selector the first time. (47562171)
Previews might temporarily show the incorrect device chrome when switching devices using the run destination from the Scheme pop-up menu. (49496647)
The canvas doesn’t support focus. (50275735)
Undo is unavailable in the canvas. (49651153)Workaround: Bring the source editor into focus and perform the undo there.
Resolved Issues
Previews now automatically stay pinned when debugging a preview and switching files. (53464810, 53206649)
Previews can now be used when the custom view is defined in a watchOS framework. (51683662)
Fixed an issue where default UITextField text colors weren’t migrated to “Label Color”. (52262491)
Improved handling of types with the same name as a system type. (51531683)
Preview inspectors render with the system font. (52473187)
Fixed a crash that could occur when trying to show a preview on-device with multiple devices plugged into your Mac. (52545102)
Fixed a crash that could occur when inspecting a view hierarchy containing SwiftUI views. (52857304)
Fixed a crash that could occur when enabling or disabling a live preview. (52083572)
Resolved an issue where Apple Watch previews displayed black text on a black background. (51676439)
Previews continue working after changing filenames without needing to switch to a different file and switch back. (51708183)
Previews respect conditional compilation blocks surrounding imports. For example, you can conditionally import UIKit guarded on #if canImport(UIKit). (51545182)
The availability attributes that you apply to types and methods are respected by previews. When the deployment target doesn’t include SwiftUI — that is, the deployment target is before iOS 13, macOS 10.15, watchOS 6, or tvOS 13 — you can now view previews for views and view controllers using UIViewRepresentable instances and UIViewControllerRepresentable instances. To do so, add the appropriate availability attributes to your view representable types and PreviewProvider conformances, such as @available(iOS 13.0, *). (51493428)
Named colors are editable in the Attributes inspector. (51287606)
Using withAnimation(_:_:) to change state in a root view displays properly in live previews. (51164838)
Animations stay in their context in live previews, and live previews match on-device previews. (50708417)
Resolved an issue that prevented watchOS previews from working if a device paired with Apple Watch was selected in the run destination chooser. (50861269)
Fixed a crash that could occur when selecting and then re-selecting a named color in the Color inspector. (51304163)
When running on Apple Watch Series 3, apps built using SwiftUI no longer behave as if they are running on Apple Watch Series 4. (50678109)
SwiftUI Tutorials
Known Issues
Using the Path structure may cause your app to crash if you’re using the SDKs included in Xcode 11 beta 5. As a result, you may be unable to successfully follow the steps in the Drawing Paths and Shapes tutorial. (53523206)
Swift Packages
Known Issues
There is no explicit command-line option to build a Swift Package using xcodebuild. (45575820)Workaround: Run xcodebuild -workspace . in the directory containing the Package.swift file.
Previews aren’t supported for standalone packages. (51072409)
Swift packages don’t support adding resource files — such as images, storyboards, or audio — in a target. (SR-2866, 33389529)
Swift packages don’t support processing localized strings files. (48190792)
Moving a local package in a project will convert it into a folder reference. (50320585)
A package product that is linked into both app and its test target results in duplicated symbols. (50348625)Workaround: Link a package product only in the app or test target.
The scheme that’s autogenerated for a Swift package isn’t automatically updated when the package adds or removes targets. (50586754)Workaround: Delete the scheme from the swiftpm/xcode/xcshareddata/xcschemes directory inside the package directory, then reopen the package to automatically generate a new scheme.
Targets of a Swift package build with debug-conditional settings if the build configuration selected in the scheme is not named Debug or Release. (50696202)
Removing a local package reference from a workspace removes its package products from all Xcode targets in the workspace, even when other references to that local package remain in the workspace. (50706448)Workaround: Add package product references back to the relevant targets.
Previewing code in Swift packages which are not referenced by the active scheme and not being linked into an app target is not supported and shows an incorrect error message. (50909384)
Test targets of newly-created Swift packages fail to build for watchOS because XCTest is unavailable on watchOS. (51054894)Workaround: Surround any code in watchOS test targets which references the XCTest framework or its APIs with conditional compilation statements. For example:#if !os(watchOS)
// XCTest code
#endif
WatchOS apps which are embedded in an iOS app will not build successfully if they depend on any system library targets from Swift packages. (54579347)Workaround: Add the watchOS app explicitly to the scheme being built, clean the build folder and build again.
Resolved Issues
Searching for package repositories in the Add Package Dependency sheet complete when there are no search results. (51223367)
Code completion works for Swift package targets regardless if the name of the target declared in the Package.swift manifest file differs in casing with the directory name for that target. (49648458)
Adding a new file in a C-family target of a Swift package doesn’t create the file with the .swift extension. (31395814)
Swift packages that use unsafeFlags build settings can’t be used as a dependency. (50354068)
The XCTUnwrap API is available when building Swift package tests using the Swift Package Manager. (51115369)
Xcode no longer crashes if a local package overrides a remote package in a project and the local package has an unsatisfiable package dependency. (51183216)
Templates
Known Issues
The code in the iOS File Provider application extension template that is included in Xcode 11 beta 6 is incompatible with the APIs in the SDK. This causes newly created File Provider application extension targets to fail to build. (53715509)Workaround: Use Xcode 10.3 to create new File Provider application extensions.
Testing
New Features
The test plan editor now supports selecting a target to use when expanding build setting variables in command-line arguments and environment variable entries. (51841050)
Support for writing XCTest UI tests that interact with SwiftUI views. (35224680)
Test Plans are a new way to manage which tests run, and how those tests run. Schemes can reference multiple test plans, and define a default test plan for automation. A new Test Plan editor supports defining test configurations, which can inherit shared settings from the plan itself. Running tests in Xcode now runs tests across all test configurations. The Source Editor test diamonds are updated to support running a test in a single configuration, and the Test Navigator is updated to allow choosing the active test plan. Test reports are updated to support displaying results generated by a test plan. (16138582)
XCTest includes augmented performance testing capabilities with the new measure(metrics:options:block:) method and related methods. The metrics argument requires a list of objects conforming to the XCTMetric protocol. You can either implement your own custom metrics or use XCTClockMetric, XCTOSSignpostMetric, XCTCPUMetric, XCTMemoryMetric, or XCTStorageMetric. (49430032) The following shows an example performance test that measures the CPU and Memory impact of sorting a list:func testExample() {
// Measures the CPU and memory impact of sorting the input list.
measure(metrics: [XCTCPUMetric(), XCTMemoryMetric()]) {
sortedList = qsort(list: self.fiftyNumbersFrom0to100)
}
}
Added an assertion function, XCTUnwrap, for use in Swift tests. XCTUnwrap asserts that an Optional variable’s value is not nil, returning its value if the assertion succeeds. This removes the need to combine XCTAssertNotNil(_:_:file:line:) with either unwrapping the value or dealing with conditional chaining for the rest of the test. For example:func testFirstNameNotEmpty() throws {
let forenames: [String] = customer.forenames
let firstName = try XCTUnwrap(forenames.first)
XCTAssertFalse(firstName.isEmpty)
}
XCTUnwrap is a throwing assertion, and is best used in a throwing test method as in the above example. (30667432)
xccov now supports being passed result bundles directly, in addition to raw report and archive files. For example, to view the coverage report within a result bundle, invoke xccovas follows: xccov view --report /path/to/result_bundle.xcresult. (50500789)
The format of result bundles changed in Xcode 11. A result bundle is an asset produced by Xcode 11 with the xcresult file extension that contains information about the build, tests, code coverage, and more. Any xcresult files produced with Xcode 10 or earlier cannot be read by Xcode 11. A result bundle can be produced by passing -resultBundlePath ./Example.xcresult to an xcodebuild invocation and the Example.xcresult can then be opened in Xcode. Xcode also creates result bundles in Derived Data. The current result bundle version number is 3, which can be specified by passing the xcodebuild flag -resultBundleVersion 3. Version 3 is the default in Xcode 11, but it is still recommended for automation to explicitly pass the flag, so that any potential future versions that become the default do not cause issues to existing tools. Result bundles can be inspected using xcresulttool. A JSON representation of the root object of the result bundle can be exported using xcrun xcresulttool get --format json --path ./Example.xcresult and any nested object, identified by its reference found in the JSON output, can be exported by adding the flag --id REF. xcresulttool also provides the description of its format using xcrun xcresulttool formatDescription. (41633595)
If a test runs on multiple destinations and fails on some but not others, the test report displays a summary describing the destinations on which the test failed, e.g. “Failed on iPad destinations running iOS 12.0”. (49164968)
When running a test or test class via a source editor test diamond, option-clicking the diamond presents a popover that allows the test to be run under a specific configuration in the active test plan (if the test plan has multiple configurations). (46348663)
When viewing a test report for tests that ran on multiple destinations (such as an Xcode Server integration, or a result bundle generated by an xcodebuild invocation with multiple destination specifiers), it’s now possible to filter the displayed results by destination. Clicking on the devices button in the scope bar will present a list of the destinations on which the tests ran, including the ability to hide or show only the destinations of interest. In addition, it’s now possible to filter to only those tests that failed on one destination but succeeded on another, via the “Mixed” button in the scope bar. (48981032)
Result bundles produced by xcodebuild can now be shared, double-clicked, and opened in Xcode directly. (38620469)
Introduces support for writing XCTest-based tests for Mac Catalyst apps. (41530313)
Code Coverage is now enabled by default for newly created test plans. (48749597)
In UI testing on macOS, mouse moves, including calls to the hover API as well as calls to click, scroll, and other APIs will move the cursor progressively across the screen, just as a user would in real interactions, rather than instantly moving the cursor to the final location. This may cause problems for tests involving UI that is heavily dependent on mouseover behavior. (49430331)
The .xctestrun file format is modified for Test Plans to include information about how to perform each test configuration in the plan. When running xcodebuild build-for-testing for a scheme that uses test plans, the generated .xctestrun files use FormatVersion 2 and have a revised property list structure. .xctestrun files generated for schemes which don’t use test plans continue to use FormatVersion 1, and xcodebuild test-without-building accepts either version. (46346053)
The Code Coverage setting in the test plan editor doesn’t support selecting individual targets to gather code coverage for. If the test plan was created by converting a scheme to use test plans, and that scheme had individual code coverage targets selected at the time of conversion, those targets are preserved in the resulting test plan but aren’t editable within the plan. (50502861)
xcodebuild is enhanced with new options supporting Test Plans. Use the new -showTestPlans option to list all test plans associated with a scheme. Use the new -testPlan <name> option to specify which test plans associated with a scheme to use for testing or building tests. If -testPlan <name> is not specified, xcodebuild test will use the scheme’s default test plan. (46346197)
Xcode 11 introduces the option to automatically include screenshots from XCTest in Xcode Localization Catalogs. Enable Localization Screenshots in your test plan or in the scheme editor, then check “include screenshots” when exporting for localization. (28656175)
Known Issues
The XCTUnwrap API is only available in primary test bundle targets and not in other libraries or frameworks. (51117167)Workaround: Move any library code that makes use of XCTUnwrap to your primary test bundle target or manually modify the following build settings in affected targets:SYSTEM_FRAMEWORK_SEARCH_PATHS = "$(inherited) $(PLATFORM_DIR)/Developer/Library/Frameworks"
LIBRARY_SEARCH_PATHS = "$(inherited) $(PLATFORM_DIR)/Developer/usr/lib"
SWIFT_INCLUDE_PATHS = "$(inherited) $(PLATFORM_DIR)/Developer/usr/lib"
The test plan editor allows enabling certain combinations of sanitizers and memory diagnostics which are incompatible and should not be simultaneously enabled. For example, Address Sanitizer and Guard Malloc, or Address Sanitizer and Thread Sanitizer. (49739613)Workaround: Don’t configure a test plan with a combination of sanitizers and memory diagnostic settings which are incompatible. If an incompatible setting is inherited in a test configuration by the test plan’s Shared Settings, manually override the setting to disable it for the affected test configuration.
Resolved Issues
Schemes which have been converted to use test plans – and have test plan entries in the Build action enabled for actions other than Test (such as Run) – no longer crash with versions of Xcode before 11.0. (53645359)
The structured build log in Xcode, and in standalone Result Bundles, shows durations for each step again. (48126238)
Fixed an issue that prevented UI test runners from making arbitrary network requests. (52856418)
Fixed an issue that prevented launching UI test targets with a name that contained a hyphen directly followed by a digit. (51857798)
Editing a test plan that references test targets in a different project than the project that contains the active scheme no longer causes those test targets to be labeled as missing. (50148373)
You can run tests in a workspace that contains Swift packages during package resolution. (48719922)
Running tests with code coverage enabled correctly produces a coverage report for iOS apps in the simulator and on a Mac. (51091751)
Fixed an issue with UI tests for iPad apps on Mac where attempting to interact with elements inside of a table view cell could fail with an error about hit testing. (50745246)
The Execute in Parallel checkbox in the test action of a scheme is now enabled for test targets of a Swift package. (47564543)
Resolved a crash that could occur while checking for device availability when starting a testing operation. (51245770)
Resolved an issue that prevented code coverage reports from being generated for Mac Catalyst apps or iOS apps in Simulator. (51241460)
The exists property on XCUIElement now produces test failures in situations where XCTest is unable to inspect the application’s UI — for example, due to the app’s main thread being unresponsive — instead of returning false in those situations. (37359653)
The unit test discovery mechanism is more efficient for large projects. The test navigator gets populated faster after reopening a project. (32567980)
TestFlight
Known Issues
TestFlight app distribution to Apple TV 4K running tvOS 12.3 or earlier works properly for tvOS apps with a deployment target earlier than tvOS 13. (53017497)
Today Apple released macOS Catalina 10.15 (19A546d) Beta 7 to Developers.
I am going to switch up the title a bit. Most Mac websites only report that Apple released a new Beta, but don’t mention any of the actual changes. This article is meant to save you time going through the notes to find what is new and what is still leftover from the last beta. I went through both Beta 6 and the new Catalina 10.15 Beta 7 (19A546d) release notes to find all the changes. Like usual, I also have included the entire patch notes list as an archive. When Apple releases Beta 8 patch notes, the previous patch notes are overwritten and taken down.
Summary of Beta 7 Patch Notes
0 New Features
5 New Resolved issues
5 New Known Issues
1 New Deprecations
A Full List of changes is listed below, along with the full patch notes list.
Report your bugs NOW!
We only have a few Beta’s left to test. The public Release of Catalina is only about 3 weeks away!!! You will want to get any bugs that you find into Apple now. If you get them in now, they could be fixed in the current beta cycle instead of waiting until after September’s release date. If you wait it could be months before the fix is put into a dot release combo update.
Keep in mind, I can only publish public data. If you are an AppleSeed for IT member you can access additional 10.15 Catalina Beta Patch Notes in the AppleSeed Portal. AppleSeed information is protected by Apple’s NDA.
Some fixes are not going to be listed. Many are from fellow #MacAdmins who have filed FeedBack Requests and Enterprise Support tickets. Most of these issues are resolved but never publicly noted.
1. New Features in Beta 7
None
2. New Resolved Issues in Beta 7
iCloud – The Cloud Files section in About This Mac > Storage > Manage now accurately represents the current state of files on your Mac. (50362095)
Mac Catalyst – Opening a CloudKit share URL now launches a Mac Catalyst app that’s present on the system. The system also now takes the user to the appropriate App Store page to download an app which isn’t present on the system. (50877241)
Mac Catalyst – When your Mac Catalyst app is launched directly into the background, it no longer experiences all the state transitions of a regular app launch — such as application(:didFinishLaunchingWithOptions:) and applicationDidBecomeActive(🙂 — followed by state transitions to return to background state from there — applicationWillResignActive(🙂 and applicationDidEnterBackground(:). Now your app will receive only applicationDidFinishLaunching(_:), and only if it wasn’t already running. (50742219)
Networking – The urlSession(_:taskIsWaitingForConnectivity:) delegate callback now functions as expected. (54309264)
Podcasts – Deleting podcasts using About This Mac > Storage > Manage now updates what’s shown in the Podcasts app. (50354510)
3. New Known Issues
iCloud – After updating to macOS Catalina 10.15 Beta 7 or later, iCloud Drive might synchronize for an extended period of time. If you notice any missing files, they can be found inside a Recovered Files folder in your home folder. (54046219)
Mac Catalyst – nativeScale might be inaccurate. Instead, get the scale factor from the local trait collection. (54009624)
Privacy – The behavior of access(2) on privacy-protected filesystem locations has been restored to that of macOS Mojave. (47309955)
Screen Time – Screen Time > Content & Privacy > Content > Web Content > Allowed Websites Only is now enforced in macOS 10.15 beta. (50462899)
SwiftUI – Image instances now use resizing information configured in asset catalogs. (49114577)
4. New Deprecations in Beta 7
EndpointSecurity – The kauth API has been removed. (50419013)
Overview
The macOS 10.15 SDK provides support for developing apps for Macs running macOS Catalina 10.15. The SDK comes bundled with Xcode 11 beta available from Beta Software Downloads. For information on the compatibility requirements for Xcode 11, see Xcode 11 Beta 7 Release Notes.
General
New Features
Installing third party kernel extensions now requires that you restart your Mac before they’re permitted to load. (50340461)
Known Issues
During installation of macOS 10.15 you might be prompted to enter your administrator password multiple times to allow installation to proceed. (51206649)
Deprecations
macOS frameworks are now thinned for the x86-64 architecture. Apps that execute i386 code now fail with the EBADARCH error code. The remaining stub frameworks are nonfunctional and exist only for compatibility purposes. (51236070)
AirDrop
Known Issues
AirDrop doesn’t work when a VPN is connected with the includeAllNetworks and excludeLocalNetworks options enabled.Workaround: Disconnect the VPN before using AirDrop. (52618489)
Apple TV
Known Issues
Support for signing in with an account from a different country is currently unavailable. (51240948)
AppleEvents
New Features
To enhance security, AppleEvents and AppleScripts that target an app on a remote system must authenticate as the same user on the remote system. An AppleEvent that targets an app running as a different user receives a procNotFound error.To allow remote AppleEvents to target apps in any user session, run the following command in Terminal on the server:defaults write /Library/Preferences/com.apple.AEServer RestrictAccessToUserSession -bool false
Then disable and reenable Remote Apple Events in System Preferences > Sharing. (5353592)
Audio
New Features
You can now enable voice processing mode on AVAudioEngine. (50906329)
You can use new AVAudioNode types to wrap a user-defined block for sending or receiving data in real-time.
A new method is available for an AVAudioEngine based app to retrieve a list of all nodes attached to an AVAudioEngine instance.
A new rendering mode in AVAudioEnvironmentNode selects the best spatial audio rendering algorithm automatically based on the output device.
A new AVAudioSession property allows system sounds and haptics to play while the session is actively using audio input.
A new property, AVAudioSession.PromptStyle informs apps which style of voice prompt they should play based on other audio activity in the system.
The AVAudioSession.RouteSharingPolicy enumeration is extended to allow apps to specify route sharing policies so their audio and video is routed to the same location as AirPlay.
Audio Unit Extensions now support user presets that are available across all host apps.
Deprecations
The OpenAL framework is deprecated and remains present for compatibility purposes. Transition to AVAudioEngine for spatial audio functionality.
AVFoundation now supports encoding video with alpha channels using HEVC. Videos encoded in this manner are broadly supported in AVFoundation APIs and by Safari within web pages. Technical details of the format can be found in the Interoperability Profile specification. (8045917)
Deprecations
The previously deprecated 32-bit QuickTime framework is no longer available in macOS 10.15.
The symbols for QTKit, which relied on the QuickTime framework, are still present but the classes are non-functional.
Camera
Known Issues
Apps using Picture Taker must specify the NSCameraUsageDescription key to access the FaceTime camera. (47916725)
Metal CIKernel instances now support arguments with arbitrarily structured data.
Metal CIKernel instances now support returning a group of two by two pixels.
The integer values of CIFormat symbols, such as ARGB8, have changed to a new set of values which are consistent across platforms. The former values remain supported for backward compatibility; however, you should avoid dependancies on specific numerical values.
EndpointSecurity
Deprecations
The kauth API has been removed. (50419013)
iCloud
Known Issues
After updating to macOS Catalina 10.15 Beta 7 or later, iCloud Drive might synchronize for an extended period of time. If you notice any missing files, they can be found inside a Recovered Files folder in your home folder. (54046219)
Even when Optimize Storage is switched off, iCloud Drive might fail to automatically download all files. (50667204)Workaround: Download files individually.
When creating a new Pages, Numbers, or Keynote document in a shared folder, you might see the message “Couldn’t connect to iCloud”. (50827963)Workaround: Close and reopen the document.
Resolved Issues
The Cloud Files section in About This Mac > Storage > Manage now accurately represents the current state of files on your Mac. (50362095)
iWork
Known Issues
Attempting to open iWork documents in Finder will unexpectedly create a .cpgz file if the corresponding iWork app isn’t installed. (40693892)Workaround: Install the corresponding app from the App Store before opening the document.
Launch Daemons and Agents
New Features
Launch daemons and launch agents introduce new user privacy protections. Specifying privacy-sensitive files and folders in a launchd property list might not work as expected and prevent the service from running. Having Program or ProgramArguments pointing to an executable in a privacy sensitive location is currently allowed, but may be restricted in a future release. (49702405)To comply with the new privacy protections, resources for a launchd service must be stored in locations that aren’t privacy sensitive. If necessary, the app can set up resources during its execution rather than using launchd property list keys, making it possible to grant the app access using System Preferences > Security & Privacy > Privacy.The following launchd property list keys are affected: KeepAlive, PathState, QueueDirectories, Sockets, SockPathName, StandardErrorPath, StandardInPath, StandardOutPath, and WatchPaths.
Localization
Known Issues
Certain languages might exhibit clipped or misaligned layout. (51068688, 50983852)
Certain languages might display unlocalized text. (47765173, 51196633)
Mac Catalyst
Known Issues
nativeScale might be inaccurate. Instead, get the scale factor from the local trait collection. (54009624)
AppKit and Mac Catalyst apps are currently view-only clients of PencilKit. (51146823)
The UIScreen class’s isCaptured API isn’t currently supported. (48360589)
The current property on UIDevice and the OS Product Name is currently returned as iOS rather than macOS, which can affect diagnostic logs generated by your system. (49792004)
Event handling in extension contexts may produce unexpected results, including failure to deliver trackpad pinch and zoom gestures. (50145462)
When sending Mail attachments via MessageUI, each attachment might appear as two icons when viewed by the recipient. (50369995)
Controls drawn with accent color incorrectly maintain their active color when the window is inactive. There is no need to work around this in your app. (50563638)
For Mac Catalyst apps to save to Photos Library, explicitly linking the Photos framework is required. (50781430)
Action and share extensions might exhibit visual anomalies. (51005363)
All assets at 3x scale factor are currently ignored when compiling the asset catalog for Mac Catalyst apps. Because the search begins with the universal asset, assets for a specific memory or graphics class won’t be found. For example, if you provide an image and only give a 6GB and Metal 5v1 asset, it won’t be found at runtime. It’s recommended that you provide all images as vectors to allow generation of the correct scale factors, or at minimum provide 2x versions of the assets. If you’re classifying resources based on memory and graphics families then you should provide “Any Memory” and “Any Graphics”. (51033745)
CallKit CXAction instances might return an error. (51074735)
When creating a Mac Catalyst app from your iPad app, Xcode automatically generates a unique Mac bundle identifier. If you have an existing Mac bundle identifier you’d prefer to use, you can do so by using manual signing in Xcode. (51076014)Follow these steps to configure your project, AppID, and provisioning profile:
In the Identifiers section, select your iOS app identifier to edit.
Check the Mac Catalyst capability to enable it, then click the Configure button.
Choose Use an existing macOS AppID and select the identifier you’d like to use from the popup menu. Click the Save button to finish editing your AppID.
In the Profiles section, click the + button to create a new profile, select ‘macOS App Development’, and click Continue.
Select your iOS AppID from the popup, click Continue, and complete the rest of the profile creation flow. When finished, click the Download button.
In Xcode, select your project to view the Project Editor and select your app’s target. Then select the Build Settings tab.
Set the Derive Mac Catalyst Product Bundle Identifier setting to No.
Expand the Product Bundle Identifier build setting to view its configurations. Next to the Debug configuration, click the + button to add a conditional value.
For the build setting condition, select Any macOS from the popup menu. Edit the value of the conditional build setting to match the macOS bundle identifier you want to use. Repeat this step for all configurations in your project.
In the Signing & Capabilities tab, uncheck Automatically manage signing.
For your macOS app, select Import Profile from the Provisioning Profile popup and then select the profile you downloaded earlier.
Resolved Issues
Opening a CloudKit share URL now launches a Mac Catalyst app that’s present on the system. The system also now takes the user to the appropriate App Store page to download an app which isn’t present on the system. (50877241)
If your Mac contains both macOS Mojave 10.14 and macOS 10.15 volumes, you might experience issues searching in Mail. (46611310)Workaround: While running macOS Mojave 10.14, open Terminal and execute the following command:sudo touch /.metadata_never_index_unless_rootfs
Reboot into macOS 10.15, open Terminal and execute the following command:sudo touch /System/Volumes/Data/.metadata_never_index_unless_rootfs
Reboot into macOS Mojave 10.14, open Terminal and execute the following command:sudo mdutil -E /
Depending on the size of your Mail database, it might take many hours to reindex all content.
The NWEthernetChannel API doesn’t currently support VLAN interfaces. NEPacketTunnelProvider will see both tagged and untagged frames arriving on physical interfaces. Depending on the Ethernet driver, VLAN tags might be processed by hardware and thus stripped off the Ethernet frames thus NEPacketTunnelProvider won’t see the VLAN tag. (51275655)
Support for FTP and File URL schemes for Proxy Automatic Configuration (PAC) is removed. HTTP and HTTPS are the only supported URL schemes for PAC. This affects all PAC configurations including but not limited to configurations set using Settings, System Preferences, profiles, URLSession APIs such as connectionProxyDictionary, and CFNetworkExecuteProxyAutoConfigurationURL(_:_:_:_:). (28578280)
SPDY support is removed from the URLSession and NSURLConnection APIs. Servers should use HTTP 2 or HTTP 1.1. (43391641)
The Network Kernel Extension API is now deprecated. (49284108)
Photos
New Features
To improve the Photos upgrade experience, Photos is testing database upgrades using a clone of the Photo Library. This clone doesn’t include the content of each photo, but does include faces metadata and a thumbnail image of each person in your library. It also contains metadata such as the asset name and the geographic location of the photo. It is created at ~/Pictures/macOS 10.15 Pre-Upgrade Backup, and you can manually remove this backup at any time. The clone will be removed automatically before the final release of macOS 10.15. (51033690)
Podcasts
Resolved Issues
Deleting podcasts using About This Mac > Storage > Manage now updates what’s shown in the Podcasts app. (50354510)
Privacy
Known Issues
The behavior of access(2) on privacy-protected filesystem locations has been restored to that of macOS Mojave. (47309955)
Quartz Composer
Deprecations
Starting in macOS 10.15, the Quartz Composer framework is deprecated and remains present for compatibility purposes. Transition to frameworks such as Core Image, SceneKit, or Metal. (50911608)
Screen Time
Resolved Issues
Screen Time > Content & Privacy > Content > Web Content > Allowed Websites Only is now enforced in macOS 10.15 beta. (50462899)
Scripting Language Runtimes
Deprecations
Scripting language runtimes such as Python, Ruby, and Perl are included in macOS for compatibility with legacy software. Future versions of macOS won’t include scripting language runtimes by default, and might require you to install additional packages. 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 as 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 from within Terminal. (51097165)
Gesture modifiers are renamed for consistency. For example, tapAction(count:_:) is renamed onTapGesture(count:perform:), and longPressAction(minimumDuration:maximumDistance:_:pressing:) is renamed onLongPressGesture(minimumDuration:maximumDistance:pressing:perform:). (50395282)
Text now has a default line limit of nil so that it wraps by default. (51147116)
BindableObject is replaced by the ObservableObject protocol from the Combine framework. (50800624)You can manually conform to ObservableObject by defining an objectWillChangepublisher that emits before the object changes. However, by default, ObservableObjectautomatically synthesizes objectWillChange and emits before any @Publishedproperties change.// RoomStore.swift
import Foundation
class RoomStore: ObservableObject {
@Published var rooms: [Room] = []
}
struct Room: Identifiable {
var id: UUID
var name: String
var capacity: Int
var hasVideo: Bool
}
// ContentView.swift
import SwiftUI
struct ContentView: View {
@ObservedObject var store: RoomStore
var body: some View {
NavigationView {
List(store.rooms) { room in
RoomCell(room: room)
}
.navigationBarTitle("Rooms")
}
}
}
@ObjectBinding is replaced by @ObservedObject.
The Identifiable protocol is now part of the Swift standard library. As a result, your model files no longer need to import the SwiftUI framework. (SE-0261)
The EnvironmentValues structure has four new properties for reading accessibility values from the environment: accessibilityDifferentiateWithoutColor, accessibilityReduceTransparency, accessibilityReduceMotion, and accessibilityInvertColors. (51712481)
The color(_:) text modifier is renamed foregroundColor(_:) for consistency with the more general foregroundColor(_:) view modifier. (50391847)
The BindableObject protocol’s requirement is now willChange instead ofdidChange, and should now be sent before the object changes rather than after it changes. This change allows for improved coalescing of change notifications. (51580731)
Added an initializer for creating a Font from a CTFont. (51849885)
You can style a NavigationView using two new style properties: StackNavigationViewStyle and DoubleColumnNavigationViewStyle. By default, navigation views on iPhone and Apple TV visually reflect a navigation stack, while on iPad and Mac, a split-view styled navigation view displays. (51636729)When using the DoubleColumnNavigationViewStyle style, you can provide two views when creating a navigation view — the first is the master and the second is the detail. For example:NavigationView {
MyMasterView()
MyDetailView()
}
.navigationViewStyle(DoubleColumnNavigationViewStyle())
Resolved Issues
Image instances now use resizing information configured in asset catalogs. (49114577)
Deprecations
The Command structure is replaced by passing selectors directly. (53187891)
The SelectionManager protocol is removed, use Optional and Set instances directly for selection. (51557694)
The isPresented environment value is deprecated and replaced with the more general presentationMode value. (51641238)
The StaticMember protocol is deprecated. Use protocol-conforming types directly instead. For example, use an instance of WheelPickerStyle directly rather than the wheel static member.(52911961)
SwiftUI APIs deprecated in previous betas are now removed. (52587863)
The identified(by:) method on the Collection protocol is deprecated in favor of dedicated init(_:id:selection:rowContent:) and init(_:id:content:)initializers. (52976883, 52029393)The retroactive conformance of Int to the Identifiable protocol is removed. Change any code that relies on this conformance to pass \.self to the id parameter of the relevant initializer. Constant ranges of Int continue to be accepted:List(0..<5) {
Text("Rooms")
}
However, you shouldn’t pass a range that changes at runtime. If you use a variable that changes at runtime to define the range, the list displays views according to the initial range and ignores any subsequent updates to the range.
Several extensions to the Binding structure are removed. (51624798)If you have code such as the following:struct LandmarkList: View {
var landmark: [Landmark]
@Binding var favorites: Set<Landmark>
var body: some View {
List(landmarks) { landmark in
Toggle(landmark.name, isOn: self.$favorites.contains(landmarkID))
}
}
}
Define the following subscript on the Set structure:extension Set {
subscript(member: Element) -> Bool {
get { contains(member) }
set {
if newValue {
insert(member)
} else {
remove(member)
}
}
}
}
Then, change self.$favorites.contains(landmarkID) toself.$favorites[landmarkID].
The Binding structure’s conditional conformance to the Collection protocol is removed. (51624798)If you have code such as the following:struct LandmarkList: View {
@Binding var landmark: [Landmark]
var body: some View {
List(landmarks) { landmark in
Toggle(landmark.value.name, isOn: landmark[\.isFavorite])
}
}
}
Define the following collection type:struct IndexedCollection<Base: RandomAccessCollection>: RandomAccessCollection {
typealias Index = Base.Index
typealias Element = (index: Index, element: Base.Element)
let base: Base
var startIndex: Index { base.startIndex }
var endIndex: Index { base.startIndex }
func index(after i: Index) -> Index {
base.index(after: i)
}
func index(before i: Index) -> Index {
base.index(before: i)
}
func index(_ i: Index, offsetBy distance: Int) -> Index {
base.index(i, offsetBy: distance)
}
subscript(position: Index) -> Element {
(index: position, element: base[position])
}
}
extension RandomAccessCollection {
func indexed() -> IndexedCollection<Self> {
IndexedCollection(base: self)
}
}
Then, update your code to:struct LandmarkList: View {
@Binding var landmarks: [Landmark]
var body: some View {
List(landmarks.indexed(), id: \.1.id) { (index, landmark) in
Toggle(landmark.name, isOn: self.$landmarks[index].isFavorite)
}
}
}
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)
Today Apple released macOS Catalina 10.15 (19A536g) Beta 6 to Developers.
If we follow Apple’s previous Beta release schedule, Beta 6 should have come out on August 12th. Apple releases a new Beta about every two weeks. Beta 6 took about one week longer than usual, yet has the least changes of any Beta release by a large margin. I went through both Beta 5 and the new Beta 6 release notes to find all the changes. Like usual, I also have included the entire patch notes list as an archive. When Apple releases the Beta 7 patch notes, the previous patch notes are overwritten and taken down.
Summary of Beta 6 Patch Notes
3 New Features
13 New Resolved issues
1 New Known Issues
1 New Deprecations
A Full List of changes is listed below, along with the full patch notes list.
Report your bugs NOW!
We only have a few Beta’s left to test. The public Release of Catalina is only about a month away!!! You will want to get any bugs that you find into Apple now. If you get them in now, they could be fixed in the current beta cycle instead of waiting until after September’s release date. If you wait it could be months before the fix is put into a dot release combo update.
AVFoundation – The AVPlayer class includes two new properties, eligibleForHDRPlayback and eligibleForHDRPlaybackDidChangeNotification, which you can use to determine whether an HDR display is available and can play on the current device. (35938145)
Networking – NSURLRequest.CachePolicy.reloadRevalidatingCacheData and NSURLRequest.CachePolicy.reloadIgnoringLocalAndRemoteCacheData APIs are now available. (49660334)
SwiftUI – The RangeReplaceableCollection protocol is extended to include a remove(atOffsets:) method and the MutableCollection protocol is extended to include a move(fromOffsets:toOffset:) method. Each new method takes IndexSetinstances that you use with the onMove(perform:) and onDelete(perform:) modifiers on ForEach views. (51991601)
2. New Resolved Issues in Beta 6
General – Using Quick Look to preview an HTML document no longer causes the app you’re using to quit unexpectedly. (53330705)
App Store – You no longer receive an error when downloading or updating apps. (49755328)
EndpointSecurity – Using APIs related to muting by paths and path prefixes no longer causes the kernel to panic. (53517643)
EndpointSecurity – Messages to clients are no longer truncated. (53517680)
Mac Catalyst – In order to show a share sheet from a toolbar item using the UIActivityViewController, create the NSToolbarItem using the init(itemIdentifier:)initializer and pass it a UIBarButtonItem configured as a UIBarButtonItem.SystemItem.action. There is no need to set the barButtonItem property. (47292316)
Mac Catalyst – The UIKit module now imports the newly added NSToolbar and NSTouchBar headers, NSToolbar+UIKitAdditions.h and NSTouchBar+UIKitAdditions.h. (50704322)
Music – Navigating using the back button works as expected. (51248128)
Music – You can scroll content on shelves. (51248128)
Music – Artwork changes now appear immediately; playlists have been added. (51201715)
Podcasts – Setting “Automatically Download Episodes” to “Never” now takes effect. (50960777)
Spotlight – Mail messages now display previews. (35678035)
SwiftUI – Using a ForEach view with a complex expression in its closure no longer results in compiler errors. (53325810)
SwiftUI – The Path structure no longer causes your app to crash if you’re using the SDKs included in Xcode 11 beta 6 and later. (53523206)
3. New Known Issues in Beta 6
Networking – The urlSession(_:taskIsWaitingForConnectivity:) delegate callback might not function as expected. (54309264)
4. New Deprecations in Beta 6
Networking – To enable NetBIOS, you can create or edit the /etc/nsmb.conf file. If your system doesn’t already have an /etc/nsmb.conf file, use the following Terminal commands while logged in as an Administrator:echo “[default]” | sudo tee -a /etc/nsmb.conf echo “port445=both” | sudo tee -a /etc/nsmb.conf To disable NetBIOS, you can safely delete the /etc/nsmb.conf file.
Full 10.15 (19A536g) Beta 6 Patch/Release Notes
I always post the full macOS 10.15 Beta 4 patch notes to this page to document them for you. The reason behind that is that Apple will usually just replace over the old patch notes so you are then unable to see what was fixed in the previous release.
Overview of 10.15 (19A536g) Beta 6
The macOS 10.15 SDK provides support for developing apps for Macs running macOS Catalina 10.15. The SDK comes bundled with Xcode 11 beta available from Beta Software Downloads. For information on the compatibility requirements for Xcode 11, see Xcode 11 Beta 5 Release Notes.
General
New Features
Installing third party kernel extensions now requires that you restart your Mac before they’re permitted to load. (50340461)
Known Issues
During installation of macOS 10.15 you might be prompted to enter your administrator password multiple times to allow installation to proceed. (51206649)
Resolved Issues
Using Quick Look to preview an HTML document no longer causes the app you’re using to quit unexpectedly. (53330705)
Deprecations
macOS frameworks are now thinned for the x86-64 architecture. Apps that execute i386 code now fail with the EBADARCH error code. The remaining stub frameworks are nonfunctional and exist only for compatibility purposes. (51236070)
AirDrop
Known Issues
AirDrop doesn’t work when a VPN is connected with the includeAllNetworks and excludeLocalNetworks options enabled.Workaround: Disconnect the VPN before using AirDrop. (52618489)
App Store
Resolved Issues
You no longer receive an error when downloading or updating apps. (49755328)
Apple TV
Known Issues
Support for signing in with an account from a different country is currently unavailable. (51240948)
AppleEvents
New Features
To enhance security, AppleEvents and AppleScripts that target an app on a remote system must authenticate as the same user on the remote system. An AppleEvent that targets an app running as a different user receives a procNotFound error.To allow remote AppleEvents to target apps in any user session, run the following command in Terminal on the server:defaults write /Library/Preferences/com.apple.AEServer RestrictAccessToUserSession -bool false
Then disable and reenable Remote Apple Events in System Preferences > Sharing. (5353592)
Audio
New Features
You can now enable voice processing mode on AVAudioEngine. (50906329)
You can use new AVAudioNode types to wrap a user-defined block for sending or receiving data in real-time.
A new method is available for an AVAudioEngine based app to retrieve a list of all nodes attached to an AVAudioEngine instance.
A new rendering mode in AVAudioEnvironmentNode selects the best spatial audio rendering algorithm automatically based on the output device.
A new AVAudioSession property allows system sounds and haptics to play while the session is actively using audio input.
A new property, AVAudioSession.PromptStyle informs apps which style of voice prompt they should play based on other audio activity in the system.
The AVAudioSession.RouteSharingPolicy enumeration is extended to allow apps to specify route sharing policies so their audio and video is routed to the same location as AirPlay.
Audio Unit Extensions now support user presets that are available across all host apps.
Deprecations
The OpenAL framework is deprecated and remains present for compatibility purposes. Transition to AVAudioEngine for spatial audio functionality.
AVFoundation now supports encoding video with alpha channels using HEVC. Videos encoded in this manner are broadly supported in AVFoundation APIs and by Safari within web pages. Technical details of the format can be found in the Interoperability Profile specification. (8045917)
Deprecations
The previously deprecated 32-bit QuickTime framework is no longer available in macOS 10.15.
The symbols for QTKit, which relied on the QuickTime framework, are still present but the classes are non-functional.
Camera
Known Issues
Apps using Picture Taker must specify the NSCameraUsageDescription key to access the FaceTime camera. (47916725)
Metal CIKernel instances now support arguments with arbitrarily structured data.
Metal CIKernel instances now support returning a group of two by two pixels.
The integer values of CIFormat symbols, such as ARGB8, have changed to a new set of values which are consistent across platforms. The former values remain supported for backward compatibility; however, you should avoid dependancies on specific numerical values.
EndpointSecurity
Resolved Issues
Using APIs related to muting by paths and path prefixes no longer causes the kernel to panic. (53517643)
Messages to clients are no longer truncated. (53517680)
Deprecations
The kauth API will be removed in a future release. (50419013)
iCloud
Known Issues
The Cloud Files section in About This Mac > Storage > Manage might inaccurately represent the current state of files on your Mac. (50362095)
Even when Optimize Storage is switched off, iCloud Drive might fail to automatically download all files. (50667204)Workaround: Download files individually.
When creating a new Pages, Numbers, or Keynote document in a shared folder, you might see the message “Couldn’t connect to iCloud”. (50827963)Workaround: Close and reopen the document.
iWork
Known Issues
Attempting to open iWork documents in Finder will unexpectedly create a .cpgz file if the corresponding iWork app isn’t installed. (40693892)Workaround: Install the corresponding app from the App Store before opening the document.
Launch Daemons and Agents
New Features
Launch daemons and launch agents introduce new user privacy protections. Specifying privacy-sensitive files and folders in a launchd property list might not work as expected and prevent the service from running. Having Program or ProgramArguments pointing to an executable in a privacy sensitive location is currently allowed, but may be restricted in a future release. (49702405)To comply with the new privacy protections, resources for a launchd service must be stored in locations that aren’t privacy sensitive. If necessary, the app can set up resources during its execution rather than using launchd property list keys, making it possible to grant the app access using System Preferences > Security & Privacy > Privacy.The following launchd property list keys are affected: KeepAlive, PathState, QueueDirectories, Sockets, SockPathName, StandardErrorPath, StandardInPath, StandardOutPath, and WatchPaths.
Localization
Known Issues
Certain languages might exhibit clipped or misaligned layout. (51068688, 50983852)
Certain languages might display unlocalized text. (47765173, 51196633)
AppKit and Mac Catalyst apps are currently view-only clients of PencilKit. (51146823)
The UIScreen class’s isCaptured API isn’t currently supported. (48360589)
The current property on UIDevice and the OS Product Name is currently returned as iOS rather than macOS, which can affect diagnostic logs generated by your system. (49792004)
Event handling in extension contexts may produce unexpected results, including failure to deliver trackpad pinch and zoom gestures. (50145462)
When sending Mail attachments via MessageUI, each attachment might appear as two icons when viewed by the recipient. (50369995)
Controls drawn with accent color incorrectly maintain their active color when the window is inactive. There is no need to work around this in your app. (50563638)
For Mac Catalyst apps to save to Photos Library, explicitly linking the Photos framework is required. (50781430)
Opening a CloudKit share URL might not launch a Mac Catalyst app that’s present on the system. Additionally, the system might not take the user to the appropriate App Store page to download an app which isn’t present on the system. (50877241)
Action and share extensions might exhibit visual anomalies. (51005363)
All assets at 3x scale factor are currently ignored when compiling the asset catalog for Mac Catalyst apps. Because the search begins with the universal asset, assets for a specific memory or graphics class won’t be found. For example, if you provide an image and only give a 6GB and Metal 5v1 asset, it won’t be found at runtime. It’s recommended that you provide all images as vectors to allow generation of the correct scale factors, or at minimum provide 2x versions of the assets. If you’re classifying resources based on memory and graphics families then you should provide “Any Memory” and “Any Graphics”. (51033745)
CallKit CXAction instances might return an error. (51074735)
When creating a Mac Catalyst app from your iPad app, Xcode automatically generates a unique Mac bundle identifier. If you have an existing Mac bundle identifier you’d prefer to use, you can do so by using manual signing in Xcode. (51076014)Follow these steps to configure your project, AppID, and provisioning profile:
In the Identifiers section, select your iOS app identifier to edit.
Check the Mac Catalyst capability to enable it, then click the Configure button.
Choose Use an existing macOS AppID and select the identifier you’d like to use from the popup menu. Click the Save button to finish editing your AppID.
In the Profiles section, click the + button to create a new profile, select ‘macOS App Development’, and click Continue.
Select your iOS AppID from the popup, click Continue, and complete the rest of the profile creation flow. When finished, click the Download button.
In Xcode, select your project to view the Project Editor and select your app’s target. Then select the Build Settings tab.
Set the Derive Mac Catalyst Product Bundle Identifier setting to No.
Expand the Product Bundle Identifier build setting to view its configurations. Next to the Debug configuration, click the + button to add a conditional value.
For the build setting condition, select Any macOS from the popup menu. Edit the value of the conditional build setting to match the macOS bundle identifier you want to use. Repeat this step for all configurations in your project.
In the Signing & Capabilities tab, uncheck Automatically manage signing.
For your macOS app, select Import Profile from the Provisioning Profile popup and then select the profile you downloaded earlier.
The UIKit module now imports the newly added NSToolbar and NSTouchBar headers, NSToolbar+UIKitAdditions.h and NSTouchBar+UIKitAdditions.h. (50704322)
Mail
Known Issues
If your Mac contains both macOS Mojave 10.14 and macOS 10.15 volumes, you might experience issues searching in Mail. (46611310)Workaround: While running macOS Mojave 10.14, open Terminal and execute the following command:sudo touch /.metadata_never_index_unless_rootfs
Reboot into macOS 10.15, open Terminal and execute the following command:sudo touch /System/Volumes/Data/.metadata_never_index_unless_rootfs
Reboot into macOS Mojave 10.14, open Terminal and execute the following command:sudo mdutil -E /
Depending on the size of your Mail database, it might take many hours to reindex all content.
Music
Resolved Issues
Navigating using the back button works as expected. (51248128)
You can scroll content on shelves. (51248128)
Artwork changes now appear immediately; playlists have been added. (51201715)
The NWEthernetChannel API doesn’t currently support VLAN interfaces. NEPacketTunnelProvider will see both tagged and untagged frames arriving on physical interfaces. Depending on the Ethernet driver, VLAN tags might be processed by hardware and thus stripped off the Ethernet frames thus NEPacketTunnelProvider won’t see the VLAN tag. (51275655)
Deprecations
Support for FTP and File URL schemes for Proxy Automatic Configuration (PAC) is removed. HTTP and HTTPS are the only supported URL schemes for PAC. This affects all PAC configurations including but not limited to configurations set using Settings, System Preferences, profiles, URLSession APIs such as connectionProxyDictionary, and CFNetworkExecuteProxyAutoConfigurationURL(_:_:_:_:). (28578280)
SPDY support is removed from the URLSession and NSURLConnection APIs. Servers should use HTTP 2 or HTTP 1.1. (43391641)
The Network Kernel Extension API is now deprecated. (49284108)
To enable NetBIOS, you can create or edit the /etc/nsmb.conf file. If your system doesn’t already have an /etc/nsmb.conf file, use the following Terminal commands while logged in as an Administrator:echo "[default]" | sudo tee -a /etc/nsmb.conf
echo "port445=both" | sudo tee -a /etc/nsmb.conf
To disable NetBIOS, you can safely delete the /etc/nsmb.conf file.
Photos
New Features
To improve the Photos upgrade experience, Photos is testing database upgrades using a clone of the Photo Library. This clone doesn’t include the content of each photo, but does include faces metadata and a thumbnail image of each person in your library. It also contains metadata such as the asset name and the geographic location of the photo. It is created at ~/Pictures/macOS 10.15 Pre-Upgrade Backup, and you can manually remove this backup at any time. The clone will be removed automatically before the final release of macOS 10.15. (51033690)
Podcasts
Known Issues
Deleting podcasts using About This Mac > Storage > Manage doesn’t update what’s shown in the Podcasts app until it’s relaunched. (50354510)
Resolved Issues
Setting “Automatically Download Episodes” to “Never” now takes effect. (50960777)
Quartz Composer
Deprecations
Starting in macOS 10.15, the Quartz Composer framework is deprecated and remains present for compatibility purposes. Transition to frameworks such as Core Image, SceneKit, or Metal. (50911608)
Screen Time
Known Issues
Screen Time > Content & Privacy > Content > Web Content > Allowed Websites Only isn’t currently enforced in macOS 10.15 beta. (50462899)
Scripting Language Runtimes
Deprecations
Scripting language runtimes such as Python, Ruby, and Perl are included in macOS for compatibility with legacy software. Future versions of macOS won’t include scripting language runtimes by default, and might require you to install additional packages. 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 as 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 from within Terminal. (51097165)
Gesture modifiers are renamed for consistency. For example, tapAction(count:_:) is renamed onTapGesture(count:perform:), and longPressAction(minimumDuration:maximumDistance:_:pressing:) is renamed onLongPressGesture(minimumDuration:maximumDistance:pressing:perform:). (50395282)
Text now has a default line limit of nil so that it wraps by default. (51147116)
BindableObject is replaced by the ObservableObject protocol from the Combine framework. (50800624)You can manually conform to ObservableObject by defining an objectWillChangepublisher that emits before the object changes. However, by default, ObservableObjectautomatically synthesizes objectWillChange and emits before any @Publishedproperties change.// RoomStore.swift
import Foundation
class RoomStore: ObservableObject {
@Published var rooms: [Room] = []
}
struct Room: Identifiable {
var id: UUID
var name: String
var capacity: Int
var hasVideo: Bool
}
// ContentView.swift
import SwiftUI
struct ContentView: View {
@ObservedObject var store: RoomStore
var body: some View {
NavigationView {
List(store.rooms) { room in
RoomCell(room: room)
}
.navigationBarTitle("Rooms")
}
}
}
@ObjectBinding is replaced by @ObservedObject.
The Identifiable protocol is now part of the Swift standard library. As a result, your model files no longer need to import the SwiftUI framework. (SE-0261)
The EnvironmentValues structure has four new properties for reading accessibility values from the environment: accessibilityDifferentiateWithoutColor, accessibilityReduceTransparency, accessibilityReduceMotion, and accessibilityInvertColors. (51712481)
The color(_:) text modifier is renamed foregroundColor(_:) for consistency with the more general foregroundColor(_:) view modifier. (50391847)
The BindableObject protocol’s requirement is now willChange instead ofdidChange, and should now be sent before the object changes rather than after it changes. This change allows for improved coalescing of change notifications. (51580731)
Added an initializer for creating a Font from a CTFont. (51849885)
You can style a NavigationView using two new style properties: StackNavigationViewStyle and DoubleColumnNavigationViewStyle. By default, navigation views on iPhone and Apple TV visually reflect a navigation stack, while on iPad and Mac, a split-view styled navigation view displays. (51636729)When using the DoubleColumnNavigationViewStyle style, you can provide two views when creating a navigation view — the first is the master and the second is the detail. For example:NavigationView {
MyMasterView()
MyDetailView()
}
.navigationViewStyle(DoubleColumnNavigationViewStyle())
Known Issues
Using Xcode 11 beta 4 with macOS Catalina beta 5 prevents previews from working. Update to Xcode 11 beta 5 to use previews. (52082331)
Image instances don’t use resizing information configured in asset catalogs. Configure the size of an image using the resizable(capInsets:resizingMode:) modifier instead. (49114577)
Resolved Issues
Using a ForEach view with a complex expression in its closure no longer results in compiler errors. (53325810)
The Path structure no longer causes your app to crash if you’re using the SDKs included in Xcode 11 beta 6 and later. (53523206)
Deprecations
The Command structure is replaced by passing selectors directly. (53187891)
The SelectionManager protocol is removed, use Optional and Set instances directly for selection. (51557694)
The isPresented environment value is deprecated and replaced with the more general presentationMode value. (51641238)
The StaticMember protocol is deprecated. Use protocol-conforming types directly instead. For example, use an instance of WheelPickerStyle directly rather than the wheel static member.(52911961)
SwiftUI APIs deprecated in previous betas are now removed. (52587863)
The identified(by:) method on the Collection protocol is deprecated in favor of dedicated init(_:id:selection:rowContent:) and init(_:id:content:)initializers. (52976883, 52029393)The retroactive conformance of Int to the Identifiable protocol is removed. Change any code that relies on this conformance to pass \.self to the id parameter of the relevant initializer. Constant ranges of Int continue to be accepted:List(0..<5) {
Text("Rooms")
}
However, you shouldn’t pass a range that changes at runtime. If you use a variable that changes at runtime to define the range, the list displays views according to the initial range and ignores any subsequent updates to the range.
Several extensions to the Binding structure are removed. (51624798)If you have code such as the following:struct LandmarkList: View {
var landmark: [Landmark]
@Binding var favorites: Set<Landmark>
var body: some View {
List(landmarks) { landmark in
Toggle(landmark.name, isOn: self.$favorites.contains(landmarkID))
}
}
}
Define the following subscript on the Set structure:extension Set {
subscript(member: Element) -> Bool {
get { contains(member) }
set {
if newValue {
insert(member)
} else {
remove(member)
}
}
}
}
Then, change self.$favorites.contains(landmarkID) toself.$favorites[landmarkID].
The Binding structure’s conditional conformance to the Collection protocol is removed. (51624798)If you have code such as the following:struct LandmarkList: View {
@Binding var landmark: [Landmark]
var body: some View {
List(landmarks) { landmark in
Toggle(landmark.value.name, isOn: landmark[\.isFavorite])
}
}
}
Define the following collection type:struct IndexedCollection<Base: RandomAccessCollection>: RandomAccessCollection {
typealias Index = Base.Index
typealias Element = (index: Index, element: Base.Element)
let base: Base
var startIndex: Index { base.startIndex }
var endIndex: Index { base.startIndex }
func index(after i: Index) -> Index {
base.index(after: i)
}
func index(before i: Index) -> Index {
base.index(before: i)
}
func index(_ i: Index, offsetBy distance: Int) -> Index {
base.index(i, offsetBy: distance)
}
subscript(position: Index) -> Element {
(index: position, element: base[position])
}
}
extension RandomAccessCollection {
func indexed() -> IndexedCollection<Self> {
IndexedCollection(base: self)
}
}
Then, update your code to:struct LandmarkList: View {
@Binding var landmarks: [Landmark]
var body: some View {
List(landmarks.indexed(), id: \.1.id) { (index, landmark) in
Toggle(landmark.name, isOn: self.$landmarks[index].isFavorite)
}
}
}
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)
Apple has released a 2nd 10.14.6 Supplemental update to address additional wake from sleep kernel panic issues. Click on the link below for more information.
MacOS Mojave 10.14.6 Supplemental Update was released today.
On the heels of the 2019-004 Security update rereleases, today Apple released one new update (Supplemental Update) and rereleased 10.14.6 updates.
1. 10.14.6 Supplemental Update – New
2. 10.14.6 Full Installer.app – Rereleased & Fixed
3. 10.14.6 Combo Update – Rereleased & Fixed
4. 10.14.6 Delta Update – Rereleased & Fixed
I say Rereleased & Fixed because the OS version is still 10.14.6, but the Build Version changed and now has the Supplemental update fixes built-in.
“Fixes an issue that may prevent certain Macs from waking from sleep properly.”
When the 2019-004 Security Update wake from sleep Kernel Panics started to happen, most of the reports were from 10.13 High Sierra. I did see a few from 10.12 Sierra and a few from 10.14 Mojave. The issue was coming mostly from users reports on Apple’s Discussion Forum, Reddit, MacRumors & Emails / Comments to me.
Is this issue the same as the 2019-004 Sleep/Wake issue?
I’m not sure if Mojave had the same issue, but it sure looks like it. I tried many times to reproduce this issue but couldn’t on multiple Mac models. Most likely, this means that a very particular software setup caused the problem.
New and Previous Build Versions of 10.14.6
July 22nd version of 10.14.6 = (18G84)
August 1st version of 10.14.6 = (18G87)
Download Links for the new 10.14.6 Updates
10.14.6 Delta Update – Still old July 22nd version do not downloadfrom apple.com/downloads until the page is updated!!!
10.14.6 Combo Update – Still old July 22nd version do not downloadfrom apple.com/downloads until the page is updated!!!
Do I need to reinstall the new 10.14.6 update? & Which update do I need if I’m on a previous version of 10.14?
1. Do I need to reinstall the new 10.14.6 update? – The answer is it depends!
10.14.6 = New Supplemental Update
10.14.5 = New Delta Update
10.14.0 – 10.14.4 =New Combo Update
2. Which update do I need if I’m on a previous version? – The above chart now answers this one ^
If I deployed/cached the old 10.14.6 Installer.app for upgrades, do I need to redeploy?
Do I have to replace my deployable 10.14.6 Installer.app? – YES!!!
If you deployed the old version of the 10.14.6 (18G84) Installer, you should update it to the new (18G87). If you don’t your users may be stuck with a sleep-wake issue and have to install the Supplemental Update to fix it!
What if I cached the old 10.14.6 Update to all my systems?
What will happen if I already cached the old version of 10.14.6 to my users?
My guess was once the Mac reached out to software update it would find the new version of 10.14.6 and download it. Pcrandom ran this test and found that this is, in fact, true with one catch. The old version was still in /Library/Updates.
“I am seeing some Macs that have both copies when running du -hd1 /Library/Updates:“
2.8G /Library/Updates/041-88928
2.8G /Library/Updates/041-94407
202M /Library/Updates/041-86543
5.9G /Library/Updates
I wanted to test installing the new update to see if the old one was removed, but we did not get a chance to test.
Keep in mind that in 10.14 /Library/Updates is SIP protected, so you will not be able to delete the old update if it remains!
Softwareupdate knows all.
If you are using softwareupdate to deploy updates to your Macs, you will be fine. It will let you know which update you need to install. If you want to check just run a quick softwareupdate -l and you will see what’s available for your particular situation.
Today Apple released macOS Catalina 10.15 (19A526h) Beta 5 to Developers.
MacOS Catalina 10.15 (19A526h) Beta 5 was released today July 31st, 2019 at 12:00 CST. I went through both Beta 4 and the new Beta 5 release notes to find all the changes. Like usual, I also have included the entire patch notes list as an archive. When Apple releases the Beta 6 patch notes, the previous patch notes are overwritten and taken down.
Summary of Beta 5 Patch Notes
31 New Deprecations
29 New Features
38 New Known Issues
11 New Resolved issues
1. New Deprecations in Beta 5
General – macOS frameworks are now thinned for the x86-64 architecture. Apps that execute i386 code now fail with the EBADARCH error code. The remaining stub frameworks are nonfunctional and exist only for compatibility purposes. (51236070)
Audio – The OpenAL framework is deprecated and remains present for compatibility purposes. Transition to AVAudioEngine for spatial audio functionality.
Audio – AUGraph is deprecated in favor of AVAudioEngine.
Audio – Inter-App audio is deprecated. Use Audio Units for this functionality.
Audio – Carbon component-based Audio Units are deprecated and support will be removed in a future release.
Audio – Legacy Core Audio HAL audio hardware plug-ins are no longer supported. Use Audio Server plug-ins for audio drivers.
AVFoundations – The previously deprecated 32-bit QuickTime framework is no longer available in macOS 10.15.
AVFoundations – The symbols for QTKit, which relied on the QuickTime framework, are still present but the classes are non-functional.
EndpointSecurity – The kauth API will be removed in a future release. (50419013)
Networking – Support for FTP and File URL schemes for Proxy Automatic Configuration (PAC) is removed. HTTP and HTTPS are the only supported URL schemes for PAC. This affects all PAC configurations including but not limited to configurations set using Settings, System Preferences, profiles, URLSession APIs such as connectionProxyDictionary, and CFNetworkExecuteProxyAutoConfigurationURL(::::). (28578280)
Networking – SPDY support is removed from the URLSession and NSURLConnection APIs. Servers should use HTTP 2 or HTTP 1.1. (43391641)
Networking – The Network Kernel Extension API is now deprecated. (49284108)
Networking – NetBIOS is disabled in macOS 10.15 to speed up mounting, browsing, and connecting to SMB shares. Some older printers and file servers may require NetBIOS to connect. (51119111)To enable NetBIOS, you can create or edit the /etc/nsmb.conf file. If your system doesn’t already have an /etc/nsmb.conf file, use the following Terminal commands while logged in as an Administrator:echo “[default]” | sudo tee -a /etc/nsmb.conf echo “port445=both” | sudo tee -a /etc/nsmb.conf To disable NetBIOS, you can safely delete the /etc/nsmb.conf file.
Quartz Composer – Starting in macOS 10.15, the Quartz Composer framework is deprecated and remains present for compatibility purposes. Transition to frameworks such as Core Image, SceneKit, or Metal. (50911608)
Screen Time – Users can no longer select “One more minute” multiple times per day once they reach the limit for an app. (48773803)
Scripting Language Runtimes – Scripting language runtimes such as Python, Ruby, and Perl are included in macOS for compatibility with legacy software. Future versions of macOS won’t include scripting language runtimes by default, and might require you to install additional packages. If your software depends on scripting languages, it’s recommended that you bundle the runtime within the app. (49764202)
Scripting Language Runtimes – Use of Python 2.7 isn’t recommended as 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 from within Terminal. (51097165)
SwiftUI – The Command structure is replaced by passing selectors directly. (53187891)
SwiftUI – NavigationDestinationLink and DynamicNavigationDestinationLink are deprecated; their functionality is now included in NavigationLink. (50630794)
SwiftUI – The Length type is replaced by CGFloat. (50654095)
SwiftUI – TabbedView is now named TabView. (51012120)
SwiftUI – HAlignment and VAlignment are now deprecated, use the more flexible HorizontalAlignment or VerticalAlignment types instead and use TextAlignment for text. (51190531)
SwiftUI – The SelectionManager protocol is removed, use Optional and Set instances directly for selection. (51557694)
SwiftUI – The isPresented environment value is deprecated and replaced with the more general presentationMode value. (51641238)
SwiftUI – The StaticMember protocol is deprecated. Use protocol-conforming types directly instead. For example, use an instance of WheelPickerStyle directly rather than the wheel static member.(52911961)
SwiftUI – Complex overloads for the background(:alignment:) and border(:width:)modifiers are deprecated. Use shapes in a background(:alignment:) or overlay(:alignment:) to draw these instead. (53067530)
SwiftUI – SwiftUI APIs deprecated in previous betas are now removed. (52587863)
SwiftUI – The identified(by:) method on the Collection protocol is deprecated in favor of dedicated init(:id:selection:rowContent:) and init(:id:content:)initializers. (52976883, 52029393)The retroactive conformance of Int to the Identifiable protocol is removed. Change any code that relies on this conformance to pass .self to the id parameter of the relevant initializer. Constant ranges of Int continue to be accepted:List(0..<5) { Text(“Rooms”) } However, you shouldn’t pass a range that changes at runtime. If you use a variable that changes at runtime to define the range, the list displays views according to the initial range and ignores any subsequent updates to the range.
SwiftUI – Several extensions to the Binding structure are removed. (51624798)If you have code such as the following:struct LandmarkList: View { var landmark: [Landmark] @Binding var favorites: Set var body: some View { List(landmarks) { landmark in Toggle(landmark.name, isOn: self.$favorites.contains(landmarkID)) } } } Define the following subscript on the Set structure:extension Set { subscript(member: Element) -> Bool { get { contains(member) } set { if newValue { insert(member) } else { remove(member) } } } } Then, change self.$favorites.contains(landmarkID) toself.$favorites[landmarkID].
SwiftUI – The Binding structure’s conditional conformance to the Collection protocol is removed. (51624798)If you have code such as the following:struct LandmarkList: View { @Binding var landmark: [Landmark] var body: some View { List(landmarks) { landmark in Toggle(landmark.value.name, isOn: landmark[.isFavorite]) } } } Define the following collection type:struct IndexedCollection: RandomAccessCollection { typealias Index = Base.Index typealias Element = (index: Index, element: Base.Element) let base: Base var startIndex: Index { base.startIndex } var endIndex: Index { base.startIndex } func index(after i: Index) -> Index { base.index(after: i) } func index(before i: Index) -> Index { base.index(before: i) } func index(_ i: Index, offsetBy distance: Int) -> Index { base.index(i, offsetBy: distance) } subscript(position: Index) -> Element { (index: position, element: base[position]) } } extension RandomAccessCollection { func indexed() -> IndexedCollection { IndexedCollection(base: self) } } Then, update your code to:struct LandmarkList: View { @Binding var landmarks: [Landmark] var body: some View { List(landmarks.indexed(), id: .1.id) { (index, landmark) in Toggle(landmark.name, isOn: self.$landmarks[index].isFavorite) } } }
Xcode – 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)
2. New Features in Beta 5
General – Installing third party kernel extensions now requires that you restart your Mac before they’re permitted to load. (50340461)
AppleEvents – To enhance security, AppleEvents and AppleScripts that target an app on a remote system must authenticate as the same user on the remote system. An AppleEvent that targets an app running as a different user receives a procNotFound error.To allow remote AppleEvents to target apps in any user session, run the following command in Terminal on the server:defaults write /Library/Preferences/com.apple.AEServer RestrictAccessToUserSession -bool false Then disable and reenable Remote Apple Events in System Preferences > Sharing. (5353592)
Audio – You can now enable voice processing mode on AVAudioEngine. (50906329)
Audio – You can use new AVAudioNode types to wrap a user-defined block for sending or receiving data in real-time.
Audio – A new method is available for an AVAudioEngine based app to retrieve a list of all nodes attached to an AVAudioEngine instance.
Audio – A new rendering mode in AVAudioEnvironmentNode selects the best spatial audio rendering algorithm automatically based on the output device.
Audio – A new AVAudioSession property allows system sounds and haptics to play while the session is actively using audio input.
Audio – A new property, AVAudioSession.PromptStyle informs apps which style of voice prompt they should play based on other audio activity in the system.
Audio – The AVAudioSession.RouteSharingPolicy enumeration is extended to allow apps to specify route sharing policies so their audio and video is routed to the same location as AirPlay.
Audio – Audio Unit Extensions now support user presets that are available across all host apps.
AVFoundation – The AVPlayer class includes to new properties, eligibleForHDRPlayback and eligibleForHDRPlaybackDidChangeNotification, which you can use to determine whether an HDR display is available and can play on the current device. (35938145)
AVFoundation – AVFoundation now supports encoding video with alpha channels using HEVC. Videos encoded in this manner are broadly supported in AVFoundation APIs and by Safari within web pages. Technical details of the format can be found in the Interoperability Profile specification. (8045917)
Core Image – The init(imageURL:options:) and init(imageData:options:) initializers no longer support RAW decoder versions earlier than 6. Version 6 and later remain supported. (50911303)
Core Image – Added new APIs for instantiating and modifying the built-in Core Image filters.
Core Image – The CICoreMLModel filter is enhanced to support models with an input or output of type MLFeatureType.multiArray.
Core Image – Metal CIKernel instances now support arguments with arbitrarily structured data.
Core Image – Metal CIKernel instances now support returning a group of two by two pixels.
Core Image – The integer values of CIFormat symbols, such as ARGB8, have changed to a new set of values which are consistent across platforms. The former values remain supported for backward compatibility; however, you should avoid dependancies on specific numerical values.
Launch Daemons and Agents – Launch daemons and launch agents introduce new user privacy protections. Specifying privacy-sensitive files and folders in a launchd property list might not work as expected and prevent the service from running. Having Program or ProgramArguments pointing to an executable in a privacy sensitive location is currently allowed, but may be restricted in a future release. (49702405)To comply with the new privacy protections, resources for a launchd service must be stored in locations that aren’t privacy sensitive. If necessary, the app can set up resources during its execution rather than using launchd property list keys, making it possible to grant the app access using System Preferences > Security & Privacy > Privacy.The following launchd property list keys are affected: KeepAlive, PathState, QueueDirectories, Sockets, SockPathName, StandardErrorPath, StandardInPath, StandardOutPath, and WatchPaths.
Photos – To improve the Photos upgrade experience, Photos is testing database upgrades using a clone of the Photo Library. This clone doesn’t include the content of each photo, but does include faces metadata and a thumbnail image of each person in your library. It also contains metadata such as the asset name and the geographic location of the photo. It is created at ~/Pictures/macOS 10.15 Pre-Upgrade Backup, and you can manually remove this backup at any time. The clone will be removed automatically before the final release of macOS 10.15. (51033690)
SwiftUI – You can now create a Color from a UIColor or NSColor. (49833933)
SwiftUI – NSManagedObject now conforms to ObservableObject. The new @FetchRequestproperty wrapper can drive views from the results of a fetch request, and managedObjectContext is now included in the environment. (50280673)
SwiftUI – Gesture modifiers are renamed for consistency. For example, tapAction(count:🙂 is renamed onTapGesture(count:perform:), and longPressAction(minimumDuration:maximumDistance::pressing:) is renamed onLongPressGesture(minimumDuration:maximumDistance:pressing:perform:). (50395282)
SwiftUI – Text now has a default line limit of nil so that it wraps by default. (51147116)
SwiftUI – ContentSizeCategory and several other enumerations are now CaseIterable. (51168712)
SwiftUI – SegmentedControl is now a style of Picker. (51769046)
SwiftUI – BindableObject is replaced by the ObservableObject protocol from the Combine framework. (50800624)You can manually conform to ObservableObject by defining an objectWillChangepublisher that emits before the object changes. However, by default, ObservableObjectautomatically synthesizes objectWillChange and emits before any @Publishedproperties change.// RoomStore.swift import Foundation class RoomStore: ObservableObject { @Published var rooms: [Room] = [] } struct Room: Identifiable { var id: UUID var name: String var capacity: Int var hasVideo: Bool } // ContentView.swift import SwiftUI struct ContentView: View { @ObservedObject var store: RoomStore var body: some View { NavigationView { List(store.rooms) { room in RoomCell(room: room) } .navigationBarTitle(“Rooms”) } } } @ObjectBinding is replaced by @ObservedObject.
SwiftUI – The Identifiable protocol is now part of the Swift standard library. As a result, your model files no longer need to import the SwiftUI framework. (SE-0261)
SwiftUI – You can style a NavigationView using two new style properties: StackNavigationViewStyle and DoubleColumnNavigationViewStyle. By default, navigation views on iPhone and Apple TV visually reflect a navigation stack, while on iPad and Mac, a split-view styled navigation view displays. (51636729)When using the DoubleColumnNavigationViewStyle style, you can provide two views when creating a navigation view — the first is the master and the second is the detail. For example:NavigationView { MyMasterView() MyDetailView() } .navigationViewStyle(DoubleColumnNavigationViewStyle())
3. New Known Issues in Beta 5
General – If you use Quick Look to preview an HTML document, the app you’re using might quit unexpectedly. (53330705)
General – During installation of macOS 10.15 you might be prompted to enter your administrator password multiple times to allow installation to proceed. (51206649)
App Store – You might receive an error when downloading or updating apps. (49755328)Workaround: Sign out of your account using the Store menu, then sign back in and retry your download.
Apple TV – Support for signing in with an account from a different country is currently unavailable. (51240948)
Camera – Apps using Picture Taker must specify the NSCameraUsageDescription key to access the FaceTime camera. (47916725)
EndpointSecurity – Using APIs related to muting by paths and path prefixes might cause the kernel to panic. (53517643)Workaround: Modify only muted paths and path prefixes when the client isn’t subscribed to any events. es_mute_path_prefix, es_mute_path_literal, and es_unmute_all_paths are affected.
EndpointSecurity – Messages to clients might be truncated, which could cause clients to quit unexpectedly. (53517680)
iCloud – The Cloud Files section in About This Mac > Storage > Manage might inaccurately represent the current state of files on your Mac. (50362095)
iCloud – Even when Optimize Storage is switched off, iCloud Drive might fail to automatically download all files. (50667204)Workaround: Download files individually.
iCloud – When creating a new Pages, Numbers, or Keynote document in a shared folder, you might see the message “Couldn’t connect to iCloud”. (50827963)Workaround: Close and reopen the document.
iWork – Launch Daemons and Agents
Localization – Certain languages might exhibit clipped or misaligned layout. (51068688, 50983852)
Localization – Certain languages might display unlocalized text. (47765173, 51196633)
Mac Catalyst – MPMediaPickerController might not display the contents of your library. (51785735)
Mac Catalyst – In order to show a share sheet from a toolbar item using the UIActivityViewController, create the NSToolbarItem using the init(itemIdentifier:)initializer and pass it a UIBarButtonItem configured as a UIBarButtonItem.SystemItem.action. There is no need to set the barButtonItem property. (47292316)
Mac Catalyst – The UIScreen class’s isCaptured API isn’t currently supported. (48360589)
Mac Catalyst – The current property on UIDevice and the OS Product Name is currently returned as iOS rather than macOS, which can affect diagnostic logs generated by your system. (49792004)
Mac Catalyst – Event handling in extension contexts may produce unexpected results, including failure to deliver trackpad pinch and zoom gestures. (50145462)
Mac Catalyst – When sending Mail attachments via MessageUI, each attachment might appear as two icons when viewed by the recipient. (50369995)
Mac Catalyst – Controls drawn with accent color incorrectly maintain their active color when the window is inactive. There is no need to work around this in your app. (50563638)
Mac Catalyst – The UIKit module currently doesn’t import the newly added NSToolbar and NSTouchBarheaders, NSToolbar+UIKitAdditions.h and NSTouchBar+UIKitAdditions.h. You can import these headers directly in Objective-C, or you can create a bridging header to import them for Swift. Be sure to import Foundation before importing these headers. (50704322)
Mac Catalyst – Action and share extensions might exhibit visual anomalies. (51005363)
Mac Catalyst – CallKit CXAction instances might return an error. (51074735)
Mail – If your Mac contains both macOS Mojave 10.14 and macOS 10.15 volumes, you might experience issues searching in Mail. (46611310)Workaround: While running macOS Mojave 10.14, open Terminal and execute the following command:sudo touch /.metadata_never_index_unless_rootfs Reboot into macOS 10.15, open Terminal and execute the following command:sudo touch /System/Volumes/Data/.metadata_never_index_unless_rootfs Reboot into macOS Mojave 10.14, open Terminal and execute the following command:sudo mdutil -E / Depending on the size of your Mail database, it might take many hours to reindex all content.
Music – Navigating using the back button might produce unexpected results. (51248128)
Music – You might be unable to scroll content on shelves. (51248128)
Music – Artwork changes might not immediately appear; playlists will be added in an upcoming beta. (51201715)
Music – Music might not remember the previously selected tab when it’s relaunched. (50922604)
Networking – The NWEthernetChannel API doesn’t currently support VLAN interfaces. NEPacketTunnelProvider will see both tagged and untagged frames arriving on physical interfaces. Depending on the Ethernet driver, VLAN tags might be processed by hardware and thus stripped off the Ethernet frames thus NEPacketTunnelProvider won’t see the VLAN tag. (51275655)
Podcasts – Deleting podcasts using About This Mac > Storage > Manage doesn’t update what’s shown in the Podcasts app until it’s relaunched. (50354510)
Podcasts – Setting “Automatically Download Episodes” to “Never” might not take effect. (50960777)
Podcasts – If Podcasts is placed in Full Screen mode, some UI elements might be obscured by the toolbar. (47125303)
Screen Time – Screen Time > Content & Privacy > Content > Web Content > Allowed Websites Only isn’t currently enforced in macOS 10.15 beta. (50462899)
Spotlight – Mail messages might not display previews. (35678035)
SwiftUI – Using Xcode 11 beta 4 with macOS Catalina beta 5 prevents previews from working. Update to Xcode 11 beta 5 to use previews. (52082331)
SwiftUI – Using the Path structure may cause your app to crash if you’re using the SDKs included in Xcode 11 beta 5. (53523206)
SwiftUI – Using a ForEach view with a complex expression in its closure can may result in compiler errors.Workaround: Extract those expressions into their own View types. (53325810)
SwiftUI – Image instances don’t use resizing information configured in asset catalogs. Configure the size of an image using the resizable(capInsets:resizingMode:) modifier instead. (49114577)
4. New Resolved Issues in Beta 5
General – Your Secure Token correctly remains when FileVault is enabled on a non-APFS formatted volume while upgrading to macOS Catalina 10.15. (51091312)
EndpointSecurity – High frequency AUTH events such as ES_EVENT_TYPE_AUTH_READLINK triggered by logd no longer cause the client to become unresponsive. (52211117)
EndpointSecurity – The es_mute_process(:🙂 interface correctly mutes processes. (53017708)
iCloud – Documents saved to your Desktop appear correctly when you’re using iCloud Desktop and Documents. (51569326, 52731989)
Podcasts – You can manually check for feed updates by selecting File > Refresh Feeds. (50958585)
Podcasts – The sidebar renders as expected. (51340728)
Privacy – Apps that previously asked for access to services in the System Preferences > Security & Privacy > Privacy pane no longer ask for approval again after updating to macOS Catalina beta 5. (51312574)
Screen Time – Users can no longer select “One more minute” multiple times per day once they reach the limit for an app. (48773803)
Security – Opening some .dmg files signed before June 1, 2019 using a Developer ID no longer incorrectly display an error message. All .dmg files signed using a Developer ID after June 1, 2019 must be notarized. For more information about notarization, see Notarizing Your App Before Distribution. (52234399)
Report your bugs NOW!
Now that 10.15 Beta is live, be sure you begin testing as soon as you can. You will want to get any bugs that you find into Apple now. If you get them in now, they could be fixed in the current beta cycle instead of waiting until after September’s release date. If you wait it could be months before the fix is put into a dot release combo update.
I always post the full macOS 10.15 Beta 4 patch notes to this page to document them for you. The reason behind that is that Apple will usually just replace over the old patch notes so you are then unable to see what was fixed in the previous release.
Overview
The macOS 10.15 SDK provides support for developing apps for Macs running macOS Catalina 10.15. The SDK comes bundled with Xcode 11 beta available from Beta Software Downloads. For information on the compatibility requirements for Xcode 11, see Xcode 11 Beta 5 Release Notes.
General
New Features
Installing third party kernel extensions now requires that you restart your Mac before they’re permitted to load. (50340461)
Known Issues
If you use Quick Look to preview an HTML document, the app you’re using might quit unexpectedly. (53330705)
During installation of macOS 10.15 you might be prompted to enter your administrator password multiple times to allow installation to proceed. (51206649)
Resolved Issues
Your Secure Token correctly remains when FileVault is enabled on a non-APFS formatted volume while upgrading to macOS Catalina 10.15. (51091312)
Deprecations
macOS frameworks are now thinned for the x86-64 architecture. Apps that execute i386 code now fail with the EBADARCH error code. The remaining stub frameworks are nonfunctional and exist only for compatibility purposes. (51236070)
AirDrop
Known Issues
AirDrop doesn’t work when a VPN is connected with the includeAllNetworks and excludeLocalNetworks options enabled.Workaround: Disconnect the VPN before using AirDrop. (52618489)
App Store
Known Issues
You might receive an error when downloading or updating apps. (49755328)Workaround: Sign out of your account using the Store menu, then sign back in and retry your download.
Apple TV
Known Issues
Support for signing in with an account from a different country is currently unavailable. (51240948)
AppleEvents
New Features
To enhance security, AppleEvents and AppleScripts that target an app on a remote system must authenticate as the same user on the remote system. An AppleEvent that targets an app running as a different user receives a procNotFound error.To allow remote AppleEvents to target apps in any user session, run the following command in Terminal on the server:defaults write /Library/Preferences/com.apple.AEServer RestrictAccessToUserSession -bool false
Then disable and reenable Remote Apple Events in System Preferences > Sharing. (5353592)
Audio
New Features
You can now enable voice processing mode on AVAudioEngine. (50906329)
You can use new AVAudioNode types to wrap a user-defined block for sending or receiving data in real-time.
A new method is available for an AVAudioEngine based app to retrieve a list of all nodes attached to an AVAudioEngine instance.
A new rendering mode in AVAudioEnvironmentNode selects the best spatial audio rendering algorithm automatically based on the output device.
A new AVAudioSession property allows system sounds and haptics to play while the session is actively using audio input.
A new property, AVAudioSession.PromptStyle informs apps which style of voice prompt they should play based on other audio activity in the system.
The AVAudioSession.RouteSharingPolicy enumeration is extended to allow apps to specify route sharing policies so their audio and video is routed to the same location as AirPlay.
Audio Unit Extensions now support user presets that are available across all host apps.
Deprecations
The OpenAL framework is deprecated and remains present for compatibility purposes. Transition to AVAudioEngine for spatial audio functionality.
AVFoundation now supports encoding video with alpha channels using HEVC. Videos encoded in this manner are broadly supported in AVFoundation APIs and by Safari within web pages. Technical details of the format can be found in the Interoperability Profile specification. (8045917)
Deprecations
The previously deprecated 32-bit QuickTime framework is no longer available in macOS 10.15.
The symbols for QTKit, which relied on the QuickTime framework, are still present but the classes are non-functional.
Camera
Known Issues
Apps using Picture Taker must specify the NSCameraUsageDescription key to access the FaceTime camera. (47916725)
Metal CIKernel instances now support arguments with arbitrarily structured data.
Metal CIKernel instances now support returning a group of two by two pixels.
The integer values of CIFormat symbols, such as ARGB8, have changed to a new set of values which are consistent across platforms. The former values remain supported for backward compatibility; however, you should avoid dependancies on specific numerical values.
DriverKit
Resolved Issues
DriverKit drivers build correctly. (52858797)
EndpointSecurity
Known Issues
Using APIs related to muting by paths and path prefixes might cause the kernel to panic. (53517643)Workaround: Modify only muted paths and path prefixes when the client isn’t subscribed to any events. es_mute_path_prefix, es_mute_path_literal, and es_unmute_all_paths are affected.
Messages to clients might be truncated, which could cause clients to quit unexpectedly. (53517680)
Resolved Issues
High frequency AUTH events such as ES_EVENT_TYPE_AUTH_READLINK triggered by logd no longer cause the client to become unresponsive. (52211117)
The es_mute_process(_:_:) interface correctly mutes processes. (53017708)
The kauth API will be removed in a future release. (50419013)
iCloud
Known Issues
The Cloud Files section in About This Mac > Storage > Manage might inaccurately represent the current state of files on your Mac. (50362095)
Even when Optimize Storage is switched off, iCloud Drive might fail to automatically download all files. (50667204)Workaround: Download files individually.
When creating a new Pages, Numbers, or Keynote document in a shared folder, you might see the message “Couldn’t connect to iCloud”. (50827963)Workaround: Close and reopen the document.
Resolved Issues
Documents saved to your Desktop appear correctly when you’re using iCloud Desktop and Documents. (51569326, 52731989)
iWork
Known Issues
Attempting to open iWork documents in Finder will unexpectedly create a .cpgz file if the corresponding iWork app isn’t installed. (40693892)Workaround: Install the corresponding app from the App Store before opening the document.
Launch Daemons and Agents
New Features
Launch daemons and launch agents introduce new user privacy protections. Specifying privacy-sensitive files and folders in a launchd property list might not work as expected and prevent the service from running. Having Program or ProgramArguments pointing to an executable in a privacy sensitive location is currently allowed, but may be restricted in a future release. (49702405)To comply with the new privacy protections, resources for a launchd service must be stored in locations that aren’t privacy sensitive. If necessary, the app can set up resources during its execution rather than using launchd property list keys, making it possible to grant the app access using System Preferences > Security & Privacy > Privacy.The following launchd property list keys are affected: KeepAlive, PathState, QueueDirectories, Sockets, SockPathName, StandardErrorPath, StandardInPath, StandardOutPath, and WatchPaths.
Localization
Known Issues
Certain languages might exhibit clipped or misaligned layout. (51068688, 50983852)
Certain languages might display unlocalized text. (47765173, 51196633)
The UIScreen class’s isCaptured API isn’t currently supported. (48360589)
The current property on UIDevice and the OS Product Name is currently returned as iOS rather than macOS, which can affect diagnostic logs generated by your system. (49792004)
Event handling in extension contexts may produce unexpected results, including failure to deliver trackpad pinch and zoom gestures. (50145462)
When sending Mail attachments via MessageUI, each attachment might appear as two icons when viewed by the recipient. (50369995)
Controls drawn with accent color incorrectly maintain their active color when the window is inactive. There is no need to work around this in your app. (50563638)
The UIKit module currently doesn’t import the newly added NSToolbar and NSTouchBarheaders, NSToolbar+UIKitAdditions.h and NSTouchBar+UIKitAdditions.h. You can import these headers directly in Objective-C, or you can create a bridging header to import them for Swift. Be sure to import Foundation before importing these headers. (50704322)
For Mac Catalyst apps to save to Photos Library, explicitly linking the Photos framework is required. (50781430)
Opening a CloudKit share URL might not launch a Mac Catalyst app that’s present on the system. Additionally, the system might not take the user to the appropriate App Store page to download an app which isn’t present on the system. (50877241)
Action and share extensions might exhibit visual anomalies. (51005363)
All assets at 3x scale factor are currently ignored when compiling the asset catalog for Mac Catalyst apps. Because the search begins with the universal asset, assets for a specific memory or graphics class won’t be found. For example, if you provide an image and only give a 6GB and Metal 5v1 asset, it won’t be found at runtime. It’s recommended that you provide all images as vectors to allow generation of the correct scale factors, or at minimum provide 2x versions of the assets. If you’re classifying resources based on memory and graphics families then you should provide “Any Memory” and “Any Graphics”. (51033745)
CallKit CXAction instances might return an error. (51074735)
When creating a Mac Catalyst app from your iPad app, Xcode automatically generates a unique Mac bundle identifier. If you have an existing Mac bundle identifier you’d prefer to use, you can do so by using manual signing in Xcode. (51076014)Follow these steps to configure your project, AppID, and provisioning profile:
In the Identifiers section, select your iOS app identifier to edit.
Check the Mac Catalyst capability to enable it, then click the Configure button.
Choose Use an existing macOS AppID and select the identifier you’d like to use from the popup menu. Click the Save button to finish editing your AppID.
In the Profiles section, click the + button to create a new profile, select ‘macOS App Development’, and click Continue.
Select your iOS AppID from the popup, click Continue, and complete the rest of the profile creation flow. When finished, click the Download button.
In Xcode, select your project to view the Project Editor and select your app’s target. Then select the Build Settings tab.
Set the Derive Mac Catalyst Product Bundle Identifier setting to No.
Expand the Product Bundle Identifier build setting to view its configurations. Next to the Debug configuration, click the + button to add a conditional value.
For the build setting condition, select Any macOS from the popup menu. Edit the value of the conditional build setting to match the macOS bundle identifier you want to use. Repeat this step for all configurations in your project.
In the Signing & Capabilities tab, uncheck Automatically manage signing.
For your macOS app, select Import Profile from the Provisioning Profile popup and then select the profile you downloaded earlier.
Mail
Known Issues
If your Mac contains both macOS Mojave 10.14 and macOS 10.15 volumes, you might experience issues searching in Mail. (46611310)Workaround: While running macOS Mojave 10.14, open Terminal and execute the following command:sudo touch /.metadata_never_index_unless_rootfs
Reboot into macOS 10.15, open Terminal and execute the following command:sudo touch /System/Volumes/Data/.metadata_never_index_unless_rootfs
Reboot into macOS Mojave 10.14, open Terminal and execute the following command:sudo mdutil -E /
Depending on the size of your Mail database, it might take many hours to reindex all content.
Music
Known Issues
Navigating using the back button might produce unexpected results. (51248128)
You might be unable to scroll content on shelves. (51248128)
Artwork changes might not immediately appear; playlists will be added in an upcoming beta. (51201715)
Music might not remember the previously selected tab when it’s relaunched. (50922604)
The NWEthernetChannel API doesn’t currently support VLAN interfaces. NEPacketTunnelProvider will see both tagged and untagged frames arriving on physical interfaces. Depending on the Ethernet driver, VLAN tags might be processed by hardware and thus stripped off the Ethernet frames thus NEPacketTunnelProvider won’t see the VLAN tag. (51275655)
Deprecations
Support for FTP and File URL schemes for Proxy Automatic Configuration (PAC) is removed. HTTP and HTTPS are the only supported URL schemes for PAC. This affects all PAC configurations including but not limited to configurations set using Settings, System Preferences, profiles, URLSession APIs such as connectionProxyDictionary, and CFNetworkExecuteProxyAutoConfigurationURL(_:_:_:_:). (28578280)
SPDY support is removed from the URLSession and NSURLConnection APIs. Servers should use HTTP 2 or HTTP 1.1. (43391641)
The Network Kernel Extension API is now deprecated. (49284108)
NetBIOS is disabled in macOS 10.15 to speed up mounting, browsing, and connecting to SMB shares. Some older printers and file servers may require NetBIOS to connect. (51119111)To enable NetBIOS, you can create or edit the /etc/nsmb.conf file. If your system doesn’t already have an /etc/nsmb.conf file, use the following Terminal commands while logged in as an Administrator:echo "[default]" | sudo tee -a /etc/nsmb.conf
echo "port445=both" | sudo tee -a /etc/nsmb.conf
To disable NetBIOS, you can safely delete the /etc/nsmb.conf file.
Photos
New Features
To improve the Photos upgrade experience, Photos is testing database upgrades using a clone of the Photo Library. This clone doesn’t include the content of each photo, but does include faces metadata and a thumbnail image of each person in your library. It also contains metadata such as the asset name and the geographic location of the photo. It is created at ~/Pictures/macOS 10.15 Pre-Upgrade Backup, and you can manually remove this backup at any time. The clone will be removed automatically before the final release of macOS 10.15. (51033690)
Podcasts
Known Issues
Deleting podcasts using About This Mac > Storage > Manage doesn’t update what’s shown in the Podcasts app until it’s relaunched. (50354510)
Setting “Automatically Download Episodes” to “Never” might not take effect. (50960777)
If Podcasts is placed in Full Screen mode, some UI elements might be obscured by the toolbar. (47125303)
Resolved Issues
You can manually check for feed updates by selecting File > Refresh Feeds. (50958585)
The sidebar renders as expected. (51340728)
Privacy
Resolved Issues
Apps that previously asked for access to services in the System Preferences > Security & Privacy > Privacy pane no longer ask for approval again after updating to macOS Catalina beta 5. (51312574)
Quartz Composer
Deprecations
Starting in macOS 10.15, the Quartz Composer framework is deprecated and remains present for compatibility purposes. Transition to frameworks such as Core Image, SceneKit, or Metal. (50911608)
Screen Time
Known Issues
Screen Time > Content & Privacy > Content > Web Content > Allowed Websites Only isn’t currently enforced in macOS 10.15 beta. (50462899)
Resolved Issues
Users can no longer select “One more minute” multiple times per day once they reach the limit for an app. (48773803)
Scripting Language Runtimes
Deprecations
Scripting language runtimes such as Python, Ruby, and Perl are included in macOS for compatibility with legacy software. Future versions of macOS won’t include scripting language runtimes by default, and might require you to install additional packages. 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 as 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 from within Terminal. (51097165)
Security
Resolved Issues
Opening some .dmg files signed before June 1, 2019 using a Developer ID no longer incorrectly display an error message. All .dmg files signed using a Developer ID after June 1, 2019 must be notarized. For more information about notarization, see Notarizing Your App Before Distribution. (52234399)
Spotlight
Known Issues
Mail messages might not display previews. (35678035)
BindableObject is replaced by the ObservableObject protocol from the Combine framework. (50800624)You can manually conform to ObservableObject by defining an objectWillChangepublisher that emits before the object changes. However, by default, ObservableObjectautomatically synthesizes objectWillChange and emits before any @Publishedproperties change.// RoomStore.swift
import Foundation
class RoomStore: ObservableObject {
@Published var rooms: [Room] = []
}
struct Room: Identifiable {
var id: UUID
var name: String
var capacity: Int
var hasVideo: Bool
}
// ContentView.swift
import SwiftUI
struct ContentView: View {
@ObservedObject var store: RoomStore
var body: some View {
NavigationView {
List(store.rooms) { room in
RoomCell(room: room)
}
.navigationBarTitle("Rooms")
}
}
}
@ObjectBinding is replaced by @ObservedObject.
The Identifiable protocol is now part of the Swift standard library. As a result, your model files no longer need to import the SwiftUI framework. (SE-0261)
The EnvironmentValues structure has four new properties for reading accessibility values from the environment: accessibilityDifferentiateWithoutColor, accessibilityReduceTransparency, accessibilityReduceMotion, and accessibilityInvertColors. (51712481)
The BindableObject protocol’s requirement is now willChange instead ofdidChange, and should now be sent before the object changes rather than after it changes. This change allows for improved coalescing of change notifications. (51580731)
Added an initializer for creating a Font from a CTFont. (51849885)
You can style a NavigationView using two new style properties: StackNavigationViewStyle and DoubleColumnNavigationViewStyle. By default, navigation views on iPhone and Apple TV visually reflect a navigation stack, while on iPad and Mac, a split-view styled navigation view displays. (51636729)When using the DoubleColumnNavigationViewStyle style, you can provide two views when creating a navigation view — the first is the master and the second is the detail. For example:NavigationView {
MyMasterView()
MyDetailView()
}
.navigationViewStyle(DoubleColumnNavigationViewStyle())
Known Issues
Using Xcode 11 beta 4 with macOS Catalina beta 5 prevents previews from working. Update to Xcode 11 beta 5 to use previews. (52082331)
Using the Path structure may cause your app to crash if you’re using the SDKs included in Xcode 11 beta 5. (53523206)
Using a ForEach view with a complex expression in its closure can may result in compiler errors.Workaround: Extract those expressions into their own View types. (53325810)
Image instances don’t use resizing information configured in asset catalogs. Configure the size of an image using the resizable(capInsets:resizingMode:) modifier instead. (49114577)
Deprecations
The Command structure is replaced by passing selectors directly. (53187891)
The SelectionManager protocol is removed, use Optional and Set instances directly for selection. (51557694)
The isPresented environment value is deprecated and replaced with the more general presentationMode value. (51641238)
The StaticMember protocol is deprecated. Use protocol-conforming types directly instead. For example, use an instance of WheelPickerStyle directly rather than the wheel static member.(52911961)
SwiftUI APIs deprecated in previous betas are now removed. (52587863)
The identified(by:) method on the Collection protocol is deprecated in favor of dedicated init(_:id:selection:rowContent:) and init(_:id:content:)initializers. (52976883, 52029393)The retroactive conformance of Int to the Identifiable protocol is removed. Change any code that relies on this conformance to pass \.self to the id parameter of the relevant initializer. Constant ranges of Int continue to be accepted:List(0..<5) {
Text("Rooms")
}
However, you shouldn’t pass a range that changes at runtime. If you use a variable that changes at runtime to define the range, the list displays views according to the initial range and ignores any subsequent updates to the range.
Several extensions to the Binding structure are removed. (51624798)If you have code such as the following:struct LandmarkList: View {
var landmark: [Landmark]
@Binding var favorites: Set<Landmark>
var body: some View {
List(landmarks) { landmark in
Toggle(landmark.name, isOn: self.$favorites.contains(landmarkID))
}
}
}
Define the following subscript on the Set structure:extension Set {
subscript(member: Element) -> Bool {
get { contains(member) }
set {
if newValue {
insert(member)
} else {
remove(member)
}
}
}
}
Then, change self.$favorites.contains(landmarkID) toself.$favorites[landmarkID].
The Binding structure’s conditional conformance to the Collection protocol is removed. (51624798)If you have code such as the following:struct LandmarkList: View {
@Binding var landmark: [Landmark]
var body: some View {
List(landmarks) { landmark in
Toggle(landmark.value.name, isOn: landmark[\.isFavorite])
}
}
}
Define the following collection type:struct IndexedCollection<Base: RandomAccessCollection>: RandomAccessCollection {
typealias Index = Base.Index
typealias Element = (index: Index, element: Base.Element)
let base: Base
var startIndex: Index { base.startIndex }
var endIndex: Index { base.startIndex }
func index(after i: Index) -> Index {
base.index(after: i)
}
func index(before i: Index) -> Index {
base.index(before: i)
}
func index(_ i: Index, offsetBy distance: Int) -> Index {
base.index(i, offsetBy: distance)
}
subscript(position: Index) -> Element {
(index: position, element: base[position])
}
}
extension RandomAccessCollection {
func indexed() -> IndexedCollection<Self> {
IndexedCollection(base: self)
}
}
Then, update your code to:struct LandmarkList: View {
@Binding var landmarks: [Landmark]
var body: some View {
List(landmarks.indexed(), id: \.1.id) { (index, landmark) in
Toggle(landmark.name, isOn: self.$landmarks[index].isFavorite)
}
}
}
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)
No, we didn’t time travel 3 weeks into the past. A new version of macOS Mojave 10.14.5 (18F2059) was released yesterday.
Today for some reason and maybe for the first time, Apple released an update to a previous full installer release. The previous build version macOS 10.14.5 (18F2058) was released on July 9th and covered the new 2019 13″ MacBook Pro and 2019 MacBook Air. Apple released MacOS Mojave 10.14.6 (18G84) on July 22 and unified all builds. That means you can install 10.14.6 on any Mac.
I honestly have no clue! Again since 10.14.6 is a unified build we should have no need for a updated installer of a previous build. A user in MacAdmins Slack mentioned that this might be an update to 2058 for the factory restores. If that was the case why was it just now released and not 3 weeks ago? Or maybe this build version was for Internet recovery or something, again though this does not make any sense since agin 10.14.6 is unified.
Apple today pulled the 2019-004 Security Update after it was found to cause Kernel Panics when a Mac wakes from sleep.
First spotted on Apple Support Forums by user Fugge on July 10th, 2019. He installed the 2019-004 Security Update Developer Beta and started seeing Kernel Panics crashes after waking from sleep. A Kernel Panic will happen every single time the Mac wakes from sleep. The issue was then reported on July 24th by Howard Oakley
1. 2019-004 Security Update for High Sierra 10.13 & Sierra 10.12 Re Released 7/29!!!!
2. Mojave 10.14.6 Supplemental Update fixes an issue that may prevent certain Macs from waking from sleep properly.
3. 2019-004 High Sierra Update Removed from SUS
4. 2019-004 Sierra Security Update removed from SUS
5. T2 BridgeOS version 16.16.6568 also removed
6. Affected Mac Models
7. Check your DEP or Provision work flow. Software Update for 10.12 and 10.13 will not show previous Security Updates.
8. Problem: Kernel Panic after waking from sleep after closing the lid.
9. Fresh install of 10.13 + 2019-004 Security update on a 2018 T2 MacBook Pro does NOT crash!
10. Workaround? – “Prevent computer from sleeping when display is off” Or Reseting the SMC.
11.Reports are saying that the problem remains after reverting back
12. Is the problem actually in the T1/T2 Chip update?
13. This has happened before. It’s recommended that you wait a few days before you install any update.
1. UPDATE! 2019-004 Security Update for High Sierra & Sierra Re Released 7/29!!!!
Apple today at 12:05 CST re released the 2019-004 Security Update for High Sierra 10.13 and Sierra 10.12. A new BridgeOS and EFICheck AllowListAll update are also new. I will update when I have new build versions and new information.
The updated version of 2019-004 will now show up new for you in software update. Even if you installed the 2019-004 update before it was pulled, you will see the update show as NEW!
I already have one report from a user saying that the new update has cleared up the crash on sleep issue!
BridgeOS was re released but the BuildVersion remains the same at 16.16.6568 the updated files inside are dated 7/26
The Re Released 2019-004 Security Update for High Sierra 10.13 BuildVersion is now (17G8030)
The Re Released 2019-004 Security Update for Sierra 10.12 BuildVersion is now (16G2128)
Apple also rereleased the 10.14.6 Full Installer, Combo Update and Delta update. The new Build Version is (18G87).
3. 2019-004 High Sierra Update Removed from SUS
Apple has pulled the 2019-004 High Sierra update from the Software Update Service. It will not show up if you run softwareupdate -l or show up at the old address support.apple.com/kb/DL2012?viewlocale=en_US&locale=en_US. The download button still works when you go to Apple.com/downloads.
4. 2019-004 Sierra Update Removed from SUS.
Apple on late on Wednesday also removed the 2019-004 Sierra 10.12 Security Update. This update was removed hours after the 10.13 update was removed. The same problem must be in this update for Sierra Systems. Keep in mind only the 2016 and 2017 MacBook Pros can install Sierra 10.12.
5. BridgeOS version 16.16.6568 also removed.
If you downloaded the 2019-004 update before Apple removed it, you still would not be able to install it if you have a T2 equipped Mac. BridgeOS version 16.16.6568 with a Product ID of 041-51542 is now deprecated. When the Mac starts the installer the new BridgeOS is REQUIRED before the security update can install.
This also means you can not install the 10.13 or 10.12 2019-004 Security Update on T1/T2 Macs.
6. Check your DEP or Provision work flow. Software Update for 10.12 and 10.13 will not show previous Security Updates.
If you have a provisioning workflow where you rebuild Macs using DEP or some other type of system, you will be stuck on the current BuildVersion on the full installer BuildVersion. This means if you run a softwareupdate -iar command or have automatic updates set on, it will not receive any security updates until a fixed 2019-004 update is released.
7. Affected Mac Models
I am not totally sure the scope of this, as users have reported the issue mostly on MacBook Pro’s. Others reported this issue happening on iMacs.
I have confirmed the issue does not happen on at least one Non T1/T2 Mac. I was able to install 2019-004 on a 2017 MacBook Air and it did NOT Kernel Panic on sleep or wake.
8. Problem: Kernel Panic after waking from sleep after closing the lid.
One of the Kernel Panic Reports posted from the Apple Support Post. The issue happens after you close the lid or wake the Mac from Sleep.
*** Panic Report ***
panic(cpu 0 caller 0xffffff7f88668303): “Failed to quiesce supporting devices\n”@/BuildRoot/Library/Caches/com.apple.xbs/Sources/AppleACPIPlatform/AppleACPIPlatform-254.50.6/AppleACPIPlatformPower.cpp:1972
BSD process name corresponding to current thread: kernel_task
Mac OS version:
16G2127
Kernel version:
Darwin Kernel Version 16.7.0: Sun Jun 2 20:26:31 PDT 2019; root:xnu-3789.73.50~1/RELEASE_X86_64
Kernel UUID: 9778BC83-2647-3AE4-A7F2-8A2F41FA8791
ernel slide: 0x0000000005400000
rnel text base: 0xffffff8005600000
__HIB text base: 0xffffff8005500000
System model name: MacBookPro13,3 (Mac-…)
2019-004 kernel panic crashes
9. Fresh install of 10.13 + 2019-004 Security update does NOT crash on sleep!
I was able to update a 2018 T2 MacBook Pro with the 2019-004 update and BridgeOS 16.16.6568 and it does NOT crash on sleep wake. The issue is starting to look like a conflict with a Kernel Extension or piece of 3rd party software. A few of the Kernel Panic Reports were sort of pointing to Virtual box but that may be pushing it.
10. Workarounds? “Prevent computer from sleeping when display is off”& Resetting SMC
1. Try turning on “Prevent computer from sleeping when display is off” NOTE: This option is only available for when you are plugged into power. I am not sure what will happen when you are on battery power.
I was able to get the shutdowns to stop by disabling computer sleep when display is off. system preferences -> energy saver -> check “Prevent computer from sleeping when display is off”
Not a solution, but at least stops the annoying shutdowns until Apple can fix the issue.
2.Reset SMC (System Management Controller)NOTE: this only seems to help about 50% of the time. Resetting the SMC seems to work for some but not others.
I found a workaround that actually did the trick. SMC Reset, which for me was as simple as shutting down the device, unplugging the power, waiting 15 seconds, and plugging it back in. Directions called for me to wait 5 seconds before turning the power back on, but in my case it booted right up automatically after reconnecting the power cord. Specific instructions will vary depending on the device: https://support.apple.com/en-us/HT201295
3. Use Apple Menu > Sleep, instead of closing the lid.
I can put the display to sleep and leave the lid open without a problem. I recommend doing this if you are connected to power.
Garry144 – Apple Discussion Forum User
4. Wait until Apple Fixes the issue and then releases a new Updated Security Update.
5. Fresh reinstall of 10.13.6 and 2019-004 Security Update. NOTE: read section 8.
6. Upgrade to macOS Mojave 10.14
7. UPDATE 7/25: THIS DOES NOT FIX THE ISSUE!!!While the restore does work the system will still crash. Check to see if you tmutil created a time machine restore point in the Recovery Partition by running tmutil listlocalsnapshots /
You should see something like this
MacbookPro:~ User$ tmutil listlocalsnapshots /
com.apple.TimeMachine.2019-07-24-221041
If you have a snapshot listed you can boot to the Recovery Partition, click on Time Machine and if you have a localsnapshot listed it will look like this.
If you have successfully reverted back you can click about this Mac to verify you are on the old build version. You can also type in sw_vers in terminal to display the BuildVersion.
Now that we made it back to 17G7024 the question remains… Is the actual issue in the 2019-004 Security Update OR in the T1 EmbeddedOS or T2 BridgeOS? UPDATE: looks the the issue still remains. Continue reading below.
11. Reports are saying that the problem remains after reverting back to (17G7024)
A user in the Apple Discussion Forum was able to follow the above instructions and use the TM localsnapshot to revert back, but reported that he is still having the issue.
So, I reverted to the snapshot that was taken right before the update, but the problem still exists. I never saw this issue before installing the security update.
12. Is the problem actually in the T1/T2 Chip update?
This could very well mean that the problem is not inside the 2019-004 update code but in the T1/T2 chip update known as EmbeddedOS or BridgeOS. This would make sense since you can still install the 2019-004 update on a NON T1/T2 system and it’s fine. You can’t downgrade to a previous version of the T1/T2 Update. If this is the case you will have to wait until Apple releases the fixed 2019-004 update which includes a updated T1/T2 Update.
13. This has happened before. It’s recommended that you wait a few days before you install any update.
This is not the first time Apple has pulled an update. They pulled High Sierra and Sierra 2019-002 Security Update this past March. It’s a good idea to wait at least a few days before you update.
Today Apple released macOS Mojave 10.14.6 and Security Updates 2019-004 for High Sierra 10.13 and Sierra 10.12. If Apple’s previous update release history is any guide, 10.14.6 will be the final update for Mojave. Once macOS 10.15 Catalina is released in September, Mojave will be security patched for two more years. High Sierra will be supported for one year and Sierra will be dropped.
14 total Zoom Vulnerably / Exploit variants and a RCE Remote Code Execution found!
Just when you had enough of the first Zoom Vulnerably, Apple released MRTConfigData 1.46 (now 1.47!) to deal with 14 total variants and a Remote Code Execution (RCE) . I created this Index of MRT Links & Info to help you get through the confusion.
UPDATED: 07/18/19 – MRTConfigData 1.47 released and 3 more Zoom variants! Brings the total to 14.
MRT Malware Removal Tool Index
1. List of zoom opener variants and MRT versions
2. MRTConfigData Compatible OS versions.
3. Software Update & MRT Commands
4. Malware Removal Tool Documentation
5. Caveats of installing MRTConfigData and how the MRT scan works differently in 10.14 vs 10.13
6. Other ways to install MRT updates
7. Digging into the MRT Binary
8. More questions, Problems and Errors
9. Links to scripts and other MacAdmin articles
10. Disclaimer
1. List zoom opener variants and MRT Versions
How do we even know which variants are included in MRTConfigData v1.45 and v1.46? (Now 1.47!) The only way to find out is to dig into the MRT Binary Code. I talk about how I found the new variants a little more in section 7 below.
We now have 14 new Zoom Opener variants to worry about. Each one is a hidden folder listed in your user folder!
MRT Versions
1. MRTConfigData v1.45 – 7/10/19
2. MRTConfigData v1.46 – 7/16/19
3. MRTCOnfigData v1.47 -7/18/19
Zoom Variants
1. /.zoomus – 1.45
2. /.ringcentralopener – 1.46
3. /.telusmeetingsopener– 1.46
4. /.btcloudphonemeetingsopener– 1.46
5. /.officesuitehdmeetingopener– 1.46
6. /.attvideomeetingsopener– 1.46
7. /.bizconfopener– 1.46
8. /.huihuiopener – 1.46
9. /.umeetingopener– 1.46
10./.zhumuopener– 1.46
11./.zoomcnopener– 1.46
12./.earthlinkmeetingroomopener – 1.47
13./.videoconferenciatelmexopener – 1.47
14./.accessionmeetingopener – 1.47
2. MRTConfigData Compatible OS versions.
You can run the MRTConfigData update on the following macOS versions.
Mojave 10.14
High Sierra 10.13
Sierra 10.12
El Capitan 10.11 (Note: You can only usesoftwareupdate -ia --backgroundas the --include-config-dataoption was new in Sierra 10.12)
3. Software Update & MRT Commands
Let’s get right to it, here are the commands again if you want to remediate right now!
1. Check for config data updates:/usr/sbin/softwareupdate -l --include-config-data
2. Manual Install of MRT v1.47:/usr/sbin/softwareupdate -i MRTConfigData_10_14-1.47 --include-config-data
3. Verify Version of MRT:/usr/bin/defaults read /System/Library/CoreServices/MRT.app/Contents/Info.plist CFBundleShortVersionString
4. Force Run MRT.app in Agent mode:/System/Library/CoreServices/MRT.app/Contents/MacOS/MRT -a
If MRT finds Zoom the manual scan will look like this.
4. Malware Removal Tool Documentation
Apple has not documented how the MRT Scan works. The MRT Tool is called out with just a few lines in the macOS Security Overview for IT.
Apple refers to MRT updates as “Silent or Quiet Update” when referenced in the media. The MRT Binary doesn’t have a MAN page or a -help section. Targeted malware variants are not documented. Sounds like a job for #MacAdmins!!!
5. Caveats of installing MRTConfigData and how the MRT scan works differently in 10.14 vs 10.13
You need to know about a few caveats with this process. I have tested the installation and scan multiple times and found differences in each OS! Let’s start with Mojave 10.14 then move to High Sierra 10.13.
MRT in Mojave 10.14.5
When you manually install the MRTConfigData update the MRT.app will automatically run a MRT Scan!
You only have to worry about other users who may have installed any of the opener variants as the MRT Scan only runs for the logged in user only.
A restart and Logout/Login will kick off a manual MRT Scan.
You can run a script that Rich wrote that will remove zoom from all logged in users.
When you manually install the MRTConfigData update the MRT Scan will NOT run automatically!!!
You will need to run the MRT.app agent scan manually to remove any zoom variants.
TLDR: Installing MRTConfigData in 10.14 automatically kicks off the MRT.app scan, while in 10.13 the MRT scan does NOT run automatically.
H/T to @howardnoakley and @alvarnell for pointing out that after installing MRTConfigData the MRT Scan kicks off automatically. I did not know it at the time but they were testing in 10.14. All my testing was on 10.13, so thats why I was getting different results!
6. Other ways to install MRT updates
If you are on Mojave 10.14.5 you will automatically get the MRTConfigData update as long as you have the following SoftwareUpdate Settings set to ON.
As long as you have these settings set to ON your Mac should automatically check in for new updates and install them every 24 hours.
For the com.appleSoftwareUpdate.plist file you need the following settings set to ON.
If you want to install all background updates now without waiting you can issue the following command.
sudo softwareupdate --background --include-config – Only background updates
or
sudo softwareupdate -ia --include-config-data – Background updates AND OS level Updates
NOTE! The -ia option will install ALLavailable software updates including Combo, Safari and Security Updates.
The above commands will only install Xprotect updates if you have all the automatic software update settings set to ON.
7. Digging into the MRT Binary
Apple does not list the targeted malware variants anywhere, so the only way to find them is to dig into the MRT Binary Code. You cant just open the code inside MRT as it has thousands of lines of code. You have to first compare the current version to the old one. This will give you the first clues, as each piece of malware is given a code. In this case it was MACOS.354c063.
Now that we have the Malware Family ID we can then search the MRT Binary using a disassembler application. A disassembler like Hopper is used to view the actual code of the new MRT binary.
8. More questions, Problems and Errors
We still have questions about how the MRT works especially the MRT -d or daemon mode. I have even reached out to Apple for an answer on this.
Howard Oakley wrote a great article looking into this.
The Zoom Client before 4.4.53932.0709 on macOS allows RCE remote code execution – CVE-2019-13567
Apple.com – About background updates in macOS Mojave Your Mac automatically installs background updates for the security configuration and data files used by macOS. – support.apple.com/en-us/HT207005
Howard Oakley – twitter.com/howardnoakley – eclecticlight.co – Howard really dug into this when it first came out writing multiple articles on the zoom exploit. He also has multiple applications that he wrote that will help you, including one called SilentKnight that will tell you if all your XProtect definitions are up to date.
Rich Trouton – twitter.com/rtrouton – derflounder.wordpress.com – Rich has written the best script yet to remediate the Zoom venerability on all user accounts.
Macadmins.slack.com – You can also talk about the Zoom Vulnerability and join the #zoom channel or #security in MacAdmins Slack.
10. Disclaimer
I tried to test and research as much as possible to save you time. I hope this Index of MRT Links & Info helps you, but since this issue revolves around security please double check and test before you deploy. After deployment check again that the files inside the opener are in fact deleted.