Code Editors and IDEs Release Notes
Release notes for code editors and integrated development environments
Products (6)
Latest Code Editors and IDEs Updates
- April 2026
- No date parsed from source.
- First seen by Releasebot:Apr 17, 2026
Xcode 26.4.1 Release Notes
Xcode ships 26.4.1 with Swift 6.3 and updated SDKs for iOS, iPadOS, tvOS, macOS, and visionOS. It adds broader on-device debugging support and fixes MetricKit crashes plus Swift compiler stack-allocation bugs in async functions.
Update your apps to use new features, and test your apps against API changes.
Overview
Xcode 26.4.1 includes Swift 6.3 and SDKs for iOS 26.4, iPadOS 26.4, tvOS 26.4, macOS 26.4, and visionOS 26.4. Xcode 26.4.1 supports on-device debugging in iOS 15 and later, tvOS 15 and later, watchOS 8 and later, and visionOS. Xcode 26.4.1 requires a Mac running macOS Tahoe 26.2 or later.
MetricKit
Resolved Issues
- Fixed crash for MetricKit apps built with Xcode 26.4 due to missing symbols when running on iOS, macOS, and visionOS versions below 26.4. Please rebuild your app with the updated Xcode to resolve the issue. (173827073) (FB22384135)
Swift Compiler
Resolved Issues
- Fixed stack-allocation bugs in async functions that caused “freed pointer was not the last allocation” crashes, particularly in swift_asyncLet_finish. These long-standing issues became more frequent in Swift 6.2 and 6.3 due to optimizer improvements. (173974857)
- Apr 17, 2026
- Date parsed from source:Apr 17, 2026
- First seen by Releasebot:Feb 5, 2026
- Modified by Releasebot:Apr 18, 2026
Bug Fixes and Improvements
Windsurf improves performance with various bug fixes and reliability updates.
- Various bug fixes and performance improvements
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 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)
- 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
• 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 - 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
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.