---
title: Xcode 27 Beta Release Notes
framework: xcode-release-notes
role: article
role_heading: Article
path: xcode-release-notes/xcode-27-release-notes
---

# Xcode 27 Beta Release Notes

Update your apps to use new features, and test your apps against API changes.

## Overview

Overview Xcode 27 beta includes Swift 6.4 and SDKs for iOS 27, iPadOS 27, tvOS 27, macOS 27, and visionOS 27. Xcode 27 beta supports on-device debugging in iOS 17 and later, tvOS 17 and later, watchOS 10 and later, and visionOS. Xcode 27 beta requires a Mac running macOS Tahoe 26.4 or later. General Resolved Issues Fixed: The scheme action toolbar button now treats ‘without building’ variants, obtained by holding the Control key, as a one-shot operation and reverts to the normal build-then-perform action when no modifiers are used.  (12239704) Known Issues When streaming stdout and stderr from multiple processes at the same time (for example: in parallel testing scenarios), the results may be significantly delayed.  (165098287) Due to a timing issue with the installation package, Simulator devices may not appear in Device Hub.  (179040327) (FB22978070) Workaround: Reboot or killall –9 CoreDeviceService. Address Sanitizer Known Issues Address Sanitizer might fail to launch on iOS 27.0, tvOS 27.0, watchOS 27.0, and visionOS 27.0 when building with Xcode 26.4 or older.  (178072780) Workaround: Use Xcode 26.5 or later when testing applications with Address Sanitizer. App Intents Known Issues Siri might generate unexpected responses when attempting to trigger an AppShortcut phrase with an App enum value.  (174869053) Apple Clang Compiler New Features You can now annotate C++ operators declared within classes using API Notes. For example:  Tags:  - Name: MyTag    Methods:    - Name: operator+      Availability: none (148534260) Background Assets New Features Asset-pack manifests now support path wildcards, file exclusion, hard-coded source roots, and custom destination subpaths.  (163943159) You can reduce your app’s storage usage with localized asset packs. The system delivers the appropriately localized asset packs based on the user’s preferred languages.  (163944365) Use the new Steam Asset Converter to convert your Steam “depots” into asset packs.  (163953178) Known Issues There is an issue with Xcode serving asset packs to your app while debugging when setting a Background Asset Packs folder in the Run scheme action’s Options tab  (165230494) Workaround: Use existing Background Assets Mock Server. C++ Standard Library New Features The following C++ papers have been implemented: Hashing support for std::chrono value classes (P2592R3) zip (P2321R2) std::optional<T&> (P2988R12) sub-string_view from string (P3044R2) Making std::istream::ignore less surprising (P3223R2) Add std::views::indices(n) (P3060R3) Move-only types for equality_comparable_with, totally_ordered_with, and three_way_comparable_with (P2404R3) Checking if a union alternative is active (P2641R4(std::is_within_lifetime)) Expose std::atomic_ref’s object address (P2835R7) Comparisons for reference_wrapper (P2944R3) Give std::optional Range Support (guarded by -fexperimental-library) (P3168R2) Fixes to flat_map and flat_set (P3567R2) Make optional<T&> trivially copyable (P3836R2) Library Support for Expansion Statements (P1789R3) Performance improvements: The performance of associative and unordered containers has been significantly improved, with some functions showing improvement of up to 11x. The performance of many algorithms has been improved (including std::find, std::for_each|ranges::for_each for associative containers, std::rotate), resulting in a performance improvement of up to 3x. {std,ranges}::{generate, generate_n}, {std,ranges}::{fill, fill_n} and {std,ranges}::distance have been specifically optimized for segmented iterators, resulting in a performance improvement of up to 10x (and even up to 1600x for distance on non-random-access iterators). std::search_n for random access iterators now tries to skip elements, resulting in a significant performance improvement (up to 70,000x in contrived cases). The vector<bool>::reserve() algorithm has been optimized, resulting in a performance improvement of up to 2x. num_get::do_get integral overloads have been optimized, resulting in a performance improvement of up to 2.8x. Some reallocations are now avoided in std::filesystem::path::lexically_relative, resulting in a performance improvement of up to 1.7x. ofstream::write now passes large strings to system calls directly instead of copying them in chunks into a buffer. Miscellaneous improvements: Multiple internal types have been refactored to use [[no_unique_address]], resulting in faster compile times and reduced debug information. std::align is now an inline function, which allows the compiler to better optimize calls to it. std::atomic::wait has been refactored to accept more types to use platform native wait functions directly. This is guarded behind the ABI Macro _LIBCPP_ABI_ATOMIC_WAIT_NATIVE_BY_SIZE.  (178191000) Deprecations The following items have been deprecated or removed: The minimum supported deployment target on macOS has been increased to 11.0. Potentially breaking changes: The algorithm for multi{map,set}::find has been modified so that it doesn’t necessarily return an iterator to the first equal element in the container. This was never guaranteed by the Standard, but libc++ previously happened to always return the first equal element. Starting with this release, code relying on the first element being returned from find will be broken, and lower_bound or equal_range should be used instead. The algorithms for std::{map,set} lower_bound and upper_bound operations were modified so that their result changed for comparators that are not a strict weak order. Being a strict weak order was always a requirement of the Standard and still is, however in this release libc++ changes the behavior of std::{map,set} for such comparators. Since this may be tricky to work around in some cases, an escape hatch is provided in this release: defining _LIBCPP_ENABLE_LEGACY_TREE_LOWER_UPPER_BOUND will revert to the historical implementation of these operations. That escape hatch will be removed in an upcoming release (likely in the next release). The ABI flag _LIBCPP_ABI_NO_REVERSE_ITERATOR_SECOND_MEMBER has been split off from _LIBCPP_ABI_NO_ITERATOR_BASES. If you are using this flag and require ABI stability, you should set _LIBCPP_ABI_NO_REVERSE_ITERATOR_SECOND_MEMBER as well. ABI-affecting changes: The ABI flag _LIBCPP_ABI_NO_REVERSE_ITERATOR_SECOND_MEMBER has been split off from _LIBCPP_ABI_NO_ITERATOR_BASES. If you are using this flag and require ABI stability, you should set _LIBCPP_ABI_NO_REVERSE_ITERATOR_SECOND_MEMBER as well. The internal types __map_value_compare, __unordered_map_hasher, __unordered_map_equal, __hash_map_hasher and __hash_map_equal have been refactored to use _LIBCPP_COMPRESSED_ELEMENT instead of potentially inheriting from the types they wrap. At this point in time we are not aware of any ABI changes caused by this. ranges::iota_view is now aware of __int128. This causes iota_view::difference_type to change from long long to __int128 in some cases. std::allocator is now trivially default-constructible. The behaviour can be reverted by defining _LIBCPP_DEPRECATED_ABI_NON_TRIVIAL_ALLOCATOR. This compatibility macro is going to be removed in an upcoming release. bitset::operator[] now returns bool, making libc++ conform to the Standard. The behaviour can be reverted by defining _LIBCPP_DEPRECATED_ABI_BITSET_CONST_SUBSCRIPT_RETURN_REF. This compatibility macro is going to be removed in an upcoming release.  (178191050) Coding Intelligence New Features Google Gemini is now available in the coding assistant.  (171990272) Planning with agents is now first class in Xcode. Plans appear as editable Markdown artifacts next to the conversation. You can use dedicated UI to review, annotate, discuss changes to the plan, and approve before the agent proceeds.  (172857081) The Coding Assistant sidebar is now dedicated to displaying and organizing your conversations with real-time status and unread indicators, drag-and-drop grouping, archiving, and renaming. See at a glance which conversations are active or waiting for user input, and jump between them without losing context. Select multiple conversations to group, archive, or delete them in bulk. The context menu allows for opening conversations in new tabs, windows, or editor panes.  (172926345) The Preview Snapshot MCP tool can now render variants such as light/dark appearance, portrait/landscape orientation, and various type size overrides. It also supports specifying timelines for Widgets and toggle states for Live Activities. Taken together, this gives agents more flexibility in how they render previews in your codebase.  (172961797) Agents can now boot simulators, install and launch apps, synthesize touch events, and capture screenshots to verify UI behavior.  (175179787) Added new MCP tools to read, plan, and edit translations in String Catalog files.  (176376425) The toolbar now has a “New Conversation” button that lets you start a fresh conversation from anywhere in Xcode. When conversations are active, it shows a status indicator for easy monitoring at a glance. Click the status indicator to jump directly to the next conversation that needs attention.  (176385678) The Xcode MCP server has been updated with new tools that allow agents to debug projects by manipulating the active run state, interacting with and reading the contents of the debugger console; listing and switching between available schemes and run destinations and inspecting and modifying build settings, compiler flags, entitlements, and Info.plist keys.  (176935844) Agents in Xcode now have access to insights about your projects, such as crashes, disk writes, energy, hangs and launch issues impacting your app, helping reduce the time it takes to ship a fix.  (177568662) The coding assistant has moved out of the navigator into the editor area, with a completely redesigned conversation transcript. Agent-generated artifacts, like code diffs, plans, and SwiftUI preview snapshots, appear alongside the transcript, and annotations on code snippets and plan documents let you give targeted inline feedback without leaving context.  (178288550) Xcode now ships with Apple-built specialists for targeted tasks, like localization, UIKit resizing and accessibility.  (178289150) Agents in Xcode can now be extended with plugins that contain skills, MCP servers, and ACP agent configurations. Skills are invokable as slash commands with completion support.  (178289210) Coding Intelligence now includes a new security layer that monitors and controls filesystem access by coding agents and any processes they spawn. This can be enabled in Coding Intelligence settings.  (178289431) Xcode adds support for the Agent Client protocol.  (178294840) Agent Plug-ins can show custom icons and tool names for MCP servers they define by adding additional _meta fields to their JSON definitions.  {    "name": "MyGreatPlugin",    "description": "An awesome MCP server configuration.",    "version": "1.0.0",    "mcpServers": {      "MyGreatMCP": {        "type": "http",        "url": "...",        "tools": [          "*"        ],        "_meta": {          "ideToolIconPath": "./icon.svg",          "ideToolIconRendersAsTemplate": true,          "ideToolTitles": {            "whoami": "Who Am I",                  "get-current-email": "Get Current Email Message"           }        }      }    }  } (178470032) Resolved Issues Fixed: Buttons in the Coding Assistant’s prompt area now use more accessible labels and descriptions.  (177462284) Fixed VoiceOver getting trapped in the Coding Assistant prompt area.  (177462397) Known Issues If the plan-mode confirmation bar (“Implement the plan?” with Yes/No buttons) appears while the agent is still streaming a response, clicking either button may trigger a new agent turn on top of the in-flight one, leaving the conversation in an inconsistent state. As a workaround, wait for the agent to finish responding before confirming or dismissing the plan.  (178673449) ACP agents added as part of agent plug-ins may not leave Xcode’s UI until relaunching Xcode.  (178771195) If a deep link targeting the new beta is invoked on a system where an older version is set as the active developer tool, the link will be claimed by the older installation rather than the beta.  (179126594) Workaround: Ensure the beta is set as the active selection via xcode-select before using the deep link. Apple-authored agent skills may not be available to Codex.  (179171480) Workaround: After using xcode-select to set Xcode 27 as your default Xcode, open a terminal and run xcrun agent skills export --replace-existing ~/Library/Developer/Xcode/CodingAssistant/codex/skills/__xcode. Console Known Issues Console may fail to scroll fully to the bottom while output is streaming.  (175800015) Core AI Known Issues The option to extract inputs from prediction events in the Core AI gauge in Xcode may not work reliably.  (172502576) The number of parameters displayed in the Core AI model view in Xcode is inaccurate for models with multiple functions that share parameters.  (177784390) When Metal API Validation is enabled, CoreAI models might fail to execute.  (177991751) Workaround: In Xcode, disable Metal API Validation. From the command line, ensure the MTL_DEBUG_LAYER environment variable is not set. Debugging New Features In projects using bridging headers, LLDB can now directly import explicitly built Swift modules and PCH from DerivedData. This can dramatically speed up the first expression or po in a debug session involving a bridging header. (168272248) LLDB now provides a language swift task tree command, which prints a tree of all the Swift Tasks the debugger knows about. For more information, see the output of help language swift task tree.  (169471480) Deprecations Resolved Issues Fixed: Xcode 27 supports running and debugging on devices that run a minimum of iOS 17, watchOS 10, tvOS 17, and visionOS 1  (162647535) Device Hub Known Issues When running parallel testing in simulators, devices may not be visible in Device Hub but are still actively running tests.  (176809181) Workaround: Disable parallelized test runs if you want to watch UI tests executing in simulators. Renaming a device in Device Hub may cut off the renaming prematurely.  (178477422) Workaround: Rename the device from Terminal with devicectl device rename or change the name via Settings>General>About on the device itself. File Template for Launch Tests New Features Added a file template for launch tests that opts into runsForEachTargetApplicationUIConfiguration, so the test runs across every combination of orientation, localization, and appearance your app supports.  (168770106) Foundation Resolved Issues Fixed: +[NSURL URLWithString:] no longer double-encodes the % of valid percent-escape sequences when encoding other invalid characters.  (161588649) (FB20439045) Icon Composer New Features Icon Composer 2.0 supports a new sharper rendering mode for upcoming 2027 operating systems with support for refractivity, outside specular, and deeper shadows. Use the group inspector to edit the new properties, and the toolbar to preview in either the new or original design generation. When your icon looks great in both design generations, add it to your Xcode project and it will be used for all OS versions.  (172404678) Instruments New Features xctrace record allows you to pass recording options for Instruments from within the CLI. Use --show-recording-options to print available options for a template or instrument as a JSON. Pass a modified JSON file with customized options using --recording-options <json path>.  (47649405) (FB5336460) Summary views in Instruments allows you to select multiple rows and copy the content.  (50558735) Instruments no longer rescales graphs to reflect the local maximum when the visible timeline region changes to simplify comparison of data across the tracks. To trigger manual rescaling to the current viewport, use View → Rescale menu item.  (60970746) Instruments now restores pinned tracks from the previous run when recording a new run. You can also save and restore pinned tracks explicitly using View → Track States menu actions.  (69098114) System Trace now unifies system calls, VM faults, and thread states into a single plot. When zoomed out, a new blending algorithm summarizes activity so dense regions remain readable. You can follow the chain of scheduling events for a thread using left/right key navigation. The inspector panel shows details about each event, providing quick actions like pinning a thread that made another thread runnable.  (163589543) Foundation Models Instrument now helps you trace and debug Foundation Models usage in your app with quick inspection of instructions, prompts, responses, token usage, and inference performance.  (164223804) A new inspector displays information about the selected event and provides quick actions for pinning or filtering tracks and filtering the detail view.  (165724281) Swift Concurrency: Tasks, Collections, Actors and Executors now have a detail option “Profile” which displays Call Tree made of profiling data captured while in state Running. This detail is only visible when recording with the Swift Concurrency instrument alongside Time Profiler or CPU Profiler.  (168542912) When recording os_log Instrument together with an Instrument that creates process or thread tracks (like Time Profiler, CPU Profiler, or others), you can now overlay logging information on these tracks by enabling “os_log” graph in the “Track Graph Display” popover.  (170113899) A new Swift Executors instrument is now available. It displays the Cooperative Thread Pool, the Main Actor, and any types conforming to TaskExecutor or SerialExecutor. Instruments properly captures and displays on iOS, iPadOS, macOS, tvOS, watchOS, visionOS 27. On older systems, executor names fall back to “Unknown executor”.  (171189428) Swift Concurrency Task tracks now appear in new “Swift Task Collection” tracks. Instruments sorts Tasks into Collections based on their name or place of creation. You can switch Collection tracks between displaying task lifetimes and task states.  (173885662) When opening files like .atrc or .logarchive, you can now specify a preferred template using ‘Settings → General → Templates for Import’  (58151217) New setting in the ‘General’ tab allows for overriding preferred template used for opening files such as .atrc or .logarchive.  (73868296) Call Tree and Top Functions tables now persist selected rows.  (120794625) Individual backtraces shown in the inspector now offer improved collapsing logic and are more consistent with the call tree’s “Heaviest Stack Trace” view.  (130279660) When a profiled process terminates, the timeline view displays a flag showing the termination reason and exit code.  (130528710) SwiftUI instrument adds a “Summary of Updates” focus action to the View Hierarchy detail view that makes it easier to see details about what updates a view in the view hierarchy is performing.  (147328805) Allocations instrument now visualizes tagged allocations when a process is running with Memory Integrity Enforcement with a ‘(tagged)’ suffix.  ‘Statistics’ view contains opt-in columns to view the count and total size of these allocations in aggregate.  (149409607) States annotated with the StateReporting API are visible in Instruments as part of the Points of Interest instrument track. Expand top level track to inspect all captured domains and state transitions.  (159709795) The SwiftUI instrument now records additional information about layout passes and the reasons a layout computation wasn’t cached.  (162137231) Animation Hitches instrument now supports visionOS on devices running visionOS 27.0 or later.  (163315840) You can now drag and drop files such as .atrc, .logarchive, or .sample onto the Instruments sidebar. This action creates a run for each of the imported files.  (167697855) The interface to enable and disable graphs on tracks in the Instruments timeline now uses checkboxes to quickly toggle graph visibility on or off.  (168232126) Swift Concurrency: When recording all processes, Tasks and Executors are now grouped in process hierarchies.  (168542643) Swift Concurrency: Selecting a bar chart interval in an Actor or Executor Queue plot now displays the list of waiting tasks in the Inspector. Tasks enqueued before the trace started aren’t displayed.  (169113107) You can now pin threads displayed in call tree views using the context menu.  (169208779) os_signpost Instrument now displays a track for each signpost name, nested below the category level in the track hierarchy.  (170272998) Swift Concurrency Tasks and Actors are now displayed even if their lifetime began before the trace. Instruments makes a best effort to display as much data as possible. Tasks now can have “Unknown” state. Tasks and Actors names may depend on order of incoming data.  (171187553) xctrace export allows you to restrict time range of an export using time-start, time-end, duration arguments.  (171320057) When you open a .tracetemplate file that isn’t saved in the Instruments user templates folder, the template is now copied into that location and subsequently accessible in the “User” tab.  (172516226) System Trace template now graphs thread priority over time to help you understand issues related to resource starvation.  (173463486) xctrace export of traces containing Allocations Instrument now contains a backtrace for each row element in the ‘Allocations List’ detail. Backtraces appear only when captured in the trace data.  (173791067) The View menu has been reordered to clarify the function of each menu item.  (177008275) Resolved Issues Fixed an issue where the Hangs instrument would flag false-positive responsiveness issues in non-UI processes like daemons.  (110146539) Fixed an issue where profiling an iOS app that was already open would close the app instead of relaunching it.  (150320702) Fixed an issue where Instruments uses significant amount of memory when importing .atrc files. The memory footprint of the application in these scenarios is on average 1.5GB smaller.  (162707266) Fixed an issue where the detail filter was not saved or restored when switching details in the Allocations, Leaks, and VM Tracker instruments.  (167717200) Fixed a performance issue where the timeline would blink or animate unnecessarily when zooming into content.  (168081396) Fixed an issue where time selection would be cleared when starting a new recording.  (172327572) Fixed an issue where the Cause & Effect graph in the SwiftUI instrument could use large amounts of memory when zoomed into a very small time range.  (172983697) (FB22288896) Fixed issues in the App Lifecycle graph: removed the inaccurate ‘Process Creation’ phase and fixed an issue where the ‘System Interface Initialization’ phase appeared twice.  (174190644) Fixed an issue where Instruments target chooser would always resolve symlinks to binaries, preventing BusyBox binary profiling from working.  (176476530) Fixed an issue where warnings and errors toolbar icon appeared clipped.  (151921162) Fixed an issue where tooltips for events would sometimes show incorrect duration when zoomed out.  (154788572) Fixed an issue where the last few libraries in the Symbols window were hidden behind the bottom bar.  (171009409) Fixed an issue where the pinned view would resize to fit its content after you had already resized it to your preferred size.  (173461626) Fixed an issue where ‘Auto Expand’ option in call tree ‘Find’ wouldn’t be enabled by default.  (174513327) Fixed an issue where Allocations instrument graph constantly rescaled when recording in the immediate mode.  (177577222) (FB22824426) Known Issues Instruments crashes when opening ‘Task Creation Calltree’ view in the ‘Swift Tasks’ instrument or ‘Change Call Trees’ view in the ‘SwiftUI’ instrument.  (178067883) Deprecations Instruments now requires target iOS, watchOS and tvOS devices with versions of at least iOS 17, watchOS 10, or tvOS 17.  (166097304) Intel Deprecation New Features Build targets with a min deployment target set to macOS 27.0 or DriverKit 27.0 will not build Universal by default. The ARCHS_STANDARD build setting will no longer include x86_64 when MACOSX_DEPLOYMENT_TARGET or DRIVERKIT_DEPLOYMENT_TARGET >= 27.0. The x86_64 architecture can be added to the ARCHS build setting if this is needed.  (161837535) Known Issues Xcode 27 will only install and run on Apple silicon Macs. The macOS SDK is still Universal for back deployment up to and including macOS 27. Intel development is still possible with macOS versions that support Rosetta like macOS 27.  (162138432) Interface Builder New Features Introducing a new Interface Builder compilation mode, toolchain, for UIKit (Cocoa Touch) based documents. Enabled by default, toolchain allows compiling IB documents without the need to download a simulator, which is especially useful for build servers. Should you experience issues during this transition period, you can opt out via the IBC_COCOATOUCH_COMPILER_MODE = simulator build setting or using --cocoatouch-compiler-mode simulator when manually invoking ibtool. If you opt out, please file Feedback and include any errors you may have received from ibtool so we can investigate.  (114401122) Known Issues Xcode Settings > Components will show no “Get” button if a simulator was previously downloaded and used with Rosetta.   (179042726) (FB22978644) Workaround: Download the most recent simulator runtime from xcodebuild specifying -architectureVariant arm64. Example: xcodebuild -downloadPlatform iOS -architectureVariant arm64. Linking Deprecations The ld64 linker has been removed and the -ld_classic option is no longer supported.  (165165518) Localization New Features Exporting localizations now extracts NSLocalizedString and similar macros from header files in addition to implementation files.  (19191207) (FB5500560) Agents in Xcode can now be used to translate strings in String Catalogs. You can ask an agent to translate strings ranging from a single feature to an entire project, into one or more languages. Xcode will add languages to your project settings, create missing String Catalogs, and provide guidance and context to agents as they translate.  (111514130) (FB12479690) Strings in code with a localization comment of “do not translate” will be automatically marked as “Don’t Translate” in String Catalogs and translate="no" in exported XLIFFs.  (111715368) Exported XLIFFs will use state-qualifier="leveraged-mt" to indicate strings that were translated using machine translation.  (161775544) The String Catalog editor now includes a Generate Translations button as a shortcut to ask an agent to translate strings. You can also use the context menu to translate specific strings.  (169559347) Resolved Issues Fixed an issue where automatic strings could get removed from String Catalogs when declared using AppIntent APIs that take table parameters.  (174776249) Fixed a crash that could occur when BUILD_ONLY_KNOWN_LOCALIZATIONS is used in a target with multiple Asset Catalogs.  (176827483) Metal New Features The Diagnostics Panel in the Scheme Editor exposes more Metal validation options including logging non-fatal actions, validating load and store actions, logging resource allocation stack traces, and controlling GPU stack overflow detection.  (162401628) The Metal Performance HUD exposes more MetalFX related metrics such as jitter sequence length and motion vector scale. The configuration panel includes a new “Overrides” panel when MetalFX is enabled, and allows customization of jitter multiplier, motion vector scale and exposure visualization for debugging purposes.  (162557993) The Metal Capture popover includes a new “Include MetalFX temporal scaler history” advanced option that improves texture quality during replay when your app uses MetalFX temporal scaling.  (169816556) The Metal Capture popover includes a new “Optimize shared memory capture” advanced option that improves capture performance and reduces GPU trace size on disk.  (170023938) Resolved Issues Fixed: The Queue Debugging setting to Enable Backtrace Recording is off by default. To view the process grouped by dispatch queues in the debug navigator, or to get recorded backtraces indicating the originating dispatch operation when viewing the process grouped by thread, please enable the setting in the scheme editor under Run > Options > Queue Debugging > Enable Backtrace Recording  (164183224) Known Issues An app may crash when run from Xcode with both Hardware Memory Tagging and GPU Frame Capture enabled.  (178488388) Workaround: Disable GPU Frame Capture in the Options tab of the scheme editor. Or temporarily disable Hardware Memory Tagging in both the Diagnostics tab of the scheme editor and Signing & Capabilities > Enhanced Security. MusicKit Known Issues MusicPlayer.Queue and MusicPlayer.State might not always update when using @State in SwiftUI.  (176947544) Workaround: Use @ObservedObject. On Demand Resources Deprecations On Demand Resources and the NSBundleResourceRequest API are deprecated. Use Background Assets instead.  (170066290) Organizer New Features The Insights Overview summarizes high-impact performance regressions for metrics and diagnostic reports for your app. Use it to plan and prioritize performance engineering work.  (159975360) The new Hitches metric replaces the Scrolling metric in the Organizer, now displaying animation hitches for all animations in your app. Use it to get a comprehensive view of animation performance.  (160333794) Storage metrics are now available in Xcode Organizer, allowing you to monitor their app’s Documents & Data and App Size across releases and catch regressions in cache usage and bundle size.  (160837780) AI-driven analysis is now available for diagnostics in Xcode Organizer, enabling expert analysis of power and performance issues and seamless integration with source code and the Coding Assistant. Quickly resolve the highest-impact performance issues in your app by using Generate Recommendations for Crash, Energy, Disk Write, Hang and Launch diagnostics.  (177568727) Metric goals are now available for Battery Usage, Disk Writes, Hang Rate, Hitches, Memory, and Storage metrics, allowing you to prioritize performance engineering across more areas. Similar-app goals are now supported for Hang Rate, On-screen Battery Usage, Disk Writes, and Storage. Launch Time similar-app goals have been refined for improved accuracy, establishing new baselines.  (177572744) Playgrounds Known Issues Standalone Swift files opened opened by double-clicking in Finder may fail to run #Playground or #Preview blocks.  (177587795) Workaround: Open Swift files using File>Open… or drag them directly onto the Dock icon. Previews New Features Canvas can now display a grid of previews for each argument passed to the new #Preview(arguments:) syntax. Clicking on a preview in argument or variant grids opens the preview in the Interactive mode.  (167544057) Holding command will cause the input events (zooming and scrolling) to be handled by the canvas. This can be disabled with the new ‘Send Command-Modified Input to Canvas’ toggle in the Editor > Canvas menu.  (170072429) iOS previews have a new Resizable Canvas mode that enables viewing the preview in arbitrarily sized containers  (171013421) Known Issues Attempting to Preview with an uninstalled runtime may fail to show a placeholder view and instead fall back to another preview destination.  (177007609) An incorrect error banner may appear while using macOS’s Run as App preview feature (via the Live canvas mode button menu).  (178092213) Previews & Playgrounds New Features Each #Preview and #Playground tab can now be pinned independently in the canvas.  (167543928) Resolved Issues Fixed an issue where there was a long delay before Canvas showed an error when a likely crash occurred.  (168097944) Simulator New Features simctl and devicectl now support rebooting a simulator using the reboot command.  (172303413) Known Issues An extra control for keyboard capture mode appears in the Device Hub toolbar under the view for the visionOS simulator.  (177082480) An extra control for Simulate Trackpad or Mouse mode appears in the Device Hub toolbar under the view for the visionOS simulator.  (177086926) After rebooting a running visionOS simulator, the ability to interact with the simulator is lost.  (178635793) Workaround: Quit and restart the Device Hub application after rebooting the simulator. The simulator sometimes does not get cleared after deletion.   (178661525) Workaround: Restart the machine and re-attempt to remove it. Source Editor New Features All new Markdown editor. View markdown files in your project and from agents in rendered form. Create and edit markdown using familiar formatting tools. View markdown as source code and see the rendered preview by activating Xcode’s canvas.  (175022151) Resolved Issues Fixed an issue in macOS 27 where clicking the close button in an expanded macro added a breakpoint rather than closing the expansion. You can use Editor > Hide Macro Expansion to close the expansion.  (174376098) StoreKit Testing in Xcode New Features New StoreKit configuration UI to configure In-App Purchase offer codes, and new off-device purchase options to test purchases with IAP offer codes via the Transaction Manager.  (141012907) Subscription Bundles can be configured for local testing in the StoreKit Configuration.  (164203930) Subscription Suites can be configured for local testing in the StoreKit Configuration.  (166899262) Add support for creating volume purchase transactions for 1-month and 1-year auto-renewing subscriptions through the Xcode Transaction Manager.  (169041777) Swift Compiler New Features The Swift dependency scanner has been optimized to avoid redundant setup work and header searches when looking up Clang modules during a single dependency-scan action, substantially improving scanning performance. As a consequence of this change, every Clang module reachable from a single Swift dependency-scan action must have a unique module name. If two module maps visible to the same scan declare a Clang module with the same name, the scan may report an error. Previously, the scanner may have tolerated duplicating names. The most common cases are projects or SDKs that vend the same Clang module name from more than one location on the header search path, and vendored third-party sources that ship a module.modulemap redeclaring an SDK module.  (136303612) Swift Package Manager New Features When one or more test targets in a package experience a test failure, swift test summarizes them at the end.  (168311253) swift test now supports repeating test cases until a condition is met. Pass --maximum-repetitions and --repeat-until [pass|fail] to swift test to repeat your tests until they pass or fail. Only those test cases that match the repeat condition will be repeated.  (177561078) Swift/C++ Interoperability New Features When calling a C++ constructor that has parameters with default expressions, you no longer have to pass all arguments explicitly in Swift.  (118987713) You can now convert Swift closures to instances of std::function. For example:  // C++  void processNumbers(const std::vector<int> &numbers, std::function<void(int)> op);  // Swift  processNumbers([1, 2, 3], .init { print($0) }) (133777029) You can now annotate constructors of foreign reference types as SWIFT_RETURNS_RETAINED or SWIFT_RETURNS_UNRETAINED.  (135368369) Mapping __counted_by and std::span parameters annotated with __noescape to Swift Span no longer requires the SafeInteropWrappers experimental feature flag. Mapping return values to Span using __lifetimebound is still guarded by the experimental feature flag. For more information, see https://www.swift.org/documentation/cxx-interop/safe-interop/#safe-overloads-for-annotated-spans-and-pointers  (148994016) Raw pointers to intrusively reference counted types (annotated with SWIFT_SHARED_REFERENCE) are imported as Swift classes. Starting with this release you can now annotate smart pointer types pointing to such reference counted types with SWIFT_REFCOUNTED_PTR macro to bridge their instances to Swift classes. For example:  struct SWIFT_SHARED_REFERENCE(...) SharedObj {};    template <class T>  struct SWIFT_REFCOUNTED_PTR(.getPtr) Ptr {      Ptr(T* ptr);      T *_Nullable getPtr() const { return ptr; }  };    using ObjPtr = Ptr<SharedObj>;    void takesSmartPtr(ObjPtr p); The function takesSmartPtr is imported to Swift as:  func takesSmartPtr(_ p: SharedObj?) (156521316) Previously, safe wrappers could not be generated for functions where the signature contained template instantiations. Any template instantiation would have to be referred to using a typedef instead. Safe wrappers can now be generated for functions without wrapping std::span parameter types in typedefs, if they are annotated with __noescape. Any other template instantiation in the signature still prevents generating a safe wrapper, unless hidden behind a typedef. Example:  // Already supported:  using IntSpan = std::span<int>;  void foo(IntSpan x __noescape);    // Now this also works:  void bar(std::span<int> y __noescape);    // The return type template instantiation here still prevents generating a safe wrapper:  std::span<int> baz(std::span<int> z __noescape); (167712240) System New Features System now provides Swift APIs for the C stat, lstat, fstat, and fstatat system calls. This includes a new Stat type with initializers from FilePath, FileDescriptor, or a C string; FilePath.stat() and FileDescriptor.stat() instance methods; and supporting types (FileType, FileMode, FileFlags, UserID, GroupID, DeviceID, and Inode). See SYS-0006 for more details.  (160612181) Known Issues Custom FilePath or FileDescriptor extensions that make unqualified calls to stat() or stat(_:_:) (without the Darwin. qualification) might conflict with the new Swift stat() instance methods introduced in SYS-0006, causing build errors.   (177911316) Workaround: Migrate to the new Swift stat() methods, or disambiguate using Darwin.stat() and Darwin.stat(_:_:). See SYS-0008 for more details. System Trace: Quality of Service New Features Thread Activity Instrument now displays Quality of Service of individual threads. Effective QoS is displayed by default, Requested QoS is hidden by default (use the track dropdown menu of Thread items in order to reveal it).  (173043672) Testing New Features In your Test Plan, you can control how the system responds to target application crashes during UI testing by choosing one of four severity levels: off, warning, failure (default), or fatal failure.  (168107814) Added a filter to the test plan configurations tab.  (168608491) Added recent tests and open tests filters to the Test Navigator.  (168608830) When you call an XCTest or Swift Testing assertion within a test from the opposite framework, you will see a runtime issue with warning severity if the assertion failed. Control this behavior with the new Swift Testing and XCTest Interoperability setting in your test plan.  (170335449) Updated the test plan JSON to sort tags, making it easier to review changes.  (174178766) Resolved Issues Fixed an issue where adding an attachmen to a test case during the XCTestObservation callbacks testCaseWillStart(_:) or testCaseDidFinish(_:) by calling XCTestCase.add(_:) did not persist the attachment in the results.  (89059895) Fixed: The ‘Test Repetition Mode’ setting now only repeats individual Swift Testing test cases, rather than repeating the entire test plan.  (130508488) Fixed: Swift Testing is now better-able to associate recorded issues with the tests that generated them when they occur in detached Swift tasks, on dispatch queues, or on background threads.  (169036231) Fixed: Large Swift Testing test suites with many parameterized test cases have significantly better performance in Xcode 27.  (171415950) Known Issues When running tests with the swift CLI, cross-framework issues from XCTest are not surfaced when running Swift Testing tests in Swift Package projects.  (177970158) Workaround: Run tests in your project with Xcode. watchOS Unit and UI tests may not run on device.  (178874363) Workaround: Run tests on simulator. Wi-Fi Aware Known Issues wifiAware and wifiAware(_:) extensions on NWParameters are unavailable for configuring Wi-Fi Aware properties.  (178019157) Workaround: Use wifiAware(_:) extension on NWParametersBuilder instead to configure Wi-Fi Aware properties.
