Xcode Release Notes
Last updated: Apr 15, 2026
- April 2026
- No date parsed from source.
- First seen by Releasebot:Apr 15, 2026
Xcode 14.3 Release Notes
Xcode 14.3 adds Swift 5.8, new SDKs, and broader debugging support, while improving module verification, build reliability, SwiftUI previews, testing, source control, and Instruments. It also brings updated compiler features, package tooling, and fixes across the editor and distribution workflow.
Update your apps to use new features, and test your apps against API changes.
Overview
Xcode 14.3 includes Swift 5.8 and SDKs for iOS 16.4, iPadOS 16.4, tvOS 16.4, watchOS 9.4, and macOS Ventura 13.3. The Xcode 14.3 release supports on-device debugging in iOS 11 and later, tvOS 11 and later, and watchOS 4 and later. Xcode 14.3 requires a Mac running macOS Ventura 13.0 or later.
General
New Features
- Xcode 14.3 includes a new module verifier that generates diagnostics for issues in a framework’s modules. (97345247)
Resolved Issues
- Fixed: Crash logs from App Extensions and extension-based Watch apps weren’t being delivered to the Xcode Organizer. This issue is resolved in iOS 16.4, macOS 13.3, watchOS 9.4 and tvOS 16.4. (90882288)
- Fixed: You can now use Xcode’s documentation viewer to view Xcode documentation or view it on the web at https://developer.apple.com/documentation/Xcode. (102522035)
Deprecations
- Xcode isn’t supported under Rosetta. See Developer Technote “Resolving architecture build errors on Apple silicon“ for more information. (92772361)
Apple Clang Compiler
New Features
- Clang and the build system support a new mode for building module dependencies called explicit modules which improves build performance, reliability, and correctness. The new mode is opt-in, and can be enabled by setting _EXPERIMENTAL_CLANG_EXPLICIT_MODULES as a user-defined build setting in C and Objective-C projects which build with modules enabled. (104438594)
- The following C++23 features have been implemented:
- New support for multidimensional subscript operator. (P2128R6)
- Relaxed restrictions on the presence of non-literal variables (and labels and gotos) in constexpr functions (P2242R3).
- Introduce auto(x) for decay-copy in the language (P0849R8). (104887755)
- The -ffp-model=strict is fully supported for the ARM architecture. The generated code adheres to the IEEE-754 standard. Specifically, floating point exceptions and rounding modes are handled according to the standard. #pragma STDC FENV ACCESS is supported. By default, -ffp-contract=ON is set. This option enables shorter and faster floating-point code by fusing floating point operations like multiplies and adds, but it may impact the accuracy of numerically sensitive applications. (105573336)
Resolved Issues
- Fixed: The compiler no longer emits erroneous warnings for images included into Objective-C documentation comments using the tag. (91464292)
- Fixed: Standard C++ modules are disabled in ObjectiveC++ with the C++ language mode set to C++20. This doesn’t impact Clang modules. (104670658)
Build System
New Features
- Xcode now prompts a user prior to performing a clean action. This prompt can be bypassed by holding the option key while performing a clean, or by permanently hiding the prompt by enabling the “Don’t Ask Me” setting within the prompt. (98914489)
Resolved Issues
- Fixed: UI test targets no longer force SWIFT_SERIALIZE_DEBUGGING_OPTIONS to YES at build time, and respect that setting being overridden in the project. (94845934)
- Fixed: Run scripts in a scheme’s pre-actions and post-actions for the Build section now cause the build to fail if any run script exits with a non-zero exit code, instead of reporting a false-positive successful build. (102896200)
Known Issues
- Previews in packages can fail when previewing inside of a package that is both the dependent of a package and the dependency of a package when used by an app. (103716225)
Workaround: Create and select a scheme targeting just that package when using SwiftUI previews for a file in that package. - When a pre-build scheme action (such as compiling a package plugin) encounters an error, the status message at the top of Xcode’s workspace window sometimes doesn’t update. This leaves the previous status showing, possibly causing confusion if the previous status was “Build Succeeded.” (104306342)
- Previews in packages can fail when previewing inside of a package that is both the dependent of a package and the dependency of a package when used by an app. (104683595)
Workaround: Create and select a scheme targeting just that package when using SwiftUI previews for a file in that package.
C++ Standard Library
New Features
- The following new features have been implemented:
- P0896R4 - The One Ranges Proposal
- P1004R2 - Making std::vector constexpr
- P0627R6 - Function to mark unreachable code
- P1165R1 - Make stateful allocator propagation more consistent for operator+(basic_string)
- P0674R1 - Support arrays in make_shared and allocate_shared
- P0980R1 - Making std::string constexpr
- LWG3659 - Consider ATOMIC_FLAG_INIT undeprecation
- P1423R3 - char8_t backward compatibility remediation
- std::pop_heap now uses an algorithm known as “bottom-up heapsort” or “heapsort with bounce” to reduce the number of comparisons, and rearranges elements using move-assignment instead of std::swap.
- std::boyer_moore_searcher and std::boyer_moore_horspool_searcher have been implemented. (104702784)
Deprecations
- The following items have been deprecated:
- The <experimental/filesystem> header has been removed. Instead, use the header. The associated macro _LIBCPP_DEPRECATED_EXPERIMENTAL_FILESYSTEM has been removed too.
- The C++14 function std::quoted(const char*) is no longer supported in C++03 or C++11 modes.
- std::function has been removed in C++03. If you are using it, please remove usages or upgrade to C++11 or later.
- std::unary_function and std::binary_function are no longer available in C++17 and C++20. They can be re-enabled by defining _LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION. They are also marked as [[deprecated]] in C++11 and later. To disable deprecation warnings you have to define _LIBCPP_DISABLE_DEPRECATION_WARNINGS. Note that this disables all deprecation warnings.
- The contents of , std::wstring_convert and std::wbuffer_convert have been marked as deprecated. To disable deprecation warnings you have to define _LIBCPP_DISABLE_DEPRECATION_WARNINGS. Note that this disables all deprecation warnings.
- The integer distributions std::binomial_distribution, std::discrete_distribution, std::geometric_distribution, std::negative_binomial_distribution, std::poisson_distribution, and std::uniform_int_distribution now conform to the Standard by rejecting template parameter types other than short, int, long, long long, and the unsigned versions thereof. As an extension, int8_t, __int128_t and their unsigned versions are supported too. In particular, instantiating these distributions with non-integer types like bool and char won’t compile anymore. (105097623)
Debugging
Resolved Issues
- Fixed: When stopped in a C++11 lambda body in an enclosing class method, LLDB now supports evaluating expressions containing members of the captured ‘this’ pointer. (50140179)
- Fixed: LLDB is now more resilient against Swift module deserialization failures that previously would have ended the the debug session. (64511878)
Documentation
New Features
- The documentation toolchain for Objective-C has migrated to the open-source Clang extract-api tool. (101761719)
DriverKit
New Features
- Clang now automatically initializes uninitialized local variables on the stack to zero for DriverKit extensions. (99166509)
Instruments
New Features
- When attempting to launch an application using Instruments on a locked target device, Instruments now prompts the user and waits for the unlock to happen instead of presenting an error. (41464216)
- xctrace export now supports requesting binary image load information for processes in a trace file. Each image includes a path, UUID, name, load address and architecture. (76676504)
- Stores Inspector located in the Instruments Inspector now allows for copying example xctrace export command after invoking the shortcut menu on a listed store. (89078433)
- xctrace export now includes parsable description of backtraces recorded in an Instruments trace. Each frame inside the backtrace includes a VM address and a symbol name (if present). (95850764)
- The “File → Symbols” UI has been updated to make symbolication workflows more streamlined:
- Better display/filtering of process and image lists
- More information about each loaded image, including UUIS, version, load address and load time.
- Easier resymbolication with an ‘Add Symbols’ button, allowing selection of multiple dSYMs at once. (97920704)
- Heaviest Stack Trace UI in the Extended Detail now allows for copying mangled names of symbols using shortcut menu. (98017107)
- Graph and Detail elements specified in the Instruments Package can now be disabled based on the value of a trace parameter. (101357705)
- The Heaviest Stack Trace UI has a new contextual menu for showing frames as a load address and binary offset. (102116922)
- os-signpost-interval-schema now exposes a way to bind a CLIPS variable to a duration field of a signpost interval and use it as part of other column definitions. (102447071)
Resolved Issues
- Fixed: Instruments’ launch time performance is now improved. Launching the application should be up to 3 times faster. (12219587)
- Fixed: Selecting ‘Open in Xcode’ from an Instruments Source Viewer now opens the selected file in an existing workspace. (76846286)
- Fixed: ‘Open in Xcode’ action of a Source Viewer now preserves line and text range selection when transitioning between Instruments and Xcode. (91005085)
- Fixed: Improved reliability of interaction with the find field when invoked on the detail view. (94526531)
- Fixed an issue where entering multiple filter tokens in a Call Tree view and selecting ‘All’ matching would still result in matching any of the specified tokens. (97454950)
- Fixed an issue where scrolling horizontally in a Call Tree view using trackpad wasn’t possible. (97752177)
- Fixed: Source View now automatically opens Disassembly View when no source code is available for a selected symbol. (99206757)
- Fixed: Performance of adding a new Instrument from the library to an existing trace document has been significantly improved. (100873173)
- Fixed an issue in the CPU Counters Instrument where RETIRE_UOP events wouldn’t be counted on Apple Silicon machines. (101330117)
Interface Builder
New Features
- The “Introduced Variations Based On:” inspector popup will now remember the last picked size class and variation settings. (98647372)
- The enabled property is configurable on UISearchBar through the attribute inspector. (101423711)
Resolved Issues
- Fixed: The Line Break Strategy can now be configured on a NS/UITextView paragraph style popup inspector and UILabel’s attributes inspector. (70369164)
- Fixed: The SF Symbol library search results have improved to include search terms besides the name of the symbol. For example, searching for “writing” will also show related “pencil” SF symbols. (94857888)
- Fixed an issue that prevented the Reveal in Editor button, in the custom class inspector, from revealing the class in the source code editor. (100136260)
- Fixed an issue that prevented XIBs containing only User Defined Runtime Attributes from loading at runtime. (100357502)
- Fixed: Xcodebuild supports a -downloadPlatform <watchOS|tvOS> argument to request downloading a single platform. (100869261)
- Fixed: Safe Area dimensions in landscape mode are now positioned correctly in the canvas. (101164646)
- Fixed an issue where frames sometimes shift when a storyboard is opened. (102221237)
- Fixed an issue with the resizing cursor not showing when attempting to resize a NSViewController. (102609072)
Localization
New Features
- You can now specify the default localization of an Xcode project. Configure it from the language list in the project editor’s Info tab. (4886288)
Resolved Issues
- Fixed an issue when exporting a project for localization, where referenced projects might not be exported. (91126400)
Playgrounds
Known Issues
- Manual execution mode for Xcode Playgrounds may fail. (104976410)
Signing and Distribution
Resolved Issues
- Fixed: Xcode automatic signing now creates managed provisioning profiles for Developer ID. This resolves an issue that caused Xcode to throw an error when cloud signing with a Developer ID certificate during the app distribution workflow. (90026719)
- Fixed: Resolved an issue when distributing apps that use Game Center. If necessary, Xcode automatic signing can now enable the Game Center feature on your app ID during distribution. (103426363)
Simulator
Resolved Issues
- Fixed: When simulating a user gesture in the iOS simulator, loading a WebView may cause a black box to appear on the entire screen. (107143140)
Known Issues
- Repeated Build & Run targeting iOS 16.1 and later simulator runtimes may sometimes result in a hung launch. (101990080)
Workaround: Reboot the simulator device and reattempt the launch.
Source Control
Resolved Issues
- Fixed: Xcode’s Git integration now supports mailmap. Users who have changed their names or email addresses can set up a .mailmap file in their repository and Xcode now displays the correct canonical name on commits and branch history. (62682973)
- Fixed: Re-added support for perl compatible regular expressions to git grep. (101318680)
- Fixed: Addressed security vulnerabilities CVE-2022-23521 and CVE-2022-41903. (102376850)
Known Issues
- The branch history view may display an incomplete branch history in rare cases. (96024292)
Workaround: Select a different branch, then, once again, select the desired branch.
Source Editor
New Features
- Improved code completion ranking for Swift. (98687334)
StoreKit
New Features
- The Store Kit Test framework now supports testing SKAdNetwork 4.0. (91782868)
Swift
New Features
- The @backDeployed(before:) attribute may now be used to extend the availability of a function to OS releases prior to the introduction of that function as ABI. For example, suppose that struct Temperature was introduced in a macOS SDK framework in macOS 12. Later in macOS 13 the framework authors decided to add a degreesFahrenheit property as a convenience:
@available(macOS 12, *) public struct Temperature { public var degreesCelsius: Double // ... } extension Temperature { @available(macOS 12, *) @backDeployed(before: macOS 13) public var degreesFahrenheit: Double { return (degreesCelsius * 9 / 5) + 32 } }Adding the @backDeployed attribute to degreesFahrenheit enables the framework author to make this new declaration available to apps with a minimum deployment target of macOS 12, even though the ABI entry point for degreesFahrenheit is only present in macOS 13 and up. When a function with @backDeployed is called, the compiler wraps the invocation of the function in a thunk. The thunk checks whether the library entry point for the declaration is available at runtime, and invokes it if it is. Otherwise, a copy of the function that was emitted into the client is called instead. SE-0376 (105198323)
- Сollection downcasts in cast patterns are now supported. For example:
func collectionDowncast(_ arr: [Any]) { switch arr { case let ints as [Int]: // ... case is [Bool]: // ... } }(105198506)
- The API of UnsafeMutableRawPointer, UnsafeMutableBufferPointer, UnsafeMutableRawBufferPointer were improved, adding previously missing initialization (and deinitialization) methods, including more performant initialization from Collection types. For UnsafeMutablePointer and UnsafeMutableBufferPointer, method names containing the word “assign” were renamed to use the word “update”, and many more were added. Every multi-element initialization method of UnsafeMutablePointer and UnsafeMutableBufferPointer now has a corresponding “update” method. Slices of UnsafeBufferPointer, UnsafeRawBufferPointer, UnsafeMutableBufferPointer and UnsafeMutableRawBufferPointer now share the collection-like API of their base type. For example, given an initialized b: UnsafeMutableBufferPointer, the following lines are synonymous:
b.update(repeating: 0) b[b.startIndex..<b.endIndex].update(repeating: 0)SE-0370 (105198642)
- Implicit self is now permitted for weak self captures, after self is unwrapped. For example, the usage of implicit self below is permitted:
class ViewController { let button: Button func setup() { button.tapHandler = { [weak self] in guard let self else { return } dismiss() // refers to `self.dismiss()` } } func dismiss() { ... } }In Swift 5 language modes, implicit self is permitted for weak self captures in non-escaping closures even before self is unwrapped. For example, this code compiles successfully in Swift 5 language mode:
class ExampleClass { func makeArray() -> [String] { // `Array.map` takes a non-escaping closure: ["foo", "bar", "baaz"].map { [weak self] string in double(string) // implicitly refers to `self!.double(string)` } } func double(_ string: String) -> String { string + string } }In Swift 6, the above code will no longer compile. weak self captures in non-escaping closures now have the same behavior as captures in escaping closures (as described in SE-0365). Code relying on the previous behavior will need to be updated to either unwrap self (e.g. by adding a guard let self else return statement), or to use a different capture method (e.g. using [self] or [unowned self] instead of [weak self]). SE-0365 (105198849)
- The compiler flag -enable-upcoming-feature X can now be used to enable a specific feature X that has been accepted by the evolution process, but whose introduction into the language is waiting for the next major version (e.g., version 6). The X is specified by any proposal that falls into this category:
- Concise Magic File enables the new #file semantics in SE-0274.
- Forward Trailing Closures disables the “backward” scanning behavior of SE-0286.
- Bare Slash Regex Literals enables the regex literal syntax of SE-0354.
Features can be detected in source code with #if hasFeature(X). SE-0362 (105198978)
Resolved Issues
- Fixed an occasional crash when suspending at an await in apps using Swift concurrency running on macOS 12.3 and earlier, on iOS 15.4 and earlier, watchOS 8.5 and earlier, and tvOS 15.4 and earlier. (101299662)
- Fixed: The Swift compiler may fail to build modules for XCFramework dependencies that were built with BUILD_LIBRARY_FOR_DISTRIBUTION enabled. These failures will occur when the XCFramework contains public Swift declarations that have @MainActor constraints implicitly added, such as subclasses of UIView or NSView. The Swift compiler expects those declarations to be marked @available for an operating system version where Swift concurrency is available. (105610970)
Swift Packages
New Features
- A proper diagnostic is shown instead of an ambiguous error when a tool needed by a plugin isn’t supported on the target platform. (91000836)
- Packages with duplicate product names are now allowed. Note this only applies to the command-line builds. (94744134)
- Implemented SE-0378, which adds support for token authentication for package registry requests. (99716571)
- Binary targets can now directly be vended as products without requiring the declaration of an additional source target. (101096803)
- SwiftPM now supports piecemeal adoption of upcoming Swift language improvements per SE-0362. (104718540)
Resolved Issues
- Fixed: Conditional target dependencies (SE-0273) in packages are now correctly applied to binary targets and leads to top-level targets being filtered out from builds of root packages. (85762201)
- Fixed: Removed implicit availability of Foundation from package manifests using tools-version 5.8 or later. An explicit import of Foundation is now required if APIs from Foundation are used in a manifest. (92879696)
- Fixed: When a pre-build command depends on tools that aren’t prebuilt binaries, it showed an ambiguous error message. The fix was added to show proper diagnostics. (94712361)
- Fixed: A proper diagnostic is shown instead of an ambiguous error when a plugin has a dependency on non-supported products or targets. (95117424)
- Fixed: Resolved an error that sometimes caused package resolution to fail with a message similar to: An unknown error occurred. reference 'refs/remotes/origin/main' not found (-1). (100387832)
- Fixed: When package graph resolution fails, Xcode now shows a build failure rather than letting the build start and then fail with errors about missing build products. (101835157)
- Fixed: Warnings and errors associated with packages are now shown under the packages to which they apply in the package resolution log. (102879707)
- Fixed multiple bugs that could cause a “Unable to resolve build file: XCBCore.BuildFile” build error when using packages. (102912126)
Known Issues
- When a package build tool plugin generates a build command for a particular input file, that file is considered to have been handled by the plugin and isn’t passed to the build system. If the input file is a source code file (such as a Swift or Objective-C source file), it won’t be compiled into the product being built. (102789077)
SwiftUI Previews
New Features
- print output now appears in the console for SwiftUI Previews by selecting “Preview” tab in the console. Currently output is limited to Swift’s print function. (96569171)
Resolved Issues
- Fixed: Previews can fail when previewing a file inside of a Swift package target that is the dependency of an executable target. (97630721)
- Fixed: Previews may fail in the Xcode canvas when previewing two files side-by-side when only one of them is in a Swift Package. (99296071)
- Fixed: Previews can fail when previewing inside of a target that is the dependency of a target where previewing is not supported such as an XPC service or static library. (99707713)
- Fixed: Previews could fail in Swift Packages with binary dependencies. (99936678)
- Fixed: Previews can fail when using Swift Concurrency in an app with a minimum deployment target of <= iOS 14.0. (99969698)
- Fixed: Some kinds of crashes of previews don’t appear in the canvas. (100586176)
- Fixed: Previewing files that exist both in a widget target and an application target can fail. (101221314)
- Fixed: Previews can fail when using opaque types as the generic parameter of another type in the return type of body. (101832285)
- Fixed: Previews can fail when previewing inside of apps that have an app identifier that differs from the bundle identifier. (102753115)
Testing
New Features
- Xcode now defaults to using a test plan for new projects. The test plan is marked as “Auto-created” and can be viewed and modified in the Test Plan Editor. To change an Auto-created Test Plan, a user will need to first save it to disk. This can be done by making a change in the Test Plan Editor, and then migrating the file to an on-disk representation with the on-screen prompts, or by explicitly saving the Auto-created Test Plan from within the Test Plan Editor. (97048381)
- The timeout argument of XCTestCase.wait(for: timeout: enforceOrder:) and related methods is now optional—if you don’t specify it, the function waits indefinitely (until the overall test times out.) To ensure reasonable execution time, set an appropriate value for the execution Time Allowance property of the running XCTestCase instance (self). (100811826)
Resolved Issues
- Fixed: Errors thrown by async Swift test methods, as well as async setUp or tearDown methods, now show the source location where they were thrown when symbol information is present, and include a higher-fidelity description. (72813349)
- Fixed: If test timeouts are enabled in the test plan and a test observer is registered with the shared XCTestObservationCenter, the observer’s -testCaseWillStart: and -testCaseDidFinish: methods now count towards each test’s time allowance. This allows the harness to prevent hangs that could occur in the observer’s implementation of these methods. (78408785)
- Fixed: XCTestCase.wait(for: timeout: enforceOrder:) and related methods are now marked unavailable in concurrent Swift functions because they can cause a test to deadlock. Instead, you can use the new concurrency-safe XCTestCase.fulfillment(of: timeout: enforceOrder:) method. (91453026)
- Fixed: A test plan’s “Collect Diagnostics on Failure” setting now takes effect when tests are built using xcodebuild build-for-testing and run with xcodebuild test-without-building. (93053592)
- Fixed: Issues recorded in a later setUp or tearDown after an earlier setUp or tearDown used XCTSkip will no longer mark the test a failure. (93536791)
- Fixed: When an error is thrown during the execution of an async Swift test method or an async setUp or tearDown method, but is caught before returning from that method, XCTest avoids constructing a description of the error since doing so may be unsafe. (98847718)
- Fixed: Test targets contained in a test plan whose configurations have different sanitizers enabled (e.g. Address Sanitizer is enabled in one configuration, and Thread Sanitizer is enabled in another configuration) can now execute in parallel on macOS destinations (if the targets’ ‘Execute in Parallel’ checkboxes are checked). (99448030)
- Fixed: Result bundles downloaded from Xcode Cloud can now be linked back to their corresponding builds in the Xcode Test Report. Users on Xcode 14.3 and later should be able to navigate to the build by right-clicking on the result bundle in the navigation panel and using the “Open in Xcode Cloud” option. (100152213)
- Fixed: A number of Swift code coverage bugs have been fixed. Most notably, code coverage should now correctly work in -O builds. (100327359)
- Fixed: XCTKeyPathExpectation now emits a warning when an asynchronous predicate function is used with a non-Sendable observed object. (102092338)
Known Issues
- When attempting to launch an application in a watchOS UI test under Xcode Cloud, the test may fail with an error message that the application has not loaded accessibility. (90334748)
- Adding an auto-created test plan as part of a Run, Profile, Analyze, or Archive action leads to a crash when the project file is re-opened. (90378346)
Workaround: Delete the scheme that was modified within the xcshareddata directory. - Swift files aren’t displaying code coverage data after running tests in the coverage report. (104935416)
- Manually adding, then removing a test plan, to a project that has an auto-created test plan causes the Test Navigator to display “No Test Plan” even though an auto-created test plan is actually backing the project. (105433014)
Workaround: Close and re-open the project. - Sometimes adding a test plan to a scheme results in the test plan not being listed within the scheme or test navigator on a subsequent project opening. (105455341)
Workaround: Open and close the Scheme Editor to cause Xcode to persist changes to the Scheme’s contents to the .xcscheme file backing it.
UI Testing
New Features
- You can now set a simulated location for your device to use in real time, or retrieve the simulated location that was previously set. (18825683)
- You can now open a URL using a specified application, or tell the device to open a URL using the default application for it. (21387710)
- You can now get or set the light or dark appearance mode of your device. (81016755)
Resolved Issues
- Fixed: Ensured orientation lock is disabled if the user requests the orientation to change during a UI test. (98693525)
- Fixed: Improvements have been made in auto-dismissal of single-button alerts. (102036701)
Xcode Cloud
Resolved Issues
- Fixed: Xcode Cloud workflows using Xcode 14.3 now correctly report build warnings and static analyzer issues encountered while building Xcode projects. (99978366)
Known Issues
- Connecting Slack may not complete successfully when using Xcode’s UI to connect. (106153362)
Workaround: Connect Slack from Xcode Cloud’s web UI.
Xcode Previews
New Features
- When using Xcode Previews, any print() output will be logged to the debug console. (71080261)
- April 2026
- No date parsed from source.
- First seen by Releasebot:Apr 15, 2026
Xcode 14.3.1 Release Notes
Xcode 14.3.1 ships Swift 5.8.1 and updated SDKs for iOS, iPadOS, tvOS, watchOS, and macOS Ventura, while improving on-device debugging support and fixing crashes, playground issues, asset catalog problems, Swift concurrency bugs, and package plugin commands.
Overview
Xcode 14.3.1 includes Swift 5.8.1 and SDKs for iOS 16.4, iPadOS 16.4, tvOS 16.4, watchOS 9.4, and macOS Ventura 13.3. The Xcode 14.3.1 release supports on-device debugging in iOS 11 and later, tvOS 11 and later, and watchOS 4 and later. Xcode 14.3.1 requires a Mac running macOS Ventura 13.0 or later.
General
Resolved Issues
- Fixed: When targeting devices running iOS 13, apps built with Xcode 14.3 and using Objective-C protocols from Swift, sometimes crash at launch. (108930834)
Asset Catalogs
Resolved Issues
- Fixed: iOS app icons, including alternate app icons, weren’t correctly populating Info.plist entries for iPad. This made alternate app icons specified using Single Size erroneously unavailable on iPad at runtime. (108955499)
Playgrounds
Resolved Issues
- Fixed: Playground live views weren’t updating correctly after making changes to the Playground code. (108413386)
- Fixed: Xcode could crash on macOS 13.3 when adding a new page to a playground. (108952884)
Swift
Resolved Issues
- Fixed: Applications using Swift Concurrency could crash when run on a specific OS version:
- macOS 12.0 up to (but not including) macOS 12.1
- iOS 15.0 up to (but not including) iOS 15.2
- tvOS 15.0 up to (but not including) tvOS 15.2
- watchOS 8.0 up to (but not including) watchOS 8.3
Earlier and later OS versions weren’t affected. (108837762)
Swift Packages
Resolved Issues
- Fixed: Custom commands implemented by package plugins aren’t being shown in the context menu for Xcode projects. (108953641)
All of your release notes in one feed
Join Releasebot and get updates from Apple and hundreds of other software products.
- April 2026
- No date parsed from source.
- First seen by Releasebot:Apr 15, 2026
Xcode 15 Release Notes
Xcode releases a major update with SDKs for iOS 17, iPadOS 17, tvOS 17, watchOS 10, and macOS Sonoma, plus faster builds, richer previews, new String Catalogs, improved source control, stronger debugging, and expanded Swift and C++ tooling.
Overview
Xcode 15 includes SDKs for iOS 17, iPadOS 17, tvOS 17, watchOS 10, and macOS Sonoma. The Xcode 15 release supports on-device debugging in iOS 12 and later, tvOS 12 and later, and watchOS 4 and later. Xcode 15 requires a Mac running macOS Ventura 13.5 or later.General
New Features
• When a structured text-based file such as a property list or storyboard fails to open due to a merge conflict, Xcode will offer to open the file as text. (9148845)
• The “View by Time” / “View by Group” selector in the Report navigator has moved into the navigator’s action menu. (73892015)
• The build log reports now show their sections in the jump bar, allowing for quicker navigation and showing the location of the current selection. (90320021)
• The xed tool has been rewritten for performance and reliability. Invoke it from the command line to edit an existing or new file in Xcode, optionally opening to a given line number, and waiting for the file to close. (105476406)
• The Find navigator now offers additional symbolic queries that act on types, such as Find Ancestor Types and Find Conforming Types. These find operations replace the functionality of the Symbol navigator, and provide a stable set of results that change only when the query is re-executed. (105622182)
• Xcode 15 validates the signing identity of XCFrameworks that are used in your project. The signature information for an XCFramework is displayed in the File inspector, and the last known identity is saved in the project file. During a build, the signature of XCFrameworks are validated and the signing identity is compared to the expected identity in the project file. (106036191)
• The new “Quick Actions” panel provides keyboard access to perform commands across Xcode. (108024215)Resolved Issues
• Fixed: macOS Previews can now be interacted with directly in the canvas. You can press and hold the Live preview mode button to switch between previewing in Xcode and previewing in the app-under-preview. (49271058)
• Fixed: For apps linked on or after iOS 17 and aligned OS versions, URL parsing has updated from the obsolete RFC 1738/1808 parsing to the same RFC 3986 parsing as URLComponents. This unifies the parsing behaviors of the URL and URLComponents APIs. Now, URL automatically percent- or IDNA-encodes invalid characters to help create a valid URL.
To check if a url String is strictly valid according to the RFC, use the new URL(string: urlString, encodingInvalidCharacters: false) initializer. This init leaves all characters as they are and will return nil if urlString is explicitly invalid. (93368104)
• Fixed: TypeScript (.ts) files are directly editable in Xcode. (93525048) (FB10021626)
• Fixed: Swift function declarations across multiple lines are now more reliably pinned by Xcode’s “Show Code Structure While Scrolling” feature. (94476783) (FB10047088)
• Fixed notifications not displaying for build and test status if the actions complete when Xcode is not the frontmost application. (105997391)
• Fixed: Console, Safari, and Accessibility Inspector are unable to wirelessly connect to devices running iOS and tvOS 16.4 and 16.5. (108032308)
• Fixed: Offline compilation targeting AMD hardware and macOS Ventura isn’t available using Xcode 15. (108372489)
• Fixed: Xcode Organizer window TestFlight Internal Only distribution support isn’t currently available. (111340185)Known Issues
• Devices running iOS 17 may prompt the user twice in rapid succession to trust a Mac when connected to the Mac with a USB cable. The second prompt for trust may obscure the first prompt and prevent the user from entering the passcode. (109539668)
Workaround: To configure the iOS device to trust the Mac, tap “Trust” and enter the device passcode on any passcode screen that isn’t occluded. Disconnect and reconnect the iOS device to the Mac. The iOS device may prompt once more to trust the Mac. To accept, tap “Trust” and enter the device passcode.
• Executing Unit/UI tests from Xcode on the iOS Simulator takes an extended time to launch on first run of the suite. (115187363) (110330776) (FB12237092)
• Xcode 15 may not be able to communicate with devices running iOS 17+ and tvOS 17+, and Apple Watch devices paired to an iPhone running iOS 17+ with certain VPNs active. (110337781) (FB12243540)
Workaround: Disable the VPN to interact with the device and reach out to the VPN vendor for resolution.
• On macOS Sonoma, when attempting to automatically install command line tools (such as after running xcode-select --install), you may receive an error that they aren’t currently available. (110346766)
Workaround: Install Command Line Tools manually or run the following commands in Terminal:
sudo mkdir -p /Library/Developer/CommandLineTools
sudo touch /Library/Developer/CommandLineTools/.beta
and try again.
• Swift macro definitions from the macOS/iOS/tvOS/watchOS SDKs are not available in Swift Playgrounds. (112122752) (FB12581131)
• The simulator may crash when opening Settings or Action Button settings on iPhone 15 Pro devices. (115388496)App Intents
Resolved Issues
• Fixed: Apps that implement App Intents may fail to compile with watchOS SDK if an App Entity with Entity Query is present. (111455662)App Shortcuts Preview
Known Issues
• If an app adds a new App Shortcuts trigger phrase string that already exists in an accompanying App Shortcuts .strings or App Shortcuts .xcstrings file, the App Shortcuts Preview may not refresh upon rebuild. (109494636)
Workaround: Cleaning prior to rebuilding the app causes App Shortcuts Preview to be in its most up-to-date state.Apple Clang Compiler
New Features
• There is a new reference page for C++ support on Apple platforms: https://developer.apple.com/xcode/cpp/. (100245338) (FB11563150)
• Clang and the build system support a new mode for building module dependencies called explicit modules which improves build performance, reliability, and correctness. The new mode is opt-in, and can be enabled by setting _EXPERIMENTAL_CLANG_EXPLICIT_MODULES as a user-defined build setting in C and Objective-C projects which build with modules enabled. (104438594)
• Wide multi-characters literals such as L’ab’ that would previously be interpreted as L’b’ are now ill-formed in all language modes in C and C++. The motivation for this change is outlined in character literals P2362.
The following C++20 language features have been implemented:
◦ Immediate functions [consteval] is fully implemented. (P1073R3)
The following C++23 language features have been implemented:
◦ De-deprecating volatile compound operations. (P2327R1)
◦ Support for #warning. (P2437R1)
◦ Delimited escape sequences. (P2290R3)
◦ Named universal character escapes. (P2071R2)
◦ Support for UTF-8 as a portable source file encoding. (P2295R6)
◦ Relax requirements on wchar_t to match existing practices. (P2460R2) (108334479)Resolved Issues
• Fixed: Improvements in the ARC optimizer allow Objective-C and Swift objects to be released earlier. This causes code to misbehave or crash when it relies on weak or unowned references to remain valid without a strong reference to the target object. For example this can happen inadvertently in code that unnecessarily uses a “weak self” capture in a one-shot asynchronous block callback. (108386578)
• Fixed: The x86 vectorizer uses saturated arithmetic instructions that can result in shorter and faster code. This may change program behavior for applications that implicitly rely on overflow behavior, e.g., by casting floating point values to integer types that can’t represent the original value. (108386879)Asset Catalogs
New Features
• Xcode now generates Swift and Objective-C symbols for each color and image in the asset catalog. These symbols provide a safer, more assistive way to reference assets that’s resilient to renames & typos, leverages compiler type checking, and integrates with code completion.
Swift asset symbols are generated in the module associated with a given asset catalog. They’re generated as static properties on the new Color Resource and Image Resource types. To instantiate colors and images with asset symbols, use the SwiftUI, UIKit, and AppKit initializers that take the resource types. For example:
Given an asset catalog with a color “spaceGray” and image “appleLogo,” instantiate the color symbol Color Resource .spaceGray with Color(.spaceGray), UIColor(resource: .spaceGray), and NSColor(resource: .spaceGray), and the image symbol Image Resource .appleLogo with Image(.appleLogo), UIImage(resource: .appleLogo), and NSImage(resource: .appleLogo).
With the opt-in build setting “Generate Swift Asset Symbol Extensions” (ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS) set to YES, asset catalog colors and images can be accessed directly on system color and image types, e.g. Color.spaceGray, UIColor.spaceGray, NSColor.spaceGray, UIImage.appleLogo, and NSImage.appleLogo.
Objective-C asset symbols are provided as string constants and can be accessed by importing the “GeneratedAssetSymbols.h” header.
Asset symbol generation is enabled by default but can be disabled by setting the build setting “Generate Asset Symbols” (ASSETCATALOG_COMPILER_GENERATE_ASSET_SYMBOLS) to NO.
Symbols support is generated for SwiftUI, UIKit, and AppKit by default. This can be customized if required by setting the build setting “Generate Swift Asset Symbol Framework Support” (ASSETCATALOG_COMPILER_GENERATE_ASSET_SYMBOL_FRAMEWORKS) to a smaller set of frameworks, e.g. “UIKit AppKit” or “AppKit.” (14758734)
• Asset Catalog automatically infers a single scale slot when adding PDF images. (32661471) (FB5752517)
• Asset catalog color inspectors remember the last used color configuration when creating new colors. (48965482) (FB5697990)Resolved Issues
• Fixed: Jump-to-definition on an asset symbol now jumps to the asset in the catalog. (102385742)
• Fixed: The “Add New Asset” menu now has a “Folder with Namespace” item for creating new folders with namespaces. (108468310)
• Fixed: Asset symbols are now generated for assets in Swift packages. (110083791)Build System
New Features
• Archive builds now support the same set of eager compilation optimizations as other build actions, improving build performance. (98526053)
• Xcode now automatically generates intermediate text-based dynamic library (TBD) files for dynamic libraries and frameworks in your project. These stubs allow linker dependencies to be tracked more accurately, meaning changes which don’t change the set of exported symbols no longer require all transitive dependencies to relink, speeding up incremental builds. (99972271)
• Xcode now supports building and consuming macros defined in Swift Packages. (101818756)
• XCFrameworks can be created from mergeable libraries and frameworks and will be merged or have mergeable metadata removed as appropriate when they are used. See the documentation Configuring your project to use mergeable libraries. (109124251)Resolved Issues
• Fixed: Embedding a static framework using a Copy Files build phase now removes the static archive from the framework when it is embedded in the target bundle. The REMOVE_STATIC_EXECUTABLES_FROM_EMBEDDED_BUNDLES build setting can be set to NO to opt out of this behavior. The COPY_RESOURCES_FROM_STATIC_FRAMEWORKS build setting, previously used in the legacy build system to extract and copy the resources from a static framework to the target bundle, no longer has any effect with the new build system as the entire framework is copied instead (minus the static archive as described above). (47164939)
• Fixed: Xcode now tracks dependencies on additional files specified by various linker flags specified in the OTHER_LDFLAGS build setting.
In some cases this may require build setting flags to be adjusted to become SDK-relative.
For example, instead of:
OTHER_LDFLAGS = $(inherited) -weak_library /usr/lib/swift/libswiftAppleArchive.dylib
You must use:
OTHER_LDFLAGS = $(inherited) -weak_library $(SDKROOT)/usr/lib/swift/libswiftAppleArchive.tbd
In other cases where the files referenced by linker flags may be produced by another build task, such as a build rule or shell script build phase, ensure that the file is explicitly listed as an output file of that build rule or shell script build phase. (92049062)
• Fixed an issue where build warnings in Swift files sometimes disappeared after an incremental build. (105421512)
• Fixed: If Xcode isn’t used to generate your content for App Store submission, the Signatures folder from your xcarchive will need to be added sidecar content. (106438176)
• Fixed: Using single-file build actions such as Preprocess or Assemble now works correctly when used on files with an overridden File Type. Previously, this may have produced a “missing input and no rule to build it” error. (107736241) (FB12102123)
• Fixed an issue where localization export of dependent frameworks could fail after running a regular build of the project. (108867135) (FB12165312)Deprecations
• Bitcode support has been removed, and the ENABLE_BITCODE build setting no longer has any effect. (105281961)C++ Standard Library
New Features
• The following new features have been implemented:
◦ Implemented the C++17 library
◦ P2499R0 - string_view range constructor should be explicit
◦ P2417R2 - A more constexpr bitset
◦ P2445R1 - std::forward_like
◦ P2273R3 - Making std::unique_ptr constexpr
◦ P0591R4 - Utility functions to implement uses-allocator construction
◦ P2291R3 - Add constexpr modifiers to functions to_chars and from_chars for integral types in header
◦ P0220R1 - Adopt Library Fundamentals V1 TS Components for C++17
◦ P0482R6 - char8_t : A type for UTF-8 characters and strings
◦ P2438R2 - std::string::substr() &&
◦ P0600R1 - nodiscard in the library
◦ P0339R6 - polymorphic_allocator<> as a vocabulary type
◦ P1169R4 - Implemented the library parts of static operator()
◦ P0415R1 - constexpr for std::complex
◦ P1208R6 - std::source_location
◦ P0323R12 - std::expected
◦ P1035R7 - Input Range Adaptors
◦ P2325R3 - Views shouldn’t be required to be default constructible
◦ P2446R2 - views::as_rvalue
◦ P1020R1 - Smart pointer creation with default initialization
◦ P2210R2 - Superior String Splitting
◦ The ranges versions of copy, move, copy_backward and move_backward are now also optimized for std::deque<>::iterator, which can lead to up to 20x performance improvements on certain algorithms.
◦ The std and ranges versions of copy, move, copy_backward and move_backward are now also optimized for join_view::iterator, which can lead to up to 20x performance improvements on certain combinations of iterators and algorithms. (108380402)Deprecations
• The following items have been deprecated or removed:
◦ unary_function and binary_function are no longer provided in C++17 and newer Standard modes. They can be re-enabled with _LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION.
◦ Several incidental transitive includes have been removed from libc++. Those includes are removed based on the language version used. If you see errors related to missing std:: entities in your code after upgrading, ensure you have all required includes.
◦ The functions to_chars and from_chars for integral types are only available starting with C++17. Libc++ offered these functions in C++11 and C++14 as an undocumented extension. This extension makes it hard to implement the C++23 paper that makes these functions constexpr, therefore the extension has been removed.
◦ The _LIBCPP_ENABLE_CXX03_FUNCTION macro that allowed re-enabling the now-deprecated C++03 implementation of std::function has been removed. Users who need to use std::function should switch to C++11 and above.
◦ The contents of <experimental/memory_resource> are now deprecated since libc++ ships now. Please migrate to instead. Per libc++’s TS deprecation policy, <experimental/memory_resource> will be removed in the next release.
◦ The base template for std::char_traits has been marked as deprecated and will be removed in the next release. If you are using std::char_traits with types other than char, wchar_t, char8_t, char16_t, char32_t or a custom character type for which you specialized std::char_traits, your code will stop working when we remove the base template. The Standard doesn’t mandate that a base template is provided, and such a base template is bound to be incorrect for some types, which could currently cause unexpected behavior while going undetected.
◦ _LIBCPP_ENABLE_NODISCARD and _LIBCPP_DISABLE_NODISCARD_AFTER_CXX17 are no longer respected. Any standards-required [[nodiscard]] applications in C++20 are now always enabled. Any extended applications are now enabled by default and can be disabled by defining _LIBCPP_DISABLE_NODISCARD_EXT.
◦ In freestanding mode, atomic doesn’t contain a lock byte anymore if the platform can implement lockfree atomics for that size. This ABI break only affects users that compile with -ffreestanding, and only for atomic where T is a non-builtin type that could be lockfree on the platform. (108380359)Console
New Features
• By default, Xcode streams os_logs through the unified logging and activity tracing infrastructure. The output may be formatted differently compared to previous versions of Xcode, and its order relative to standard IO may also change. To customize the behavior of logging, edit the Run scheme action to set the environment variable IDELogRedirectionPolicy. The value “oslogToStdio” redirects os_log messages to standard IO and formats them in a style identical to previous versions of Xcode. The value stdioToOSLog redirects standard IO to the os_log messages, and presents them in the debug console with additional metadata. (109380695)Resolved Issues
• Fixed: The debug console’s action to jump from an os_log message to the line of source code which emitted it is only supported when debugging executables on the local Mac or Simulators. The menu item is disabled when debugging executables on connected devices. (109171925)
• The maximum permitted size of os_log messages shown in the debug console is smaller than in previous Xcode versions. This may cause long messages to more commonly appear truncated in the debug console. (109381234)Create ML
Resolved Issues
• Fixed: With the new macOS Seed 1 build of macOS Sonoma, users of the CreateML app from Developer Tools inside Xcode can’t train machine learning models using hand action classifier and hand pose classifier. The specific error message is Unexpected Error when Train button is clicked. (108227967)Debugging
New Features
• LLDB now omits defaulted template arguments in type summaries.
For example,
(lldb) frame variable
(std::vector<std::vector<std::basic_string<char, std::char_traits, std::allocator >, std::allocator<std::basic_string<char, std::char_traits, std::allocator > > >, std::allocator<std::vector<std::basic_string<char, std::char_traits, std::allocator >, std::allocator<std::basic_string<char, std::char_traits, std::allocator > > > > >) nested = size=0 {}
will now display as:
(lldb) frame variable
(std::vector<std::vectorstd::string >) nested = size=0 {}
One can still see the default arguments by using the frame variable --raw-output option. (101329922)
• LLDB now supports referring to generic type parameters in expression evaluation. For example, given the following code:
func use(_ t: T) {
print(t) // Break here
}
use(5)
use("Hello!")
Running po T.self, when stopped in use, will print Int in the first call, and String in the second. This can be especially useful in combination with conditional breakpoints to stop only when a generic function is instantiated with a certain concrete type. For example, adding the following expression as the condition to a breakpoint inside use will only stop when the variable t is a String: T.self == String.self. (101976441)
• The p and po command aliases have been redefined to the new dwim-print command. The dwim-print command prints values using the most user friendly implementation. “DWIM” is an acronym for “Do What I Mean”. Specifically, when printing variables, dwim-print will use the same implementation as frame variable or v.
The output of p no longer includes a persistent result variable, such as $0, $R0, etc. Users who want persistent results on occasion, can use expression (or a unique prefix such as expr) directly instead of p. To enable persistent results every time, the p alias can be redefined in the ~/.lldbinit file:
command unalias p
command alias p dwim-print --persistent-result on --
The dwim-print also gives po new functionality. The po command can now print Swift objects by their address. When running po , the embedded Swift compiler will instead evaluate the expression unsafeBitCast(, to: AnyObject.self). (104348863)
• Xcode now shows AppKit runtime issues. Some examples are auto-layout constraint issues for constraints constructed in code. (105229806)
• When you create a watchpoint, you can see its ancestry path hierarchy. This gives you better context, especially in case of conflicts. (106777931)Resolved Issues
• Fixed: Xcode stops showing you zombie processes when you’re trying to attach from the menu. It was previously confusing and cumbersome to sieve through these non-debuggable processes for the actual process to debug. This works for all platforms. (11113209)
• Fixed: External Swift macros can’t be invoked from the LLDB expression evaluator. (109854291)DeviceDiscoveryUI
Resolved Issues
• Fixed: DeviceDiscoveryUI isn’t available when building for tvOS Simulator. (109224355)Devices
Resolved Issues
• Fixed: Devices running iOS 17 don’t support specifying a Routing App Coverage File for Apps launched from Xcode 15. (80105713)
• Fixed: Apple Watch simulators now appear as standalone simulators in the Devices and Simulators Window. (106664675)
• Fixed: Xcode requires an internet connection to prepare a device running iOS 17, watchOS 10, or tvOS 17 for development. When preparation for development fails due to the lack of an internet connection, Xcode doesn’t automatically retry preparing the device for development. (109511717)
• Fixed: Xcode 15 is unable to connect wirelessly for development with devices running iOS and tvOS versions older than 16.0. (113153131)Known Issues
• The Xcode Devices and Simulators Window doesn’t accurately reflect the color of devices connected to the Mac. (98003308)
• Xcode doesn’t automatically refresh the name of a device running iOS 17, watchOS 10, or tvOS 17 when the user renames the device from the Settings app. (98406919)
Workaround: Quit and restart Xcode.
• Xcode’s Devices and Simulators Window doesn’t display icons for applications installed on devices running iOS 17, watchOS 10, and tvOS 17. (108568165)
• When Xcode is wirelessly connected to a device running iOS 17, Xcode doesn’t automatically switch to using the fastest connection when the device is connected to the Mac using a USB cable. If the wireless connection is slower than the USB connection, Xcode may continue to communicate with the device using the wireless connection. (109466074)
Workaround: Disable and re-enable WiFi on the Mac to interrupt the wireless connection. Xcode automatically reconnects to the device over USB.
• The Xcode Devices and Simulators Window allows users to click on the “Take Screenshot” button when targeting devices that do not support the screenshot capability. When the button is clicked in this circumstance, Xcode hangs. (110086301)
• When an Apple TV is wirelessly paired to more than one device, Xcode’s Device and Simulator Window will show the status of the Apple TV go into a “Preparing for development” loop. (112046227)
Workaround: Pair the Apple TV to one device at a time to prevent seeing the status in a loop
• When plugging in a iPhone paired to an Apple Watch, the Apple Watch may not appear in Xcode’s Device and Simulator Window (114714784)
Workaround: Restart and replug the iPhoneDocumentation
New Features
• Xcode 15 now includes an assistant editor that provides a real-time preview of your Swift-DocC documentation as you type.
You can access Documentation Preview by first activating the assistant editor via Editor > Assistant, and then selecting “Documentation Preview” in the assistant editor’s jump bar.
The assistant editor is supported in Swift files, Objective-C header files, and documentation markup files. (56250383)
• Documentation built with Xcode 15 now includes pages for Swift extensions to external modules.
For example, you might extend SwiftUI’s Image struct to include an additional initializer:
public extension Image {
/// Create an image from the given sloth.
///
/// This initializer is useful for displaying static sloth
/// images. To create an interactive view containing a sloth,
/// useSlothView.
///
///
init(_ sloth: Sloth) {
self.init("(sloth.power)-sloth")
}
}
The documentation for this initializer will now be included alongside the rest of the documentation for your project.
If you would prefer to exclude these pages, set the DOCC_EXTRACT_EXTENSION_SYMBOLS build setting to NO. See the build settings reference for details. (63987302)
• To support easier migration from other documentation tools, some basic Doxygen-style commands like @param and @returns are now supported in Swift-DocC. (69835334)
• Diagnostics for documentation links now include details about why the link failed and offer suggestions for how to update the link to refer to a known symbol. (73903936)
• Swift-DocC now supports designing pages with fully custom layouts by utilizing new directives like @Row, @Tab Navigator, @Links, and @Metadata. To learn more, see the API Documentation. (97705029)
• Swift-DocC websites built with Xcode 15 now include a quick navigation feature that allows you to navigate directly to a page just by activating a keyboard shortcut and typing the page’s name. Press Shift+Cmd+O or Shift+/ while browsing a Swift-DocC website to activate the new quick navigation popover. (100346089)Resolved Issues
• Fixed: Swift-DocC now correctly allows you to customize the title of an API link using markdown’s link syntax.
SlothCreator includes a number of different sloth foods that you can feed to your virtual sloths.
(79992417)
• Fixed: Documentation links to symbols with unicode characters in the symbol name fail to resolve. (85531439) (FB9766665)
• Fixed: Documentation links to symbols from protocol requirements need to be disambiguated to distinguish them from a possible default implementation. (98781530) (FB11291552)
• Fixed: Xcode crashes on macOS Sonoma Beta 1 and Beta 2 when scrolling documentation in Quick Help, the documentation window, and the Swift Package dependency manager. (109810157)Known Issues
• Xcode documentation includes some sample code projects that require macOS Sonoma to run. (114836179)Indexing
Resolved Issues
• Fixed: Enabling “Build Libraries for Distribution” for a target no longer significantly slows down the indexing of its files (111703158)Instruments
New Features
• Instruments now allows for opening .memgraph files in the Allocations, Leaks and VM Tracker Instruments and visualizing timeline of live allocations if Malloc Stack Logging was enabled for the process. Xcode Memory Graph debugger features a new share button to view captured .memgraph file in Instruments. (53014738)
• Instruments 15 includes a new RealityKit Trace template. This template contains several new instruments for profiling apps and games on visionOS. The RealityKit Frames instrument will visualize the different stages of rendering a frame. RealityKit Metrics detects bottlenecks across the rendering stack and provides recommendations and key metrics to diagnose and eliminate rendering bottlenecks. These key metrics include CoreAnimation statistics, 3D Rendering Statistics, RealityKit Systems CPU time, System Power Impact, and much more. (104091516)
• Instruments 15 includes a new dyld Activity Instrument which visualizes dlopen, dlclose, static initializers and other dyld statistics relevant for application launch profiling. dyld Activity is included in the App Launch template and replaces Static Initializer Instrument. (106383871)
• Instruments 15 includes a new Audio System Trace template, providing a comprehensive view of the audio and operating systems. It visualizes how your application interacts with the audio server, giving you insight into Audio Thread I/O Cycles and other general performance metrics. (106843172)Resolved Issues
• Fixed: Significantly improved the performance of opening new documents with complex templates like Game Performance, System Trace and Metal System Trace. (72983621)
• Fixed an issue where an application would hang when selecting a HTTP transaction containing a large request or response body in the HTTP Traffic Instrument. (87893253) (FB9854651)Interface Builder
New Features
• The Cocoa storyboard Popover presentation segues support a full size content inspector property that allows the presented content to push beyond the safe area insets and past the arrow region of the popover. (102107829)
• NSView supports a Clips Bounds property inspector for finer control on whether the view’s contents should be clipped. (104581720)Resolved Issues
• Fixed: Text views, Text fields and Labels support additional text Content Types in the inspector to classify the data for birthdate, credit card, address, names, and more. (102866350)
• Fixed an issue so that the NSToolbar Item position centered inspector previews and persists to runtime correctly. (105597623)
• Fixed a compilation issue with some iOS storyboards that are marked with a target runtime of “iOS.CocoaTouch.iPad.” (111328594) (FB12453705)Known Issues
• Interface Builder documents using custom App fonts may load incorrect font at runtime. (113624207) (FB12903371)
Workaround: Set font manually in code.Linking
New Features
• A new linker has been written to significantly speed up static linking. It’s the default for all macOS, iOS, tvOS and visionOS binaries and anyone using the “Mergeable Libraries” feature. The classic linker can still be explicitly requested using -ld64, and will be removed in a future release. (108915312)Known Issues
• Binaries using symbols with a weak definition crash at runtime on iOS 14/macOS 12 or older. This impacts primarily C++ projects due to their extensive use of weak symbols. (114813650) (FB13097713)
Workaround: Bump the minimum deployment target to iOS 15, macOS 12, watchOS 8 or tvOS 15, or add -Wl,-ld_classic to the OTHER_LDFLAGS build setting.
• Weak symbol imports are linked as non-weak imports, when used from LTO object files. (115521975) (FB13171424)
Workaround: Add -Wl,-weak_reference_mismatches,weak or -Wl,-ld_classic options to the OTHER_LDFLAGS build setting.Localization
New Features
• String Catalogs (.xcstrings) are a new file type in Xcode that make it easy to localize your app by managing strings and keeping track of translation progress. Xcode automatically extracts localizable strings from source code to keep any String Catalogs in sync. String Catalogs can be viewed and edited in a native editor to preview and manage the localized strings in your project. To get started, add a new String Catalog via the File Chooser or migrate existing .strings and .stringsdict files by choosing Edit > Convert > To String Catalog… in the Menu Bar. (67254382)
• The Localization Catalog Editor now displays the translation status of strings when viewing and editing exported strings (for files where this information is available). (79101944)
• Xcode now gives you more flexibility when localizing App Intents phrases. You can now add or remove phrases in App Shortcuts .xcstrings independently in each locale using the String Catalog editor. (97283450)
• Exporting localizations from a Swift Package target will now prefer to generate string tables in the String Catalog format for targets that already contain at least one String Catalog. (106170507)Resolved Issues
• Fixed: Xcode now gives you the option to unlocalize a resource when removing all localizations from a localizable file in the File Inspector. (11795220)
• Fixed an issue where there was no way to add a new localization when exporting localizations in a Swift package. New localizations can now be added using the String Catalog editor. (92296781)
• Fixed: Xcode now builds multi-platform targets on all platforms when exporting localizations. (99457038)
• Fixed: Using the return and tab keys in the String Catalog editor will now move focus to the next text field. Use option (⌥) to enter newlines and tab characters. (107203366)
• Fixed: The build system will now consistently produce an error if a String Catalog coexists with .strings or .stringsdict files of the same name, within the same target. (108866595)
• Fixed an issue where importing a Localization Catalog with translated strings from a String Catalog would not add the appropriate supported languages to the project. (109236378)
• Fixed: Migrating InfoPlist.strings to InfoPlist.xcstrings now prefers to keep comments from the original .strings file when present. (110333696) (FB12242621)Metal
Resolved Issues
• Fixed: Xcode’s GPU debugging service automatically tries to connect to all devices running iOS 17, watchOS 10, and tvOS 17 that have been discovered in the local area network. If the device trusts the Mac, it accepts the connection and may drain its battery at a faster rate than normal for a sleeping device. (108682066)Metal Debugger
New Features
• The Geometry Viewer and Shader Debugger are now available for Mesh and Object render stages. Bound resources now supports filtering by shader access for Mesh pipelines. (81698727)
• The Metal Debugger has been updated with improved support for MetalFX. You can easily navigate to your MetalFX calls, see the bound resources, and compare the input and output results. The dependencies viewer has also been updated so that you can see where your input dependencies are coming from and even see how long it takes to complete the upscaling work. (101047483)
• The Buffer Viewer has been updated with new features, improved user interface, and performance improvements. New features include data search, column pinning, column filtering, and type casting. (101241716)Organizer
New Features
• Some crashes that were the result of a Foundation exception have their exception reason displayed in the Organizer. If there is an exception reason, it’s displayed in the inspector to the right of the backtrace view. (103453197)Particle Emitters
Resolved Issues
• Fixed: Adding a particle emitter or loading a particle emitter in Reality Composer Pro can result in a crash on an Intel-based Mac. (110794948)
• Fixed: The particle emitter property called simulation Space has been renamed to particles Inherit Transform, with possible values changing from .global/.local to false/true. (111411344)Playgrounds
New Features
• The Playgrounds console uses Xcode 15’s new console and gains features such as inline find. (42891656) (FB5398496)
• The result sidebar in Xcode Playgrounds shows summaries for all expressions on the line, and a new control allows you to see a popover with details about each expression. (105740414)
• The Playgrounds Map template has been updated to use modern MapKit API. (107284909)Resolved Issues
• Fixed: The result sidebar in Xcode Playgrounds always shows a summary of the most recent result instead of the number of results. (105108520)
• Fixed: Selecting an inline result in Xcode Playgrounds highlights the source code that produced the result. (105426026)
• Fixed: SwiftUI spring animations now have a dedicated visualization result. (106978230)
• Fixed: Inline results can’t be added from the results sidebar. (111376539)
• Fixed: macOS Playgrounds may fail to launch on some macOS Sonoma configurations in Xcode 15.0. (111478555)Previews
New Features
• The preview canvas has a new control for picking which device to use for previewing. By default it tracks the device family of the selected run destination, but a specific device can be selected. This should be used in favor of the preview Device modifier. (100562366)
• Previews can now be created with the #Preview macro. This includes support for previewing SwiftUI, UIView & UIViewController, NSView & NSViewController, and widget timeline providers, timeline entries, and live activities. (101566716)
• macOS previews now show window chrome and toolbars in the canvas. (105705642)
• Selecting a device connected to your Mac for previewing now previews exclusively for that device. The selection mode and variants mode now also use the connected device for rendering content to show in Xcode. (106208191)
• Right clicking on a Preview Provider in the source editor now offers an action to automatically convert it to the new #Preview API. (107319323)
• The #Preview can now be used in projects with deployment targets prior to iOS 17 and macOS 14. Usages of #Preview for SwiftUI can also be previewed on OS versions earlier than iOS 17 and macOS 14 by adding @available(iOS 16.0, macOS 13.0, *) to the #Preview (or whichever version you’d like to preview). Usages of #Preview for UIKit & AppKit views and view controllers, and for widgets can’t be previewed on OS versions prior to iOS 17 and macOS 14. (110676526)Resolved Issues
• Fixed: Previews failed when renaming or deleting the actively edited file. (62916700)
• Fixed: Previews failed when using @objc annotations on certain types. (96018813)
• Fixed: Canvas settings such as canvas mode, device settings, and the selected preview device are maintained when navigating files. (100999447)
• Fixed: Index of pinned preview is lost when navigating files. (106986986)
• Fixed: Projects could take several minutes to open the Previews canvas after updating the project on disk. (107974497)
• Fixed: Previews can crash when running on iOS 14.x and earlier devices. (108129587) (FB12125687)
• Fixed: Previews failed when pinning and navigating to a file not in the same target as the pinned preview. (108738163)
• Fixed: Previews failed when using @objc annotations on some types. (108892859)
• Fixed: Timeline entries in the preview canvas did not update when navigating files. (109223294)
• Fixed: Previews failed when syncing StoreKit configuration files in watchOS apps. (109238974)
• Fixed: #Preview instances that return a UIViewController and NSViewController properly follow or do not follow the safe area. (109281049)
• Fixed: Previews did not refresh the device picker in the canvas when connecting new devices to your Mac. (109661791)
• Fixed: New Widget projects created on macOS 13 fail to build. (109897205)
• Fixed: Using the #Preview syntax failed when the project defined local types for View and Preview. (110290974)
• Fixed: Previews failed when using #Preview in a project that did not import SwiftUI but had types named the same as some SwiftUI types. (110584929) (FB12304442)
• Fixed: #Preview can’t reference symbols in Swift type extensions when they’re defined in the same module as the Preview. (110671628)
• Fixed: Closing a project after previewing for macOS would keep multiple instances of the app under preview running. (110743090)
• Fixed: Previews can fail when editing in files with functions marked @nonobjc. (111355441) (FB12457473)
• Fixed: Previews content for macOS can shrink to zero size when previewed on a secondary display. (111533438)
• Previewing view code in a SwiftData app results in a linker failure for the canvas despite that code compiling successfully for device and simulator. (111657477)
• Fixed: On-devices previews can fail when first plugging in devices. (111712368)
• Fixed: Previews can fail when editing in files using the new Swift syntax for switch and if/else expressions. (111819050) (FB12528170)
• Fixed: Previews can fail when navigating between a file previewed in a widget and a file previewed in an app target. (111874103)
• Fixed: Previewing a view inside of a Swift Package or framework fails. (113143384)Known Issues
• Previews can fail when previewing files in a widget shared by both a watchOS app and an iOS app. (108017929)
• After loading a LiveActivity preview and making a code change, Xcode will get in a state where all previews time out across any project. (111934738)
Workaround: Restart Xcode.
• AppKit previews in projects that have a deployment target less than macOS 14.0 will fail to compile. (113047811)
Workaround: Add a @available(macOS 14.0, *) annotation to the #Preview.Reality Composer
Deprecations
• Starting in Xcode 15, Reality Composer for macOS is no longer included, but remains available for iOS and iPadOS on the App Store. Reality Composer Pro will be available in a future release. (114833716)RealityKit
Resolved Issues
• Fixed: Some 3D models loaded with model3D or ModelEntity(named:) and make use of MaterialX may take longer or fail entirely to load. (111301582)Sanitizers
Resolved Issues
• Fixed: Programs built with Address Sanitizer will hang on launch on Intel-based Macs. (111288234)ShazamKit
Resolved Issues
• Fixed: SHManagedSession doesn’t work on simulator. (109672477)Signing & Distribution
Known Issues
• Xcode may crash if you encounter an error while notarizing your app. (115425915) (FB13163393)
Workaround: You may need to sign a new Program License Agreement in your account at https://developer.apple.com/account. If that does not resolve the issue, you can also notarize with an older version of Xcode or using the notarytool command line utility.Signing and Distribution
New Features
• The Archive action is now available when the simulator run destination is selected. Building an archive with the simulator selected produces an app with all the CPU architectures for the devices on the selected platform. (13094592)
• The Xcode Signing & Capabilities tab in the project editor now supports adding Apple approved managed capabilities that are associated with your development team and App ID. Associated managed Capabilities are visible in the Library and work with automatic signing. (27253063) (FB5468762)
• xcodebuild -exportArchive supports using App Store Connect authentication keys to upload apps to App Store Connect and the Apple notary service. (76036452)
• Xcode now delivers app upload status push notifications to the person who uploaded to App Store Connect. (100033585)
• Xcode Organizer window now supports streamlined archive distribution. Uploading or exporting an archive can now be accomplished with one click. Streamlined distribution methods use recommended settings. The custom method allows selection of other options. (103967573)Resolved Issues
• Fixed: If your app integrates with Game Center, make sure that the com.apple.developer.game-center entitlement is present in your Entitlements.plist file. Previous Xcode versions automatically injected the entitlement into your app’s signature if it was present in your provisioning profile. That behavior was inconsistent with most other entitlements, and has been removed in Xcode 15. (106596235)
• Fixed: Resolved an issue where the “Manage version and build number” distribution option in Xcode and Xcode Cloud overwrote the version and build number of framework dependencies in apps. When distributing an app, framework dependencies retain their original version and build numbers. (106869375)
• Fixed: Automatic signing may fail to create a provisioning profile for DriverKit Driver targets. (109588156)
• Fixed: When uploading using the streamlined distribution workflow the optionally exported ExportOptions.plist is missing destination key/value. (114233867)Known Issues
• Streamlined distribution methods in the Xcode Organizer window don’t support all the same error recovery options available when using the custom workflow. For example: if uploading an app without an app record, using streamlined distribution, Xcode shows an error rather than allowing you to create an app record. (109097705)
Workaround: Use the custom method.Simulator
Resolved Issues
• Fixed: The simulator application running on macOS 14 beta 1 may crash if a game controller is connected. (110038857)Known Issues
• Status bar overrides may be set incorrectly when using the iOS 14 or later simulator runtime. (101511614) (FB11716688)
• Simulator doesn’t support all features of Spatial Audio. You can use Simulator to test a subset of audio features; however, final testing should be performed on device. (109912117)Source Control
New Features
• Source Control operations and Xcode Cloud operations have been moved into a new combined “Integrate” menu replacing the “Source Control” menu. (105752873)
• Xcode now fully integrates with git’s staging features and committing code is now performed in a non-modal fashion. (107490188)Resolved Issues
• Fixed an issue that could erroneously insert additional apostrophes when reviewing pull requests. (107586336)
• Fixed: Upstream changes may be displayed as staged changes in the Xcode editor. (109285038)
• Fixed an issue which may cause git credential helper keychain items to be deleted. (109411746) (FB12190300)Known Issues
• In-line Code Review Mode does not show when “Show Source Control Changes” is disabled in Xcode Settings. (114499800)
Workaround: Use Side-by-Side Mode instead.Deprecations
• Xcode 15 no longer includes Xcode Server. Xcode Cloud is the best way to get automated build/test/deploy workflows for your code changes. The xcodebuild tool is also available for custom automation needs. (99606507)Source Editor
New Features
• Inactive code in #if … #endif blocks is now dimmed. This can be disabled in the Text Editing > Display preferences. (2450148)
• The Editor > Structure > Toggle Comments now supports commenting a selection within a single line. (9245498)
• Quick Help now supports rendering images that are included in a documentation comment. Both external images referenced via URL and local images from your project’s documentation catalog are supported. (45258339) (FB5708868)
• Xcode now supports accessing SDK framework documentation by invoking Quick Help on a reference to a module name. For example, activating Quick Help by option-clicking on an import SwiftUI statement now shows SwiftUI’s documentation. (46583395) (FB5667593)
• Jump to definition “gd” Vim command is now supported. (81116920) (FB9404427)
• The Show Code Actions command has been replaced with Show Quick Actions to quickly access any menu command. By default, Command-clicking a token in the editor now performs Jump to Definition. This can be changed in the Navigation preferences. Control-clicking a token brings up the standard contextual menu that now contains all the commands that were available in the Code Actions. (86179596)
• Added Format to multiple lines command to the Editor > Structure menu to split code onto separate lines. It has a default key binding of control-M. (93150897)
• Editing with VoiceOver support has been improved. Source code landmarks and line number information now appear in the VoiceOver “More Content” menu. Accessories, including breakpoints, source control changes, and code folding ribbons appear as VoiceOver linked items. Source Editor Indentation preferences are also synced with VoiceOver’s speech and sound indentation preferences. Additionally, navigating the Source Editor with VoiceOver has been improved and important sections of the editor are now included as VoiceOver Window Spots. (100877198)
• When using QuickHelp, information for multiple symbols is shown when the type is ambiguous. (101256759)
• In Code Completion, functions that only contain one default parameter, now show as automatically expanded in code completion. Pressing right arrow on a function that contains more than one default parameter, expands to show all possible permutations of its parameters. (103815908)
• Select inner block “i<” and “i>” Vim commands are now supported. (104433144)
• Standalone and attached macros can be expanded in-line in the editor with the Editor > Expand Macro command. (104491696)
• Code completion now suggests names when declaring a type in Swift. (106005529)Resolved Issues
• Fixed: The font size used in the Quick Help popover now automatically adjusts to match the size of the editor’s current theme. (6955736)
• Fixed: The source editor shouldn’t add an extra line when hitting Return right before a closing curly brace. (64872737)
• Fixed: A number of issues were fixed with the syntax highlighting of multi-line string literals and string interpolations. (75009350)
• Fixed: Jump to counterpart “%” Vim command now works in visual mode. (79076961) (FB9146442)
• Fixed: Typing an open paren when an entire content of the line is selected incorrectly inserts newlines before and after the selected code. (98690994)
• Fixed: With “trim trailing whitespace” turned on, don’t trim whitespace when discarding changes for a section of code or an entire file. (102984729)
• Fixed: Scroll upwards “^u” / downwards “^d” Vim commands now extend selection in visual mode. (103835213)
• Fixed: Put text after cursor “p” Vim command now inserts text without an extra new line. (104037351)
• Fixed: Scroll upwards “^u” / downwards “^d” Vim commands now handle count prefix. (104635013)
• Fixed: Select paragraphs forward “{” / backward “}” Vim commands now extend selection in visual mode. (104782625)
• Fixed: Change case “gu{motion}” and “gU{motion}” Vim commands now change the characters rather than the whole word. (104870847)
• Fixed: The source editor may hang for a short period while opening a file if the current toolchain doesn’t match the selected Xcode. (109723219)Known Issues
Original source Report a problem
• Live I - April 2026
- No date parsed from source.
- First seen by Releasebot:Apr 15, 2026
Xcode 15.0.1 Release Notes
Xcode ships SDKs for iOS 17, iPadOS 17, tvOS 17, watchOS 10, and macOS Sonoma, with faster test launches, fixed Instruments leak detection, and an Interface Builder font loading fix.
Update your apps to use new features, and test your apps against API changes.
Overview
Xcode 15.0.1 includes SDKs for iOS 17, iPadOS 17, tvOS 17, watchOS 10, and macOS Sonoma. The Xcode 15.0.1 release supports on-device debugging in iOS 12 and later, tvOS 12 and later, and watchOS 4 and later. Xcode 15.0.1 requires a Mac running macOS Ventura 13.5 or later.
General
Resolved Issues
- Fixed: Executing Unit/UI tests from Xcode on the iOS Simulator takes an extended time to launch on first run of the suite. (115187363) (110330776) (FB12237092)
Known Issues
- Xcode 15 is unable to connect wirelessly for development with devices running iOS and tvOS versions older than 16.7. (116591034)
Workaround: Connect iOS devices running affected OS versions to the Mac using a USB cable.
Instruments
Resolved Issues
- Fixed: Leaks instrument never detects leaks. (116020104)
Interface Builder
Resolved Issues
- Fixed issue that caused Interface Builder documents using custom App fonts to load incorrect font at runtime. (116019276)
Test Report
Known Issues
- Test Report may present a screenshot or screen recording attachment that is unaccessible (112145122)
- April 2026
- No date parsed from source.
- First seen by Releasebot:Apr 15, 2026
Xcode 15.1 Release Notes
Xcode ships support for new Apple SDKs and expands on-device debugging, while adding StoreKit pricing and purchase intent testing, plus Xcode Cloud manual start conditions. This release also fixes a wide range of simulator, device, testing, linking, and Interface Builder issues.
Update your apps to use new features, and test your apps against API changes.
Overview
Xcode 15.1 includes SDKs for iOS 17.2, iPadOS 17.2, tvOS 17.2, watchOS 10.2, and macOS Sonoma 14.2. The Xcode 15.1 release supports on-device debugging in iOS 12 and later, tvOS 12 and later, and watchOS 4 and later. Xcode 15.1 requires a Mac running macOS Ventura 13.5 or later.
General
Resolved Issues
- Fixed: Executing Unit/UI tests from Xcode on the iOS Simulator takes an extended time to launch on first run of the suite. (115187363) (110330776) (FB12237092)
- Fixed: Swift macro definitions from the macOS/iOS/tvOS/watchOS SDKs are not available in Swift Playgrounds. (112122752) (FB12581131)
- Fixed: The simulator may crash when opening Settings or Action Button settings on iPhone 15 Pro devices. (115388496)
App Intents
Resolved Issues
- Fixed: Apps that have adopted AppIntents features from iOS 17.0, watchOS 10.0, and macOS 14.0 or beyond but run on iOS 16.0, watchOS 9.0 or macOS 13.0 may crash. (118082753)
Device Support
Known Issues
- Copying debug symbols from an Apple Watch running watchOS 10.3 Beta 2 may take longer than expected, approximately 10-20 minutes. (120428859)
Devices
Resolved Issues
- Fixed an issue in which files would appear to be missing when downloading the contents of a data container from a device, or when getting the list of files in a container. (101007362)
- Fixed: The ability to install apps using IPA files which was present in previous versions of Xcode has now been restored. (112295481)
- Fixed an issue which caused Core Device Service to exhaust sandbox memory over time, resulting in Xcode being unable to install apps on a device. (115682803)
- Fixed: The file transfer capability in Xcode previously could be used to access a container on the device for an app or app extension that was not yet installed. This access is now prevented. If this functionality has been previously used, it could prevent the installation of an app or app extension. To get out of this state, back up, erase, then restore the device. (115949353) (FB13201417)
- Fixed: Xcode is unable to connect to a watch running watchOS 9 or earlier if it is paired to an iPhone running iOS 17 or later, and may cause excessive battery drain on any such watch in close proximity. (116557139) (FB13239145)
- Fixed: Xcode may keep AppleTV display awake after developer is done working with it. (117165859)
Known Issues
- In certain circumstances, an app can’t read the contents of its own data container after replacing the content of the data container using Xcode or devicectl. (116698465) (FB13253099)
- Running a WatchApp that requires the companion iOS app to be installed will result in an error if the run destination is set to a Watch via iPhone Simulator pair. (119640671)
Workaround: Select a singular Watch Simulator run destination and then Run.
Instruments
Resolved Issues
- Fixed: Leaks instrument never detects leaks. (115440742)
Interface Builder
Resolved Issues
- Fixed issue that caused Interface Builder documents using custom App fonts to load incorrect font at runtime. (113624207) (FB12903371)
Deprecations
- @IBDesignable views are deprecated and will be removed in a future release. (115873872)
Linking
Resolved Issues
- Fixed: Binaries using symbols with a weak definition crash at runtime on iOS 14/macOS 12 or older. This impacts primarily C++ projects due to their extensive use of weak symbols. (114813650) (FB13097713)
- Fixed: Weak symbol imports are linked as non-weak imports, when used from LTO object files. (115521975) (FB13171424)
Optic ID
Resolved Issues
- Fixed: Even though Optic ID appears in Simulator, it isn’t possible to simulate Optic ID enrollment. (112460069)
Previews
Resolved Issues
- Fixed: AppKit previews in projects that have a deployment target less than macOS 14.0 will fail to compile. (113047811)
Reality Composer Pro
Resolved Issues
- Fixed: Reality Composer Pro now correctly export ACES OCIO names for color spaces to USD when they’re selected by the user in UI, otherwise the existing color space is used. (106431182)
- Fixed: Statistics shown in bottom panel ignore Shader Graph Materials when counting Textures. (109681637)
- Fixed: While in Selection Mode, Statistics shown in the bottom panel may count resources twice (e.g. same texture counted twice). (110007062)
- Fixed: Copy and paste menu items may be disabled in the Edit menu when nothing is selected in the scene. (110181840)
- Fixed: Some library assets can’t be downloaded by clicking on the download button or using Download menu item. (110209688)
- Fixed: Some image formats are exported as-is when exporting a scene as a USDZ file from Reality Composer Pro resulting in an invalid USDZ. (110538624)
- Fixed: Locked items in the scene hierarchy could still allow editing operations to be performed. (110545827)
- Fixed: Audio asset “AtmosphereJungle” doesn’t load and will be removed in upcoming release. (110725118)
- Fixed: Reality Composer Pro Acoustic Environment preview does not switch back to None. (110876824)
- Fixed: Issue navigator may still display stale package dependency errors even after the error is fixed. (110906050)
- Fixed: The Particle Emitter ‘Is Local’ property is renamed to: ‘Particles Inherit Transform’ which determines if the entity’s transform also affects the particles. This also adds a new ‘Fields Are Local’ property which is not functional. (111410569)
- Fixed: Reconstructing an object with Object Capture Model can result in a crash on an Intel-based Mac. (111645963)
- Fixed: Directly opening the .rkassets folder with Reality Composer Pro can overwrite parts of the project causing data loss. (112414255)
- Fixed: Audio mix groups are not functional at runtime. (113226910)
Known Issues
- Reality Composer Pro might quit unexpectedly after switching audio devices from a Studio Display to another device, such as AirPods or built-in speakers. (109912081)
Workaround: Save the project and quit Reality Composer Pro, switch the audio output device, then reload the project.
- Subsequent launches of app in Simulator might not play audio on launch (113052899)
Workaround: You can keep a reference to the AudioPlaybackController, either in a variable or a collection, replacing instances of entity.playAudio(someAudioFileResource) with controller = entity.playAudio(someAudioFileResource) where the controller variable keeps a reference to the sound for the expected duration of playback. Keeping a reference to the controller should work around this issue until fix is available.
Signing & Distribution
Resolved Issues
- Fixed: Resolved an issue that prevented xcodebuild from installing the Apple eWorldwide Developer Relations intermediate certificate into the keychain. (81581660)
Simulator
Resolved Issues
- Fixed: Xcode isn’t offering the latest iOS simulator runtime for downloading when an older one exists. (116372892)
StoreKit
New Features
- New pricing properties price, currency, and currencyCode are now available on Transaction. If an offer was applied to the transaction, a new property offer is available to see information about it (id, type, payment mode), as well as convenience properties offerID, offerType, and offerPaymentMode. (106650768)
StoreKit Testing in Xcode
New Features
- New testing functionality to send Purchase Intents to apps using StoreKit Testing in Xcode from the Transaction Manager. (101034395)
Resolved Issues
- Fixed an issue causing the StoreKit transaction manager to sometimes display duplicate devices in the navigator after launching an app from Xcode. (117541432)
Swift
Resolved Issues
- Fixed: Swift apps built with Xcode 15.0 crash on launch on macOS 10.13. (114820860)
Swift Packages
Resolved Issues
- Fixed: If the Package.swift file of a Swift App Playground project has been hand-edited to include unit test targets, the app playground fails to build with an error about duplicate commands. (113752456)
Test Report
Resolved Issues
- Fixed: Test Report may present a screenshot or screen recording attachment that is unaccessible (112145122)
- Fixed: Test Report’s Gallery View may be missing screenshots in cases with one run destination and one test plan configuration (117428402)
Testing
Resolved Issues
- Fixed: Unit test bundles hosted by extension-based WatchKit applications fail to run on device destinations when code coverage is enabled in the active test plan. (118158060)
visionOS
Known Issues
- iOS apps with a deployment target set to 17.2 fail to run on Apple Vision Pro. (117105090)
Workaround: Set the iOS deployment target to 17.0 or earlier in the project or target’s build settings.
Xcode Cloud
New Features
- Xcode now supports configuring a new Manual start condition in Xcode Cloud workflows. (112108570)
XCTest
Known Issues
- Test Action report logs may appear in less human readable form when os_log’s are output. (118455129)
Workaround: Set this User Default on your system by running the following command in terminal. defaults write com.apple.dt.Xcode IDEDisableConsoleLibLogRedirectLoggingForTestActions -bool YES
Original source Report a problem - April 2026
- No date parsed from source.
- First seen by Releasebot:Apr 15, 2026
Xcode 15.2 Release Notes
Xcode ships SDKs for iOS 17.2, iPadOS 17.2, tvOS 17.2, watchOS 10.2, macOS Sonoma 14.2 and visionOS, with on-device debugging support for older OS versions and many visionOS, Simulator, SwiftData, Previews and Cloud fixes.
Update your apps to use new features, and test your apps against API changes.
Xcode 15.2 includes SDKs for iOS 17.2, iPadOS 17.2, tvOS 17.2, watchOS 10.2, macOS Sonoma 14.2, and visionOS. The Xcode 15.2 release supports on-device debugging in iOS 12 and later, tvOS 12 and later, and watchOS 4 and later. Xcode 15.2 requires a Mac running macOS Ventura 13.5 or later.
General
Notes
- Developing for visionOS requires a Mac with Apple silicon. (114799042)
Resolved Issues
- Fixed: Creating a new visionOS App target sets the Application Scene Manifest (Generation) target build setting to Yes by default. Changing to Application Scene Manifest using the Info dictionary editor doesn’t remove the build setting “Application Scene Manifest (Generation)” as expected, which will override changes with the default value. (109428090)
- Fixed: When building with the visionOS SDK, Target Conditionals .h incorrectly sets TARGET_OS_IOS to 1 instead of 0. (112716373)
- Fixes an issue with the “Get” button not showing for the visionOS simulator in the Settings > Platforms panel. (115675177)
Known Issues
- visionOS App Icons don’t receive visual effects (depth, animation, edge textures) in Home View if any layer is smaller than 1024x1024px. Xcode doesn’t provide a warning or error for this behavior. (107568059)
Workaround: Make all layers of a visionOS App Icon 1024x1024px (@2x), and keep “Center in Canvas” and “Match Content Image” enabled in the Asset Catalog inspector for each layer.
- When the Base SDK Build Setting is set to iOS, the “Any visionOS Device” run destination will incorrectly display as “Any visionOS Device (Designed for iPad)” and will build using the iOS SDK. (112633577) (FB12695059)
Workaround: Change the Base SDK Build Setting to visionOS to use the “Any visionOS Device” run destination (FB12695059)
Asset Catalogs
Resolved Issues
- Fixed: Xcode crashes when attempting to view a visionOS asset catalog. This fix also requires macOS Sonoma beta 5 or later. (110739616)
Device Support
Resolved Issues
- Fixed: Copying debug symbols from an Apple Watch running watchOS 10.3 Beta 2 may take longer than expected, approximately 10-20 minutes. (120428859)
Devices
Known Issues
- In certain circumstances, an app can’t read the contents of its own data container after replacing the content of the data container using Xcode or devicectl. (116698465) (FB13253099)
- Running a WatchApp that requires the companion iOS app to be installed will result in the error “An application bundle was not found at the provided path” when the run destination is set to a Watch via iPhone Simulator pair. (119640671)
Workaround: Select a singular Watch Simulator run destination and then Run.
Distribution
Resolved Issues
- Fixed: Xcode crashes when uploading visionOS apps using Xcode in Beta 2. (111827403)
Organizer
Known Issues
- iOS app crashes from a TestFlight build on visionOS may not appear in the Crashes section of the Organizer. (107965403)
Workaround: From the “Pricing and Availability” section of your app’s App Store page in App Store Connect, enable the checkbox to allow your app to run on visionOS.
Playgrounds
Known Issues
- iOS App Playground projects are missing Apple Vision (Designed for iPad) run destinations. (112795077)
Reality Composer Pro
Resolved Issues
- Fixed: Capturing screen recordings from Vision Pro devices always fails. (114209977)
Simulator
Resolved Issues
- Fixed: iOS apps using the #Preview macro might quit unexpectedly when targeting Apple Vision Pro (Designed for iPad). (110801867)
SwiftData
Resolved Issues
- Fixed: visionOS projects that use the @Observable property wrapper will fail to build in Xcode 15 beta 3. (111494849)
- Fixed: SwiftData models don’t build with the visionOS SDK included in Xcode 15 beta 7. (114106802)
UI Automation
Known Issues
- visionOS doesn’t have any visual indication when UI automation is running. Devices with a passcode still need to enter their passcode to start UI automation. (85512012)
visionOS Simulator
Resolved Issues
- Fixed: There is no UI for simulating Apple Vision Pro’s immersion crown. (109429267)
- Fixed: Showing immersive content always presents the safe area warning. (112407012)
Known Issues
- On some configurations, the first install of an app will fail. (115968389)
Workaround: Build & run again.
visionOS SwiftUI previews
Resolved Issues
- Fixed issue where SwiftUI #Preview of a view containing TabView as top level element would crash preview. (111229511) (FB12429863)
Xcode
Resolved Issues
- Fixed: The “Apple Vision (Designed for iPad)” run destination will disappear from the available destinations after adding or removing any device from General > Supported Destinations. The “Show Apple Vision (Designed for iPhone & iPad) Destination” build setting is automatically set to No, but Apple Vision (Designed for iPhone & iPad) remains in the Supported Destinations list. Designed for iPad destinations may be added automatically when adding or removing other device types from the list. (110810619)
Xcode Cloud
Resolved Issues
- Fixed: visionOS Products may not show up in Xcode Cloud onboarding screens from within Xcode. (111536280)
Known Issues
- HelloGlobe visionOS sample project does not build in Xcode Cloud. (114666832)
Xcode Previews for visionOS
Resolved Issues
- Fixed: Textures often fail to load when viewing visionOS Previews in static mode. (114044001)
- Fixed: Some 2D content may not be visible in Xcode Previews static mode. (114220358)
- April 2026
- No date parsed from source.
- First seen by Releasebot:Apr 15, 2026
Xcode 15.3 Release Notes
Xcode ships support for the latest iOS, iPadOS, macOS, watchOS and visionOS SDKs, with on-device debugging, stronger build and signing workflows, faster C++ and Swift toolchains, improved previews, and a broad set of fixes across testing, localization, Instruments, and visionOS.
Overview
Xcode 15.3 includes SDKs for iOS 17.4, iPadOS 17.4, tvOS 17.4, watchOS 10.4, macOS Sonoma 14.4, and visionOS 1.1. The Xcode 15.3 release supports on-device debugging in iOS 12 and later, tvOS 12 and later, watchOS 4 and later, and visionOS. Xcode 15.3 requires a Mac running macOS Sonoma 14 or later.
General
Resolved Issues
- Fixed: Xcode is now deterministic about the order in which string comments are concatenated when updating String Catalogs. (119389516)
Known Issues
Some Macs recently received a macOS system update which disabled the simulator runtimes used by Xcode, including the simulators for iOS, tvOS, watchOS, and visionOS. If your Mac received this update, you will receive the following error message and will be unable to use the simulator:
The com.apple.CoreSimulator.SimRuntime.iOS-17-2 simulator runtime is not available.
Domain: com.apple.CoreSimulator.SimError
Code: 401
Failure Reason: runtime profile not found using "System" match policy
Recovery Suggestion: Download the com.apple.CoreSimulator.SimRuntime.iOS-17-2 simulator runtime from the Xcode(127498625)
Workaround: To resume using the simulator, please reboot your Mac. After rebooting, check Xcode Preferences → Platforms to ensure that the simulator runtime you would like to use is still installed. If it is missing, use the Get button to download it again.
App Intents
Known Issues
- AppIntents may fail to execute when the target’s minimum deployment target is iOS 15.0 or earlier (123798206) (FB13664020)
Workaround: Add the ENABLE_APPINTENTS_DEPLOYMENT_AWARE_PROCESSING=NO build flag to your target(s)
Apple Clang Compiler
New Features
- You can now use API Notes to add attributes to C++ APIs declared in a C++ namespace. (113403829)
- The compiler now correctly applies API Notes attributes to globals declared in extern "C++" blocks. (114382260)
Build System
New Features
- Schemes provide a new “Override Architectures” build option, which controls the set of architectures that will be built for all targets in the workspace, including Swift packages. The recommended option (and default for new schemes) is “Match Run Destination”. Full details are available by clicking the information icon next to the “Override Architectures” setting on the scheme build options sheet in Xcode. (66146584)
Resolved Issues
- Fixed: The scheme name is no longer included in the derived data intermediates path when performing archive builds or other builds where the DEPLOYMENT_LOCATION build setting is set to YES. This may necessitate changes to custom build scripts. (100990646)
- Fixed a bug where when a mergeable library in a framework inside an XCFramework is merged into a larger binary, the library sometimes would not be removed from the framework when the framework is embedded in the product. (114836725) (FB13100730)
- Fixed a bug where in a workspace with multiple projects, if a target is configured to merge the binaries of its immediate dependencies into its binary, it would not see that those dependencies were built as mergeable if they were in different projects from itself. (115400802) (FB13160508)
- Fixed a bug where creating an xcframework from a framework or library located at a path containing a symlink (such as /var which is a symlink to /private/var) would fail. (115786062) (FB13191683)
C++ Standard Library
New Features
- The following new features have been implemented:
- P0645 - Text formatting (std::format)
- P2286R8 - Formatting ranges
- P1206R7 - ranges::to: A function to convert any range to a container
- P2520R0 - move_iterator<T*> should be a random access iterator
- P1328R1 - constexpr type_info::operator==()
- P2693R1 - Formatting thread::id
- P2505R5 - Monadic operations for std::expected
- P2711R1 - Making multi-param constructors of views explicit
- P2136R3 - std::invoke_r
- P2494R2 - Relaxing range adaptors to allow for move only types
- P2585R0 - Improving default container formatting
- P0408R7 - Efficient access to basic_stringbuf’s buffer
- P2474R2 - std::ranges::views::repeat
- P0009R18 - std::mdspan
- P2093R14 - Formatted output (std::ostream overload is not implemented yet)
- Algorithms like std::equal, std::ranges::equal, std::find, and std::ranges::find are now lowered to std::memcmp in some cases, which can lead to massive performance improvements (up to 40x)
- The performance of dynamic_cast on its hot path was greatly improved
- The performance of std::sort and std::ranges::sort was improved by up to 50% for arithmetic types (120908845)
Deprecations
- The following items have been deprecated or removed:
- The <experimental/coroutine> header has been removed. Please use instead.
- The <experimental/algorithm> and <experimental/functional> headers have been removed, since all the contents have been implemented in namespace std.
- Several incidental transitive includes have been removed from libc++. If you get diagnostics for missing declarations after updating, please ensure that you have the appropriate includes in your source files.
- The global variables std::allocator_arg, std::defer_lock, std::try_to_lock, std::adopt_lock, and std::piecewise_construct have been removed in C++03 mode. They were previously provided as an extension, however that made it impossible to implement them correctly (as inline variables) in C++17 mode, which led to bugs. We decided to remove the niche extension and fix the C++17 bugs instead.
- The std::strstreambuf, std::istrstream, std::ostrstream, and std::strstream classes have been marked as deprecated, according to the C++98 Standard. (120909028)
CarPlay Simulator
New Features
- List of preset configurations for you to use as well as the ability to create a new configuration. Switching between and modifying configurations is accessible via the CarPlay Simulator menu bar item. (114585849)
- Navigation metadata is now observable in CarPlay Simulator. (117149888)
Devices
Resolved Issues
- Fixed: Running a WatchOS app that requires the companion iOS app to be installed will result in the error “An application bundle was not found at the provided path” when the run destination is set to a Watch via iPhone Simulator pair. (119640671)
- Fixed: Debug sessions may unexpectedly disconnect in periods of high memory utilization on device. (122593837)
Known Issues
- In certain circumstances, an app can’t read the contents of its own data container after replacing the content of the data container using Xcode or devicectl. (116698465) (FB13253099)
Documentation
Resolved Issues
- Fixed: Objective-C documentation builds can miss pages (115195433)
Instruments
Resolved Issues
- Fixed an issue where recording CPU Profiler on a Simulator device causes only first second of data to be presented. (106003509)
- Fixed: xctrace record now requires executing user to be an admin. (114202990)
- Fixed an issue where xctrace would crash when recording with only the ‘Time Profiler’ Instrument. (120422536) (FB13512248)
- Fixed: Xcode 15.3 or newer should be used for building Custom Instruments packages on macOS 14.4+. (121143107)
Localization
New Features
- After exporting localizations from the Product menu, Xcode will now reveal the exported files in Finder. (40559853)
Resolved Issues
- Fixed: Newly created .strings and .stringsdict files are now marked as localized in the source language by default. (64910037)
- Fixed an issue where Xcode could fail to export or import localizations when the path to Xcode.app contains spaces. (109700392) (FB12199098)
- Fixed an issue where “Export Localizations” could fail for targets supporting iOS and visionOS. (113228759)
- Fixed: Languages in the String Catalog Editor will now show a minimum of 1% translation progress if any strings are translated at all. (118790070) (FB13410677)
Metal Debugger
Known Issues
- The Metal Debugger will not work with connected devices in Xcode versions earlier than 15.3 when Xcode 15.3 or later is installed on the same system. (121627817)
Workaround: If Xcode 15.3 or later has been installed, use Xcode 15.3 or later when requiring the Metal Debugger to work with connected devices.
Previews
New Features
- Added the ability to export a screenshot of the current preview using the main menu: Editor > Canvas > Export Preview Screenshot (49361141)
- Crashes in an app under preview that happen after initial launch now show the crash report in the canvas. (105087132)
Resolved Issues
- Fixed: Previews fail when Swift files require more than 4096 compiler arguments (92630764) (FB10004742)
- Fixed: Previews could fail when previewing files in a widget shared by both a watchOS app and an iOS app. (108017929)
- Fixed: Exporting previews diagnostics could hang Xcode (114111390)
- Fixed: Previewing two different devices could fail (116060127)
- Fixed: Previews could fail when a file is in multiple targets where one of them is unsupported and one of them is supported (116861569) (FB13264099)
- Fixed: The previews canvas incorrectly shows some previews as still in the middle of updating (117094988)
- Fixed: Crash reports for previewed processes do not show up readily in some cases (117133804)
- Fixed: Previews could fail for certain projects where the scheme contained test targets (117681195) (FB13314466)
Proximity Reader
Known Issues
- Calling MobileDocumentReaderSession.requestDocument(:) or PaymentCardReaderSession.readPaymentCard(:) from the iOS Simulator results in unknown or read Cancelled errors being thrown. (123651094)
Workaround: Test your app on a physical iOS device or use Xcode 15.2 to debug your app on the iOS Simulator.
Signing & Distribution
Resolved Issues
- Fixed: When archiving your target, if the run destination selected is not a generic device (ex. “Any iOS Device”), Xcode will attempt to archive for the appropriate generic device based on the selected run destination’s platform. There is now an option in the scheme editor “Allow Archiving for Simulator” which will enable Xcode to select the appropriate generic simulator device if a simulator is selected. (121255551)
- Fixed: Resolved an issue where the app notarization workflow could fail to report informative errors when the development team was in a contract pending state on App Store Connect. Resolved an issue where the app notariation workflow could incorrectly report that a failed upload was successful. (122816678)
Simulator
Known Issues
- When attempting to boot a simulator device shortly after installing its runtime or updating to a new version of macOS, Gatekeeper scanning may temporarily prevent boot. This can appear as an “Unable to boot the Simulator” or “-308” error. (118038020)
Workaround: Wait a few minutes before trying the operation again to allow Gatekeeper to complete its scan.
- When attempting to boot a simulator device after an XProtect update is installed, Gatekeeper scanning may temporarily prevent boot. This can appear as an “Unable to boot the Simulator” or “-308” error. (124035288)
Workaround: Wait a few minutes before trying the operation again to allow Gatekeeper to complete its scan.
StoreKit
New Features
- You can enable and disable StoreKit dialogs in your app through the StoreKit Testing in Xcode configuration settings. This controls the same behavior as the StoreKitTest SKTestSession.disableDialogs property and it is enabled by default. (107622572)
Swift
New Features
Under strict concurrency checking, every global or static variable must be either isolated to a global actor or be both immutable and of Sendable type.
var mutableGlobal = 1 // warning: var 'mutableGlobal' is not concurrency-safe because it is non-isolated global shared mutable state // (unless it is top-level code which implicitly isolates to @MainActor) final class NonsendableType { init() {} } struct S { static let immutableNonsendable = NonsendableType() // warning: static property 'immutableNonsendable' is not concurrency-safe because it is not either conforming to 'Sendable' or isolated to a global actor } The attribute nonisolated(unsafe) can be used to annotate a global variable (or any form of storage) to disable static checking of data isolation, but note that without correct implementation of a synchronization mechanism to achieve data isolation, dynamic run-time analysis from exclusivity enforcement or tools such as Thread Sanitizer could still identify failures. nonisolated(unsafe) var global: String(SE-0412) (121120491)
Default value expressions can now have the same isolation as the enclosing function or the corresponding stored property:
@MainActor func requiresMainActor() -> Int { ... } class C { @MainActor var x: Int = requiresMainActor() } @MainActor func defaultArg(value: Int = requiresMainActor()) { ... }For isolated default values of stored properties, the implicit initialization only happens in the body of an init with the same isolation. This closes an important data-race safety hole where global-actor-isolated default values could inadvertently run synchronously from outside the actor.
(SE-0411) (121121487)
Resolved Issues
- Fixed an issue under strict concurrency checking with -strict-concurrency=complete or -strict-concurrency=targeted where the compiler would generate Sendable warnings on calls to AsyncIteratorProtocol.next() generated by for await loops inside an actor-isolated context. (119613738)
- Fixed: Swift 5.10 closes all known holes in the static data-race safety model under complete concurrency checking. When writing code with -strict-concurrency=complete, all potential for data races will be diagnosed at compile time unless an explicit unsafe opt out, such as nonisolated(unsafe) or @unchecked Sendable, has been applied. (120816587)
- Fixed: Under strict concurrency checking with -strict-concurrency=complete, the compiler will incorrectly apply nonisolated to synthesized default and memberwise initializers of global actor isolated types in some cases involving property wrappers, init accessors, or private stored properties whose initializer expressions are global actor isolated. This will result in an error message about returning from the initializer without initializing the stored property. (121282537)
Swift Packages
Resolved Issues
- When opening a package, Xcode no longer creates separate schemes for the package’s test targets. Instead, these are added to the Test scheme action for the appropriate scheme. (117871488)
Templates
Resolved Issues
- Fixed: The visionOS section is missing in the new File workflow (File -> New -> File). (122595488)
Testing
New Features
- If an Objective-C or C++ exception is thrown on a background thread, including those owned by the Swift runtime, it will now be recorded as a test failure before the test process terminates. (110073990)
Resolved Issues
- Fixed: XCTest now requires iOS 13.0 and tvOS 13.0. (104632233)
- Fixed: XCTest UI Automation APIs are main-thread-bound. This is now enforced at compile-time. (108214525)
- Fixed: XCTestContext.runActivity(named:block:) is now annotated @preconcurrency @MainActor in Swift. Most callers using it from a synchronous test function will be unaffected. Callers using it from an async test function will need to await it or mark their test function @MainActor. (110664415)
- Fixed: Starting in this release, synchronous closures passed to XCTestCase.addTeardownBlock() are now explicitly isolated to the main actor in Swift. Previously, such closures would run on the main actor but not be explicitly isolated to it. Asynchronous teardown blocks are not affected. (115078758)
Known Issues
- Tests with more than one test case targeting macOS may not produce screen recordings in the result bundle. In the case where screen recordings are not available, screenshots are provided. (118342983)
Thread Performance Checker
Resolved Issues
- Fixed: Thread Performance Checker emits a new category of runtime issues called “Known Hangs” which shows developers where in their code hangs are known to affect users of their apps. (102045928)
visionOS
Resolved Issues
- Fixed: USDz assets appear as missing textures (pink stripes) for visionOS apps when viewing in the selectable preview in Xcode (120443849)
- Fixed: iOS apps with a deployment target set to 17.2, 17.3, or 17.4 fail to run on Apple Vision Pro. (120444126)
- Fixed: Texture Coordinate nodes now behave as expected (121959312)
- April 2026
- No date parsed from source.
- First seen by Releasebot:Apr 15, 2026
Xcode 15.4 Release Notes
Xcode ships SDKs for iOS 17.5, iPadOS 17.5, tvOS 17.5, watchOS 10.5, macOS Sonoma 14.5, and visionOS 1.2, adds web distribution simulation, and fixes watchOS install, simulator boot, data container, asset symbol, and XCTest issues.
Overview
Original source Report a problem
Xcode 15.4 includes SDKs for iOS 17.5, iPadOS 17.5, tvOS 17.5, watchOS 10.5, macOS Sonoma 14.5, and visionOS 1.2. The Xcode 15.4 release supports on-device debugging in iOS 12 and later, tvOS 12 and later, watchOS 4 and later, and visionOS. Xcode 15.4 requires a Mac running macOS Sonoma 14 or later.
General
New Features
• Xcode 15.4 supports simulating web distribution while running or testing your app. Enable the “Alternative Distribution - Web” build setting in your app target or project, then select “Website” in your scheme or test plan in the Distribution option. When you run or test your app, it will receive the App Distributor .web value when querying Marketplace Kit for its current App Distributor. (124230395)
Resolved Issues
• Fixed: watchOS Apps do not install on Series 3 and earlier. (118490442) (FB13378667)
Known Issues
• Some Macs recently received a macOS system update which disabled the simulator runtimes used by Xcode, including the simulators for iOS, tvOS, watchOS, and visionOS. If your Mac received this update, you will receive the following error message and will be unable to use the simulator:
The com.apple.CoreSimulator.SimRuntime.iOS-17-2 simulator runtime is not available.
Domain: com.apple.CoreSimulator.SimError
Code: 401
Failure Reason: runtime profile not found using "System" match policy
Recovery Suggestion: Download the com.apple.CoreSimulator.SimRuntime.iOS-17-2 simulator runtime from the Xcode
(127498625)
Workaround: To resume using the simulator, please reboot your Mac. After rebooting, check Xcode Settings → Platforms to ensure that the simulator runtime you would like to use is still installed. If it is missing, use the Get button to download it again.
App Shortcuts Preview
Known Issues
• Enabled App Shortcuts preview, but the app’s base locale might fail. (125556990)
Asset Catalogs
Resolved Issues
• Fixed an issue where generated asset symbols emitted warnings with Swift strict concurrency checking enabled. (124156187)
Devices
Resolved Issues
• Fixed: In certain circumstances, an app can’t read the contents of its own data container after replacing the content of the data container using Xcode or devicectl. (116698465) (FB13253099)
Simulator
Resolved Issues
• Fixed: When attempting to boot a simulator device shortly after installing its runtime or updating to a new version of macOS, Gatekeeper scanning may temporarily prevent boot. This can appear as an “Unable to boot the Simulator” or “-308” error. (118038020)
• Fixed: When attempting to boot a simulator device after an XProtect update is installed, Gatekeeper scanning may temporarily prevent boot. This can appear as an “Unable to boot the Simulator” or “-308” error. (124502668)
Testing
Resolved Issues
• Fixed: Using XCTest Case.fulfillment(of:) in an actor-isolated test method produces a warning. (124112256)
Xcode Previews
Known Issues
• Previews may fail in projects or targets that use special characters such as curly quotes, Phi, etc. (125490102) (FB13699939)
Workaround: Rename project and/or target to no longer use special characters. - April 2026
- No date parsed from source.
- First seen by Releasebot:Apr 15, 2026
Xcode 16 Release Notes
Xcode ships a major 16 release with SDKs for Apple’s latest platforms, predictive code completion on Apple silicon Macs, explicit module builds, faster previews and debugging, improved localization and asset workflows, and broad fixes across build, device, and tools support.
Overview
Xcode 16 includes SDKs for iOS 18, iPadOS 18, tvOS 18, watchOS 11, macOS Sequoia 15, and visionOS 2. The Xcode 16 release supports on-device debugging in iOS 15 and later, tvOS 15 and later, watchOS 7 and later, and visionOS. Xcode 16 requires a Mac running macOS Sonoma 14.5 or later.General
Notes
• Predictive Code Completion is now supported on all Apple silicon Macs. (130449481)
• Predictive Code Completion is not supported when running Xcode in a Virtual Machine. (129198328)
• Developing for visionOS requires a Mac with Apple silicon. (114799042)New Features
• Copy and paste from the build settings editor now uses xcconfig file syntax. (14333348) (FB5925390)
• The Project Navigator’s “Open As” context menu now supports choosing default editors per file type (24666459)
• Xcode 16 includes predictive code completion, powered by a machine learning model specifically trained for Swift and Apple SDKs. Predictive code completion requires a Mac with Apple silicon, running macOS 15. (116310768)
• xcodebuild supports importing and exporting a downloaded platform to on disk. The simulator disk image can be exported to disk, so that it can be applied to Xcode installations on other machines that require the simulator runtime, without needing to redownload. There is an optional -export Path argument for xcodebuild -downloadAllPlatforms [-export Path ] and xcodebuild -downloadPlatform [-export Path ]. Example:
xcodebuild -downloadPlatform iOS -exportPath ~/MySimulators/
To import, run xcodebuild -importPlatform <pathToSimulator.dmg>, note that xcrun simctl runtime add <pathToSimulator.dmg> also works. (129189162)Resolved Issues
• Fixed: xcodebuild -showBuildSettings now uses the new build system, to match the settings used when performing an actual build. This may result in some differences in the build settings emitted compared to the earlier implementation, particularly in the presence or absence of -scheme and -destination options to xcodebuild. (58870112) (FB7549715)
• Fixed an issue where the Add Frameworks dialog in the target editor would not show any results for a target building against the DriverKit SDK. (107754792) (FB12103199)
• Updating the location of a path-based package dependency through the ‘Add Package Dependency’ panel now correctly update the existing reference to the new path, instead of silently failing. (114293235)
• Fixed: Fix-its referring to changes in other files now offer offer a ‘Show’ action that will navigate to the location where the change fix-it is suggested, and offer a new fix-it annotation. (119522152)
• Fixed: Resolved an issue where passing the --background flag to the xcdebug tool would unexpectedly bring Xcode to the foreground. (120553994)
• Fixed: With Swift Explicitly-Built modules enabled, compilation of Swift targets’ modules no longer incorrectly inherits additional search paths from target configurations of their Swift dependencies in the same project. (122501504)
• Fixed an issue where a build failure might not cancel a Build & Run action, thus causing an attempt to install or launch an invalid application on the run destination. (125737915)
• Fixed: The RealityKit debugger might fail to capture complex scenes running on a physical device. In such cases, the simulator can be used instead. (128373818)
• Fixed: Code completion might not always offer predictions. (128708703)
• Fixed: Debugging RealityKit apps that target macOS, requires that the version of macOS installed on the host machine is 15.0 or newer. (129308033)
• Fixed: Swift projects that set a deployment target of macOS 10.14, iOS 12.0, watchOS 5.0, tvOS 12.0 and use constants from float.h such as FLT_RADIX in Swift sources will not link correctly. This will cause a crash when running on those OS versions. The crash will not occur when running on macOS 10.14.4, iOS 12.2, watchOS 5.2, tvOS 12.2 or later. (130107191)
• Fixed: Xcode 16 beta 3 will fail to launch for some users. Users who have not installed Xcode 16 beta or Xcode 16 beta 2 will see a “Loading a plug-in failed” alert. (131066390)
• Fixed: AppIntents may fail to build project if there are duplicate title values for AppIntent conformances within the same target. (131192911)
• Fixed: Varying a source language string in a String Catalog by plural will now use the correct plural cases for each language when propagating the same change to already-translated languages. (132042468)Known Issues
• Xcode 16 beta 5 may crash when opening Source Editor if running macOS Sequoia, beta 4 or older. (130609632)
Workaround:
Install macOS Sequoia beta 5.
• Users that upgrade to Xcode 16 after having previously installed Xcode 16 Beta 6 or Xcode 16 RC may experience Developer Disk Image mounting errors when using iPhone 16 or Apple Watch Series 10 devices. (136364979) (FB15189777)
Workaround:
Open Terminal.app and run
sudo installer -pkg /Applications/Xcode.app/Contents/Resources/Packages/XcodeSystemResources.pkg -target /
(replacing the path to Xcode 16 if necessary.)Deprecations
• The simulator runtimes are currently available on the Apple Developer website, but will no longer be posted through the website in future updates. Please use xcodebuild -downloadPlatform -export Path command to download the runtime and then xcodebuild -importPlatform <path/simruntime.dmg> to install it. For more details, see Installing and managing Simulator runtimes. (133776444)App Distribution
Known Issues
• When building for ad hoc distribution, some iOS apps may have their watchOS apps uninstall or fail to launch with an error about needing an iPhone App when one already exists. (135240308)Apple Clang Compiler
New Features
• For a re-exported module, Clang now looks for API Notes in the re-exporting module’s apinotes file. For example:
module ExportAsCore {
header "ExportAsCore.h"
export_as ExportAs
}module ExportAs {
header "ExportAs.h"
export *
}
Clang now allows declaring API Notes for symbols from ExportAsCore module in ExportAs.apinotes file. (121680760)
• The following C++26 features have been implemented:
• Remove undefined behavior from lexing. (P2621R2 (DR))
• Making non-encodable string literals ill-formed (P1854R4 (DR)).
• Add @, $, and ` to the basic character set (P2558R2).
• Unevaluated strings (P2361R6)
• The following C++23 features have been implemented:
• The Equality Operator You Are Looking For. (P2468R2)
• Labels at the end of compound statements. (P2324R2)
• static operator(). (P1169R4)
• char8_t Compatibility and Portability Fix. (P2513R3)
• static operator[]. (P2589R1)
• Permitting static constexpr variables in constexpr functions. (P2647R1)
• consteval needs to propagate up. (P2564R3(DR))
• Referencing The Unicode Standard. (P2736R2)
• The following C++20 features have been implemented:
• typename optional in more contexts.(P0634R3)
• Structured binding extensions. (P1091R3, P1381R1)
• Parenthesized initialization of aggregates. (P0960R3, P1975R0) (128912178)Resolved Issues
• Fixed looking up module maps in all subdirectories of provided header search paths. (106677321)Deprecations
• The following items have been deprecated or removed: Using -e without space after it to specify entry function to linker is disallowed now. (130452096)Asset Catalogs
New Features
• The Asset Catalog context menu has a new “Find References to Item” option that initiates an “Asset References” find for the selected asset (104226484)
• Asset catalogs now provide an inspector property for enabling system color and image accessors for generated asset symbols, which allows Swift packages to opt-in to generating these accessors. (113704993)
• Code completion results for generated asset symbols now display asset thumbnails (114392937)
• The Find Navigator has a new “Asset References” query type that locates asset references as string literals or Swift/Objective-C generated symbols (126376146)Resolved Issues
• Fixed: Improved thumbnail rendering for asset catalog images. (114343652)
• Fixed an issue where the Attributes Inspector wasn’t displayed for items in a Sticker Catalog. (120438144) (FB13512995)Build System
New Features
• Beginning in Xcode 16, the build system coordinates with the Clang and Swift compilers to discover and build module dependencies of project sources as a set of explicit tasks in the build log. Explicitly built modules provide more actionable error messages when compilation errors are diagnosed, improve debugger performance, and allow the build system to make better scheduling decisions which maximize parallelism. (112943296)
• New build settings have been added to facilitate adoption of Swift 6. The SWIFT_VERSION build setting now allows building with the Swift 6 language mode. Projects can incrementally migrate to Swift 6 by opting into features individually using the new build settings under Swift Compiler - Upcoming Features . (114638076)Resolved Issues
• Fixed: Xcode now renames files such as TargetName-InfoPlist.strings to InfoPlist.strings at build time, even when the Info.plist file is fully generated by the build system. (108824512)
• Fixed: Resolved an issue where “Clean Build Folder” would have no effect in some workspaces containing a project without any targets. (116412043)
• Fixed: Xcode now uses lipo to create universal static libraries instead of libtool . Universal static libraries will now automatically use the 64-bit format if they exceed the maximum size allowed by the 32-bit format. (117911543) (FB13331562)
• Fixed an issue where previously resolved Swift compiler diagnostics would reappear in the log and issue navigator in subsequent builds. (119533281)
• Fixed an issue where projects using SwiftPM build tool plugins would sometimes report internal inconsistency errors when building. (121851192) (FB13565986)
• Fixed: The build system now computes dependency information from command line arguments in more scenarios, reducing the likelihood of nondeterministic build failures. In some cases this may require shell script build phases to add output file dependency declarations. (125596258)
• Fixed: Building a project that contains only warnings no longer reveals the issue navigator on build completion. Instead, a new behavior option for ‘Build > Generates Warnings’ was introduced that is distinct from ‘Build > Generates Errors’. (127064801)C++ Standard Library
New Features
• You can now turn on C++ Standard Library hardening in the Build Settings. Turning on hardening enables checks for common cases of misuse of the standard library APIs; if a check fails, the program is reliably terminated, helping prevent security vulnerabilities and diagnose some cases of undefined behavior. The library provides several hardening modes, including low-overhead modes that can be used in production. For more details, please refer to the hardening documentation.
• Note that turning on hardening might expose latent bugs in your code and cause it to terminate at runtime. Please make sure to fix any issues exposed by hardening in your code in a development environment before turning it on in production.
• The following new features and enhancements have been implemented:
• P0020R6 — Floating Point Atomic
• P2443R1 — views::chunk_by
• P2821R5 — span.at()
• P1659R3 — starts_with and ends_with
• P2302R4 — std::ranges::contains (note: std::ranges::contains_subrange not implemented yet)
• P0543R3 — Saturation arithmetic
• P2905R2 — Runtime format strings
• P2918R2 — Runtime format strings II
• P2447R6 — std::span over an initializer list
• P1759R6 — Native handles and file streams
• P2467R1 — Support exclusive mode for fstreams
• P2697R1 — Interfacing bitset with string_view
• P2497R0 — Testing for success or failure of functions
• P2538R1 — ADL-proof std::projected
• P2909R4 — Fix formatting of code units as integers (Dude, where’s my char?)
• P2517R1 — Add a conditional noexcept specification to std::apply
• P2539R4 — Should the output of std::print to a terminal be synchronized with the underlying stream? (128950351)Deprecations
• The following items have been deprecated or removed:
• Removed the type alias allocator::is_always_equal in C++26 (P2868R3).
• You can use the compatibility macro _LIBCPP_ENABLE_CXX26_REMOVED_ALLOCATOR_MEMBERS to make the alias available again.
• Removed the std::basic_string::reserve() overload with no parameters in C++26. Use shrink_to_fit instead (P2870R3).
• You can use the compatibility macro _LIBCPP_ENABLE_CXX26_REMOVED_STRING_RESERVE to make the header and its contents available again.
• Removed header and all its contents in C++26 (P2871R3).
• You can use the compatibility macro _LIBCPP_ENABLE_CXX26_REMOVED_CODECVT to make the header and its contents available again.
• Removed std::shared_ptr::unique in C++20 and later modes (P0619R4 section D.14).
• You can use the compatibility macro _LIBCPP_ENABLE_CXX20_REMOVED_SHARED_PTR_UNIQUE to make the function available again.
• Deprecated std::numeric_limits::has_denorm and std::numeric_limits::has_denorm_loss (P0619R4)
• The non-standard constructor std::future_error(std::error_code) has been removed. Please use the std::future_error(std::future_errc) constructor provided in C++17 instead.
• The headers <experimental/deque>, <experimental/forward_list>, <experimental/list>, <experimental/map>, <experimental/memory_resource>, <experimental/regex>, <experimental/set>, <experimental/string>, <experimental/unordered_map>, <experimental/unordered_set>, and <experimental/vector> have been removed as all their contents have been implemented in namespace std in previous releases.
• Removed a code path from std::variant that led to narrowing conversions behaving in a non-standard way (now that P1957 has been implemented in the compiler). This can cause a visible behavior change in some code using std::variant’s constructor. As a temporary workaround, use the _LIBCPP_ENABLE_NARROWING_CONVERSIONS_IN_VARIANT macro that restores the previous behavior; this compatibility macro will be removed in a future release.
• The macros _LIBCPP_ENABLE_CXX20_REMOVED_ALLOCATOR_MEMBERS has been deprecated and will be removed in a future release. This macro previously re-enabled redundant members of std::allocator like pointer, reference, rebind, address, max_size, construct, destroy, and the two-argument overload of allocate . However, this led to the library being non-conforming due to incorrect constexpr-ness.
• The macros _LIBCPP_ENABLE_CXX17_REMOVED_FEATURES and _LIBCPP_ENABLE_CXX20_REMOVED_FEATURES have been deprecated and will be removed in a future release. These macros used to re-enable all features that were removed in the C++17 and C++20 standards. Instead of using these macros, please use the macros that re-enable individual features. (128950615)CarPlay Simulator
New Features
• UI Refresh as well as the ability for you to rename configurations and screen record in CarPlay Simulator. Modifying and switching between configurations is accessible via a drop down in the main CarPlay Simulator window. Screen recording is accessible via the toolbar in the main CarPlay Simulator window. (124405895)Clang
New Features
• Clang now supports generating code to call typed allocators. To enable this support for C allocation functions such as malloc() set the CLANG_ENABLE_C_TYPED_ALLOCATOR_SUPPORT build setting to YES . For C++ allocations with operator new , set CLANG_ENABLE_CPLUSPLUS_TYPED_ALLOCATOR_SUPPORT to YES . (132456928)Command-line Tools
New Features
• Symbolication command line tools such as atos and symbols now support binaries and dSYMs with DWARFv5 debug info format. (28041592)Containerization
Resolved Issues
• Fixed: An app might not be able to read the contents of its own data container after replacing the content of the data container using Xcode or devicectl. (116698465) (FB13253099)Create ML
Resolved Issues
• Fixed: Training fails towards the end of the Object Tracking training process if user loses internet connection. (130111589)Debugging
New Features
• LLDB can now import explicitly-built Swift and Clang modules directly. If the first expression evaluation in LLDB takes a long time due to Clang module compilation, consider adopting explicit modules in your project. (84105971)
• The debug bar provides a control to view the current backtrace in the source editor, unified with contextual relevant source code for each frame in the source editor (102907696)
• When targeting macOS 15, iOS 18, … or later, the default debug info format is DWARF 5. (110925733)
• Xcode can debug crash logs and core files, within our outside the context of an Xcode project file and accompanying source files. The debug session allows full access to lldb commands in the console. Unsymbolicated frames in backtraces can be symbolicated by using the “Load Symbols” contextual menu item to add dsyms or symbol rich binaries. (114104872)
• Code snippets are available in the LLDB console (117042240)
• When the debugger is being used to inspect a crashed process or a crash log, the source editor annotation at the crashing line of code shows an explanation of the crash reason along with a link to more documentation about the crash reason. (117428116)
• The MallocStackLogging lite mode diagnostic for recording malloc callstacks is now up to twice as CPU efficient for single-threaded workloads, and up to 10x less runtime overhead for multi-threaded workloads when used on macOS 15, iOS 18, and aligned releases. (118902575)
• After selecting the process entry in the Debug Navigator, users can now use the Delete key or contextual menu to stop the process. (121154261)
• Exception backtrace is shown more logically in Debug Navigator, especially when shown together with async recorded backtraces. (121675894)Resolved Issues
• Fixed: Breakpoints created in the LLDB console are now reflected in the breakpoint navigator and source editor (10442078)
• Fixed: LLDB will now initialize the Swift compiler used for expression evaluation with the exact configuration of the Swift module at the current breakpoint instead of merging all compiler flags from the entire application. This makes search path mismatches less likely. (115188886)
• Fixed: Xcode’s Memory Graph Debugger is now more efficient, using significantly less memory when loading and displaying memory graphs. (118510874)
• Fixed an issue in the memory graph debugger where the inspector would not display allocation backtraces for objects in a saved memgraph file. (120755580)
• Fixed: When debugging or profiling arm64/arm64e apps on macOS 15, iOS 18, tvOS 18, or visionOS 2, SwiftUI symbols should now be present. (127698015)Deprecations
• Diagnostics option “Malloc Stack Logging” no longer allows selecting “All Allocations and Free History” and instead tracks live allocations only. (126948168)Devices
New Features
• devicectl now provides commands to manage the developer disk images present on your Mac. See devicectl manage ddis --help for more information. (114472187)
• devicectl list devices now supports hiding column headers in its textual output via the --hide-headers flag. (119357626)
• devicectl device process launch now supports a --console option to capture standard output and standard error from the launched app and to wait until the app exits. (123516594)
• devicectl's --device flag can now supports using a device’s name, DNS name, CoreDevice identifier, UDID, serial number, or ECID. (123703862)
• Core Device has improved error reporting when an app fails to launch. (123922504)Resolved Issues
• Fixed: Xcode no longer changes the currently selected run destination implicitly when there is a transient loss of connectivity to the device. Xcode will keep the disconnected device selected with an indicator of its disconnected status. (38378613)
• Fixed: Improved error reporting when we fail to enable DDI services on a device. (114012346) (FB12987859)
• Fixed: Xcode no longer keeps an active connection to AppleTVs discovered in the local area network. Xcode will only connect on demand to a device on the local area network when the user attempts to interact with the device in the Devices and Simulators Window, Build & Run to the device, or use a Debugger feature on the device. This change in behavior only applies to devices running tvOS 17 or newer. (115668388)
• Fixed: The process launch time of the devicectl command line tool has been improved. (119057359)
• Fixed an issue where the Xcode Devices and Simulators Window shows outdated information when the user attempts to pair with a device for development. (123271553)
• Fixed: When Xcode fails to install an application to a connected device, it presents improved error messages and recovery suggestions for common causes along with documentation about codesigning. (123533550)
• Fixed: Pairing the same device again may cause the device to appear in the “Disconnected” section of the Device and Simulator Window. (131072881)
• Fixed: When targeting an Apple Watch (or simulator) that is in Nightstand Mode, Xcode will fail to launch the application with an “application failed to launch” error. (134250531) (FB14855711)Known Issues
• Xcode is sometimes unable to determine if developer mode is enabled when using a device over the network. (131662031) (FB14298506)
Workaround:
Connect the device directly to the Mac using a USBC or Lightning cable, then place the device in airplane mode to force Xcode to use the deivce over the wired connection. Once Xcode is successfully using the device over the wired connection, you can turn airplane mode back on, and Xcode will continue to use the wired connection.
• If Xcode is unable to determine the state of developer mode on a device, it will report that developer mode is disabled, possibly leading to confusion if developer mode is actually enabled. (133418906)Documentation
New Features
• Swift-DocC has the ability to combine overloaded methods when --enable-experimental-overloaded-symbol-presentation is added to “Other DocC Flags” (OTHER_DOCC_FLAGS). (38183676)
• Write documentation links to on-page headings and topic sections using <doc:Some Page#Some-heading-title> (78908451)
• Swift-DocC now supports writing and building documentation for C++ APIs. (117904434)
• Swift-DocC now warns about documentation for parameters and return values that doesn’t exist for that documented API. (118739612)Resolved Issues
• Fixed: Documentation extension files no longer require unique file names. (117174884)
• Fixed: Documentation extension files for symbols with Swift and Objective-C representations can now use either language representation’s spelling for relative symbol links. (120380627)
• Fixed: Objective-C symbols with language refined representations in Swift now display distinct documentation hierarchies for Swift and Objective-C. (122300247) (FB13585944)Foundation
Resolved Issues
• Fixed: If meeting both of the following scenarios, your app may crash on launch on platforms earlier than the latest versions of the respective OS with errors indicating missing symbols in NSDecimal:
• You use any of the following NSDecimal functions in Swift
• You release an app compiled with Xcode 16, and the app runs on an OS version earlier than macOS 15.0, iOS 18.0, tvOS 18.0, watchOS 11.0, or visionOS 2.0
Your app may also fail to compile if you use NSDecimal String(:: ) in the app.
Note: This does not affect apps calling these functions from Objective-C or apps running on the latest versions of the respective OS. (133371820) (FB14696453)Instruments
New Features
• ‘Flatten Recursion’ feature in the new call tree detects and collapses cases of indirect recursion. (6823780) (FB5940449)
• Recording options for a document and Instruments are now available directly in the document window when starting from a template. Subsequent runs can be reconfigured using ‘Next Recording’ button available in the runs sidebar. (40923253)
• ‘Data Mining’ popover in the new call tree has been redesigned, optimizing for adding more functions and displaying longer symbol names. (61782150)
• Custom Instruments: element can now be used to create aggregation of os-log and os-signpost backtraces. (66603961)
• Instruments document window has a new sidebar that gives access and overview of all runs in the document. Runs in the sidebar can be renamed and removed using context menu actions.
(103073589)
• Runs in the trace document now store its zoom level and scroll position separately, making it easy to switch between them and preserve visualization context.
(108528537)
• Improved the performance of heap , leaks , the Leaks instrument, and the Xcode memory graph debugger when analyzing processes which heavily use Swift. (111248508)
• ⌘. shortcut can now be used to stop a trace recording. (113574234)
• The flame graph is a new alternate visualization mode in the new call tree. Zooming in shows lower-weighted functions, and hovering along the ruler at the top displays tooltips down the entire stack. (115313793)
• The new call tree enhances user responsiveness and provides progress bar feedback during longer running computations. (122577386)
• heap , leaks , the Leaks instrument, and the Xcode memory graph debugger now label untyped allocations pointed to by stored properties of Swift types for easier identification. (127317183)Resolved Issues
• Fixed a sporadic crash happening when recording trace with the ‘Allocations’ Instrument. (27975091)
• Fixed an issue where Instruments would show an error saying ‘Required kernel recording resources are in use by another document’ and prevent further recordings in the same document. (93788278)
• Fixed an issue where libraries would be missing symbolication information when recording in a windowed mode. (114650647)
• Fixed a crash happening when recording using ‘Animation Hitches’ template. (114715443)
• Fixed: Eliminated application hangs when using filter bar in the ‘Symbols’ window. (118244818)
• Fixed: Upon importing a file into Instruments, timeline is now automatically sized to fit the entire trace. (118467393)
• Fixed an issue where Instruments wouldn’t respect ‘Working Directory’ override when launching applications on a macOS platform. (123194792) (FB13631596)
• Fixed an issue where tracks in the main and pinned timeline could appear selected at the same time. (125189186)Known Issues
• UI State of the new call tree is not being saved in trace documents. (113659508)
• When “Focus on Subtree” is used in the new call tree to focus a node, subsequent function applications are not possible. (116369374)
Workaround:
To apply functions again, remove all currently focused nodes using control in the “Jump Bar”.
• “Top Functions” view is not available in the new call tree. (123702178)
• Legacy call tree is still used in the following Instruments: Allocations, Leaks, CPU Counters when using arithmetic formulas, Sample Importer. (124118051)
• Xcode Debugger fails to capture memory graph from processes running in watchOS Rosetta Simulator destinations. (132023793)Deprecations
• ‘Always use deferred mode’ option has been removed from Instruments. To record in deferred mode, use custom templates mechanism. (120497357)Interface Builder
Deprecations
• @IBDesignable views are deprecated and will no longer be rendered in the Interface Builder canvas. (115873872)Linking
New Features
• dyld_info gained support for code disassembly (-disassemble) and an improved Objective-C metadata inspection (-objc). (65914062)
• A new code deduplication algorithm brings additional code size savings and an improved static link time performance. It is enabled by default in release builds. (125995452)Resolved Issues
• Fixed: A branch out of range errors in large binaries have been resolved with an improved branch island generation. (117077862) (FB13282296)Deprecations
• -ld_classic linker option is deprecated and will be removed in a future release. (128502299)Localization
New Features
• The String Catalog filter bar now supports more complex search criteria such as “Begins With” and “Does Not Contain”. It also supports filtering by specific translation states. (82717148) (FB9594524)
• You can now mark strings in a String Catalog as not to be translated via “Mark as “Don’t Translate”” in the context menu. When such strings are exported via Product > “Export Localizations”, they will be marked with the translate=no attribute in the XLIFF file. This feature may be useful for strings that are still being iterated on and are not ready to be translated. The String Catalog editor prevents translation of strings marked as “Don’t Translate”. (89342670)
• You can now filter for specific string tables or directory names in the Localization Catalog editor sidebar. This also works for language names in String Catalogs. (90328598)
• Comments can now be added to String Catalogs for strings that did not already specify a comment in source code. (102872845)
• Columns in the String Catalog editor can now be hidden via the context menu on the column headers. (104674245)
• The String Catalog editor now supports showing inline warnings and errors for various issues with strings or their variation structures. Some issues will also display with Fix-Its to quickly fix the problem automatically. (110193206)
• Errors and warnings are now emitted by the String Catalog editor when format specifier types in a translation conflict with those in the source string. For example, an error would be produced if “%@” was changed to “%lld” for the same argument number in a translation. Issues are also produced when a single string contains conflicting format specifiers or a mixture of numbered and unnumbered variables. For example, both “The %1$@ crossed the %1$lld” and “The %1$@ crossed the %lld” are incorrect and would be diagnosed. (110196313)
• You can now jump from an entry in a String Catalog to the usages of that string in source code. To quickly jump to a string usage, click the jump arrow that appears when hovering over a key or choose “Jump to Source” from the Editor menu. To see a list of all discovered usages, see the Attributes Inspector. (111711007)
• The Source Editor now supports jumping to the String Catalog that contains translations for the selected string literal. This is available via “Jump to String Catalog” in the context menu or via the same shortcuts as Jump to Definition. (111711244)
• The Localization Catalog editor now displays a “Don’t Translate” badge next to strings marked translate=no in the XLIFF file. (123834701)
• The String Catalog editor now supports showing the source code referencing the selected string key in the assistant editor. (125265332)
• Warnings are now emitted by the String Catalog editor for stale strings. Fix-Its are provided to remove the string if you no longer need it or to manage manually if you’d like to keep it around. (125992742)
• Tooltips in String Catalogs now provide insight into why a particular string cannot be edited. (129254023)Resolved Issues
• Fixed: When exporting localizations, Sticker Packs now treat accessibility labels as localizable. File names are no longer considered localizable. (43449067)
• Fixed: Xcode no longer extracts strings from SwiftUI Previews for localization. Such strings will no longer be extracted to String Catalogs or included by Product > Export Localizations. (75628856)
• Fixed: Significantly improved the performance of importing localizations into large projects or workspaces via Product > “Import Localizations” or via xcodebuild -import Localizations . (90510590)
• Fixed: When exporting or importing localizations, Swift Packages now only build for the platforms supported by clients within the workspace. Top-level packages within the workspace will build for platforms with custom deployment targets via the platforms field in the Manifest file, or macOS if no platforms have overridden deployment targets. (94611040) (FB10094909)
• Fixed: Clicking a build error or warning emitted about a String Catalog now takes you to the problematic string when clicked. (105166406)
• Fixed: Xcode no longer extracts known template strings from Interface Builder files to String Catalogs. An example would be the generic “Table View Cell” string. (105301878)
• Fixed: Text replacements defined in System Settings are now supported in the String Catalog editor. (107765948)
• Fixed more instances where String Catalogs would not detect a string that was removed from source code. (108864739)
• Fixed: Filter text, selection, and expansion state are now preserved when switching languages in the String Catalog editor. (110973472) (FB12383661)
• Fixed: Xcode 16 now uses xcstringstool instead of genstrings for discovering NSLocalizedString and similar legacy APIs that do not support extraction via the Swift compiler. This improves the reliability of string extraction in a number of instances in both Swift and C-family languages, including:
• Swift unicode escape sequences are now understood inside NSLocalizedString and sibling APIs. (20886479) (FB9810924)
• Padding and decimal precision information in format specifiers are now preserved when adding argument positionals. (FB5482238)
• String literals embedded in sub-expressions are no longer extracted. For example, no strings will be extracted from NSLocalizedString(myFunction(@"substring"), @"comment") (70008199)
• Empty string keys are now supported via NSLocalizedString. (85523152)
• Explicitly-escaped quotation marks in Swift multi-line string literals are now properly supported. (86601019)
• Strings will never be extracted from SwiftUI API in code comments. (33320518) (111709535)
• Fixed: Xcode now sets the SWIFT_EMIT_LOC_STRINGS build setting to YES to enable compiler-based string extraction at the project level when adding a new String Catalog or migrating a .strings or .stringsdict file, as long as this setting was not already overridden to NO. Xcode would previously do this at the target level and only upon migration. (114116199)
• Fixed: Marking an untranslated string for review or as reviewed will now use the source string as the translation. To use an empty string instead, hold down option to reveal alternate menu options. (117266728) (FB13291503)
• Fixed: String Catalogs will now also be updated when building for testing. (118902862)
• Fixed an issue in the String Catalog editor that could have prevented varied strings from being edited when the default value was specified in source code. (122470742) (FB13594100)
• Fixed an issue where the context menu in String Catalog Editor may apply to the wrong row when a different row is selected. (124500442)
• Fixed: Refined keyboard navigation within a String Catalog. ⌘↑ and ⌘↓/⏎ move vertically up and down rows within a column, while ⇥ and ⇧⇥ move horizontally through rows. (125435426)
• Fixed an issue where Xcode or xcodebuild could emit empty .strings files to /tmp during various localization operations. (126644251)
• Fixed an issue where .strings and .stringsdict files would no longer be deleted from disk after migration to .xcstrings. (129936269)
• Fixed: LOCALIZED_STRING_MACRO_NAMES now once again supports referring to property wrappers. (130446922) (FB14041161)
• Fixed: Resolved a long hang that could occur when loading and interacting with large String Catalogs. (130619985)
• Fixed an error “No “original” attribute provided for strings from table” that could occur when exporting localizations. (131190361) (FB14207838)
• Fixed: Xcode now remembers column visibility settings in String Catalog editor. Use the context menu on the string table header to adjust column visibility. (131930622)Deprecations
• As of Xcode 16, the genstrings command-line tool is considered deprecated. String Catalogs in Xcode provide a way to automatically aggregate localizable strings from source code using the Swift compiler and other technologies. If you still need to find basic usages of NSLocalizedString in Swift and C-family source code outside the context of String Catalogs and without using the compiler, you can use the xcstringstool utility instead. The following invocation would extract NSLocalizedString and similar API from the input source files and generate a .strings file, similar to genstrings:
xcrun xcstringstool extract --legacy-localizable-strings -o --output-format strings
(102887793)Lock Screen
Resolved Issues
• Fixed: Lock Screen Quick Action buttons might disappear. (128096099)LockedCameraCapture
Resolved Issues
• Fixed: Capture Extensions are unable to fetch previously captured assets from PhotoKit when unlocked (123529801)
• Fixed: Device may lock when recording video (123639753)
• Fixed: When LockedCameraCapture’s openApplication API is called, the app’s CameraCaptureIntent is also called. (126696751)
• Fixed: Keyboards are unresponsive in Capture Extensions (128563059)
• Fixed: Capture Extensions with limited photo library access are unable to load asset resources from PhotoKit (128646538)
• Fixed: HEIC/HEVC photos will show up as black in Capture Extensions. (129292977)
• Fixed: Dictation does not work in Capture Extensions (130017435)
• Fixed: Launching Capture Extensions may also concurrently prompt to open the app. (130313693)
• Fixed: Capture Extensions may crash with false “Camera not actively used” termination reason, including during extension to app transitions. (130846437)Known Issues
• Logging does not appear in Xcode when debugging Capture Extensions when using “Attach to Process”. (129785280)
Workaround:
Use “Attach to Process by PID or Name” in Xcode to debug Capture Extensions.
• Apps launched via Lock Screen Quick Action buttons will not run the CameraCaptureIntent perform function. (133404039)
• Capture Extensions or apps launched via CameraCaptureIntent may erroneously crash with “AVCaptureEventInteraction not installed” reason (133578610)Memory Tools
Resolved Issues
• Fixed: When running on beta 5 of macOS 15 Sequoia, iOS 18, or aligned OS builds, memory tools like Xcode’s Memory Graph Debugger and Instruments’ Leaks template, may fail unexpectedly or crash. This includes the command-line tools leaks , heap , vmmap , and malloc_history when run against live macOS or Simulator processes. (132747700)Metal Debugger
New Features
• The Metal Debugger now supports capturing a macOS app by pressing a keyboard shortcut. (48403037)
• The Xcode metal debugger adds support for metal-shaderconverter enabling source-level shader validation, debugging, and profiling for HLSL shaders (116155434)Metal offline compiler
Resolved Issues
• Fixed: Building GPU binaries using metal-tt with deployment targets prior to iOS 18 and macOS 15 has undefined behavior and can result in incorrect compilation or a crash (129366607)MPS Graph Viewer
New Features
• Xcode can now open MPS Graph packages. The new MPS Graph viewer let’s you inspect your pre-trained machine learning networks and visualize how they would be executed on Apple Silicon. (116472862)Playgrounds
Resolved Issues
• Fixed: Xcode Playgrounds may compile code with Swift language version 5 even when the playground is configured to language version 6. (128711228)
• Fixed: Users may be unable to add files to a Playground. (131866503)Previews
New Features
• Xcode 16 brings a new execution engine for Previews that supports a larger range of projects and configurations. Now with shared build products between Build and Run and Previews, switching between the two is instant. Performance between edits in the source code is also improved for many projects, with increases up to 30%. (37353090)
• Previews now support previewing views inside of static libraries. (50492391)
• Preview Modifier is a new preview API for defining and applying reusable work between previews. Preview modifier can use an async and throwing initializer to load data, for example. Then in a separate call that data can be applied to any preview with that modifier. This makes it easier to load and apply data when using patterns like SwiftData, for example. (108233218)
• @Previewable is a new macro that can be applied to any SwiftUI property wrapper so it can be used directly inside of a #Preview without needing to define an intermediate wrapper view. This is especially common for the use of @State , which can now be written as @Previewable @State var myState = directly inside of the #Preview . (110570957) (FB12298419)Resolved Issues
• Fixed: Previews now support previewing inside of bundle targets (51419685)
• Fixed: Previewing inside of files with methods of types nested in extensions no longer fails. (74739568) (FB9019661)
• Fixed: Previews now work with targets that have platform filters applied, including in packages. (83077196)
• Fixed: Previews now provides non-crash errors faster. (110123477)
• Fixed: Previews now builds the exact same targets and with the same configuration as build and run, for example test targets are no longer built if only included in the test action. (113656160)
• Fixed an issue when previewing to a physical phone when the phone has a paired watch. (113893496) (FB12965086)
• Fixed: Previews no longer fail when previewing static functions with inout parameters. (116098246)
• Fixed: Previews no longer fail when previewing functions that contain keyword escapes via backticks. (117967670) (FB13338319)
• Fixed: When previewing for macOS, previews forwards more text editing commands to the UI under preview instead of sending them to Xcode, for example Command-Delete, allowing for a wider range of keyboard shortcut testing. (118245789)
• Fixed: Selectable preview mode will not allow for selecting individual views. (119504914)
• Fixed an issue with an intermittent error appearing in the canvas when switching between files. (121353412)
• Fixed: Selection is not working for Xcode previews targeting visionOS. (121870481)
• Fixed an issue when preivewing apps that need to run under Rosetta. (122317524)
• Fixed warnings when using strict concurrency in Swift, and generated symbols from Asset Catalogs. (122467732) (FB13593895)
• Fixed: Some large or complex projects may fail to build and run if they are scanning for specific Mach-O sections in their binaries. (123416939)
• Fixed an issue when previewing a local package that imports another local package. (123798299) (FB13664021)
• Fixed: #Preview now takes a @ViewBuilder for SwiftUI so return is no longer needed in the #Preview body. This only applies to previews of SwiftUI content, not to previews of AppKit or UIKit content which continue to be non-builder closures. (123866442)
• Fixed: Better support for multi-platform applications. (124202250) (FB13678152)
• Fixed issues around project names that contain special characters. (125490102) (FB13699939)
• Fixed an issue where previews would not cancel inflight workspace builds when making code changes. (126081025) (FB13715222)
• Fixed: Significantly improved performance of previewing in large projects. (129167645)
• Fixed an issue where previews could fail in targets that use an xcframework. (129592247) (FB13841857)
• Fixed: Previews may fail the first time you open a project that uses non-system macros. (129604770)
• Fixed an issue where previews was incorrectly applying platform filters. (129862695)Project Management
New Features
• Xcode 16 introduces several new streamlined file creation workflows. Use “New Empty File” from the Project Navigator’s context menu to quickly create a new Swift file without any confirmation dialogs. Use Copy, Paste, and Duplicate from the Edit menu to create a new file from an existing file. Finally, you can cut text from the Source Editor, and then use the “New File from Clipboard” command while holding the option key in the Project Navigator’s context menu to quickly extract part of a source file into a new file. (96547991)
• The Xcode target editor now only shows major OS versions in the list of suggested deployment target versions. (118566415)
• You can now configure Supported Destinations, Bundle Identifier, Version and Build numbers, and several other attributes for all supported target types in the Xcode project editor, including frameworks, app extensions, watchOS apps, and more. (122243197)
• Minimize project file changes, and avoid version control conflicts with buildable folder references.
Convert an existing group to a buildable folder with the “Convert to Folder” context menu item in the Project Navigator. Buildable folders only record the folder path into the project file without enumerating the contained files. This minimizes diffs to the project when files are added and removed, and avoids source control conflicts with your team.
To use a folder as an opaque copiable resource, the default behavior before Xcode 16, uncheck the “Build Folder Contents” option in the File Inspector. (123729918)
• The Project Navigator now defaults to creating groups with associated folders when using the “New Group” and “New Group from Selection” commands. To create a group without a folder, hold option in the context menu to reveal the “New Group without Folder” variant of the command. (127396845)Resolved Issues
• Fixed: The new xcodebuild flag of -package Authorization Provider keychain|netrc can now be used to force usage of keychain or netrc as the authorizaion provider. This improves Xcode’s package registry support. (118898849)
• Fixed: Xcode projects once again support package dependencies on packages in the same directory or a parent path. This support had been temporarily removed because it could cause Xcode to crash. (126308647)Project Navigator
Resolved Issues
• Fixed: The Swift Migrator (Edit > Convert > To Current Swift Syntax) has been removed. For more information, see Migrating to Swift 6 . (123486127)
• Fixed: xcodebuild now validates the format version number of Xcode projects for compatibility when performing builds. (125385745)Quick Actions
New Features
• Quick Actions now supports semantic search, which provides results that match the intent of a query without needing to exactly match the text. (119402784)
• Quick Actions now displays enhanced result descriptions for certain actions. (123842506)
• Quick Actions now supports acronym search e.g. the query “nef” matches the action “New > Empty File”. (124293396)Resolved Issues
• Fixed an issue where Quick Actions wouldn’t include results for certain menu items until the containing menus were manually opened. (123789065)Reality Composer Pro
New Features
• Timelines allows you to sequence actions to be executed in a particular order or at a particular time. Reality Composer Pro makes it easy to edit and configure those actions on a timeline and then initate the timeline to play based on a trigger. (75589529)
• You can now use VirtualEnvironmentProbeComponent to control the lightning of your virtual environment. (117770245)
• You can now create a docking region for the video playback area. You can use a built-in video to preview the surface reflections, or supply your own video asset. Reflection_Diffuse and Reflection_Specular allow you to fine-tune how the video stream is reflected in your scene. (117926001)
• You can control the audio properties of an immersive environment using Revert Component . (118421316)
• The number of texcoords has been extended from 2 to 8. The 6 new buffers support float2 , float3 and float4 data. The first 2 buffers continue to support only float2 data. (123364636)Resolved Issues
• Fixed: Modifying animation action parameters may result in actions overlapping with other actions on the same animation track. (124014280)
• Fixed: Using the option Convert Variants to Configurations may results in a compilation failure of Reality Composer Pro projects. (125624179)
• Fixed: Dragging an animation clip from an Animation Library component to a Timeline will result in the Play Animation action having an incorrect duration of 1 second. (127395965)
• Fixed: A Notification Action will not cause a Notification Trigger to fire, even if they use the same String value.
Update to use the new property name, RealityKit.NotificationTrigger.Identifier, to be able to observe a Notification posted by a NotificationAction in your Reality Composer Pro Timeline. The identifier you provide in your Reality Composer Pro Timeline NotificationAction will be delivered in the Notification’s userInfo under the key NotificationAction.identifierKey. (127825336)
• Fixed: No warning is shown in cases where a Replace Behavior action is targeting an entity without a Behavior Component (128011054)
• Fixed: Using HDR format video for docking region preview video fails to play and provides no errors. (impacts preview only) (128098120)
• Fixed: Selecting an action with a target entity and then clearing the target automatically puts the user in target selection mode. (128187376)
• Fixed: On some machines with Intel-integrated GPUs Reality Composer Pro and Xcode’s RealityKit Inspector may exhibit image corruption. (128230028)
• Fixed: Viewport rotation slider does not affect the rendering of the environment. (128497583)
• Fixed: A menu option under File > Developer Capture may not be visible when Reality Composer Pro is running without any documents open. (128507720)
• Fixed: When selecting targets for animation actions, objects may lose its material settings. (128865110)
• Fixed: Adding multiple audio resources with the same name to an Audio Library Component may cause Reality Composer Pro to crash. (129223668)
• Fixed: Nested Timelines do not loop infinitely. (129304213)
• Fixed: The Reverb Component has changed and will not apply a reverb effect until you reselect your previous reverb using Reality Composer Pro and re-deploy your project to your Apple Vision Pro. (129951626)Known Issues
Original source Report a problem
• Authoring light spill is not supported on Intel Macs. (124170457)
• Grounding shadow may be visible on the groun - April 2026
- No date parsed from source.
- First seen by Releasebot:Apr 15, 2026
Xcode 16.1 Release Notes
Xcode 16.1 ships new SDKs for Apple platforms, adds broader on-device debugging support, and improves simulator runtime management with xcodebuild updates. It also brings a long list of fixes for previews, Swift Testing, Interface Builder, screen recordings, and device-related issues.
Xcode 16.1 includes SDKs for iOS 18.1, iPadOS 18.1, tvOS 18.1, watchOS 11.1, macOS Sequoia 15.1, and visionOS 2.1. The Xcode 16.1 release supports on-device debugging in iOS 15 and later, tvOS 15 and later, watchOS 7 and later, and visionOS. Xcode 16.1 requires a Mac running macOS Sonoma 14.5 or later.
Fixed: Users that upgrade to Xcode 16 after having previously installed Xcode 16 Beta 6 or Xcode 16 RC may experience Developer Disk Image mounting errors when using iPhone 16 or Apple Watch Series 10 devices. (136364979) (FB15189777)
The simulator runtimes are currently available on the Apple Developer website, but will no longer be posted through the website in future updates. Please use xcodebuild -downloadPlatform -exportPath command to download the runtime and then xcodebuild -importPlatform <path/simruntime.dmg> to install it. For more details, see Installing and managing Simulator runtimes. (133776444)
Fixed: Some iOS apps built with Xcode 16.1 beta may have their watchOS apps uninstall or fail to launch with an error about needing an iPhone App when one already exists. (135527507)
Fixed: Launching app via Camera Control button without Camera permission can result in completely black unlock screen (133409619)
Fixed: Installing an app with a Capture Extension while another Camera Control app is already selected might cause a momentary system crash. (135021680)
Xcodebuild’s download platforms command now supports an optional -buildVersion argument to request a specific released simulator runtime. The can be a build update number or the release number. Simulator runtime version that are supported versions are iOS 16.0+, watchOS 9.0+, tvOS 16+, visionOS 1.0+.
Example usage, to download, install and export the iOS 16.0 simulator runtime:
xcodebuild -downloadPlatform iOS -buildVersion 16.0 -exportPath ./SimRuntimeImages/ xcodebuild -downloadPlatform iOS -buildVersion 20A360 -exportPath ./SimRuntimeImages/(135989441) (FB15126412)
Fixed: New and existing trait variations targeting 42mm watches are only applied on Series 10. Functionality to target Series 3 or older watches is missing. (136342368) (FB15185073)
Custom app fonts may fail to be listed at the top of the custom fonts list in the Interface Builder inspector. (100908086) (FB11662082)
Workaround: Restarting Xcode will force this list to be recreated.
IBInspectable properties are no longer accessible in Interface Builder. Current values in IB Documents are still compiled into the NIBs and used at runtime. (135140474) (FB15011501)
Fixed: Resolved a hang that could occur in the String Catalog Editor shortly after opening the file or building the project. (134611283) (FB14906651)
Logging does not appear in Xcode when debugging Capture Extensions when using “Attach to Process”. (129785280)
Workaround: Use “Attach to Process by PID or Name” in Xcode to debug Capture Extensions.
Fixed: Previews could have failed when specifying “@” relative paths in linker arguments. (127267024)
Fixed: Some complex projects would time out when trying to launch a Preview. (133734391) (FB14777005)
Fixed: Previews could fail to find frameworks used by static libraries built with libtool. (133937490) (FB14810092)
Fixed: Previews would periodically fail with PreviewShell crash reports during preview teardown. (136227462)
On Simulator.app launch with visionOS device, “Simulated Scenes” Control for visionOS can be disabled (136714857)
Workaround: Device Restart or Simulator.app restart
Fixed: Screen recordings will not be available when running UI tests using a scheme with a space in its name, or when producing an .xcresult bundle with a space in its path. (122016656)
Fixed: Expectation checking in Swift Testing is significantly slower than expected. (133517028)
Fixed: Workflows using Swift Testing against Mac Catalyst run destinations will crash on macOS 14.X or below. (133854987)
Fixed: Using await confirmation {} or await with Known Issue {} with an actor-isolated closure fails to compile. (134375046)
Original source Report a problem