visionOS 26 Release Notes
Update your apps to use new features, and test your apps against API changes.
Overview
The visionOS 26 SDK provides support for developing apps for Apple Vision Pro devices running visionOS 26. The SDK comes bundled with Xcode 26, available from the Mac App Store. For information on the compatibility requirements for Xcode 26, see Xcode 26 Release Notes.
AirDrop
Resolved Issues
Fixed: Any 2D video or spatial video received via AirDrop will be saved and opened in the Files app instead of the Photos app. (152265301)
AlarmKit
Resolved Issues
Fixed: Attempting to import AlarmKit for a visionOS Simulator project will fail as this API is not available on AlarmKit. (152339959)
App Store
New Features
A new Accessibility section has been added to the App Store product pages that highlights accessibility features within apps and games. These Accessibility Nutrition Labels give users a new way to learn if an app will be accessible to them before they download it, and give developers the opportunity to better inform and educate their users on features their app supports. (138344118)
Resolved Issues
Fixed:
iphone-performance-gaming-tierapps on visionOS are not available via TestFlight. (141472382)
Apple Intelligence
New Features
The Foundation Models framework provides you with direct access to the on-device large language model at the core of Apple Intelligence. For release notes about the framework, see the Foundation Models framework section below. (139996377)
Resolved Issues
Fixed: In Image Playground and Genmoji, the new modifiers to customize appearance do not work for Japanese-language users. Image creation is blocked when attempting to add modifiers to its appearance. (151833204)
Fixed: Model quality output degrades after extended, repeated inferences of the same adapter. (152468267)
Apple Vision Pro Setup
Resolved Issues
Fixed: iCloud syncing for Apple Vision Pro Setup data is not enabled by default on Apple Vision Pro and iOS devices. (153339405)
Apps
Known Issues
visionOS app icons might appear with unexpected shapes and highlights in various places across the system. (154683810)
ARKit
New Features
The
isTrackedproperty on hand joints now has an adjusted sensibility and might returnfalseunder poor lighting conditions or when occluded. However, ARKit will still return a plausible transform for that joint. Check forisTrackedwhen high accuracy of the transform is required. It is not recommended to check for this property in use cases which need to work even when some joints are occluded, such as custom hand gesture implementations. (152100522)
Resolved Issues
Fixed: Accessory Tracking does not work in Travel Mode. The user might not get notified of this behavior for some connected accessories. (152264297)
Fixed: The C API is unavailable on macOS, which limits rendering spatial macOS applications to a Swift implementation. (152269768)
Fixed: For Accessory Tracking, the “grip” POI (Point of Interest) for GCController is missing a rotation. (152304770)
Fixed: For Accessory Tracking, in order to get the aim POI (Point of Interest) for GCStylus, use the string “tip” in place of “aim”. (152335557)
Fixed: ARKit now updates data providers to their new states individually. As a result, the
ARKitSession.Event.dataProviderStateChangedevent might be called more often. (152665341)Fixed: Addressed an issue, where you may have received inaccurate hands data, if you query hand anchors using
HandTrackingProvider.handAnchors(at:)with timestamps too far in the past or future. (153125027)Fixed: The implementation of
ar_accessory_tracking_provider_get_latest_anchorsretains returned memory, which contradicts the stated documentation.Ensure the application code using this function adheres to the existing documentation and is rebuilt against the latest SDK release. (154337356)
Fixed: In visionOS 26 beta 4, accessory tracking fails and controllers are not recognized as spatial input devices. (156458710)
Known Issues
Anchor removal notifications do not surface for
AccessoryTrackingProviders that listen foranchorUpdateswhen spatial accessories are disconnected or turned off. Apps that depend on removal notifications for removing on-screen visualizations and updating application state might continue to show outdated content when Vision Pro is put back on. (155822320)Workaround: Apps still receive the
GCControllerDidDisconnectandGCStylusDidDisconnectnotifications when resuming use of Apple Vision Pro and can use them to reset state.
Deprecations
ARQuickLookPreviewItem.hhas been moved to the Quicklook framework and is no longer available via ARKit. If your code importsARKit/ARQuickLookPreviewItem.hdirectly, change it to importQuickLook/QuickLook.hinstead. Swift clients should import Quicklook instead of ARKit. (152081500)NSEnterpriseMCAMUsageDescriptionis now deprecated. UseNSMainCameraUsageDescriptioninstead. (152098891)
AssistantSchemas
Resolved Issues
Fixed: If you have adopted any of the following email AssistantSchemas, you will experience a compilation error due to a parameter type change:
createDraft,updateDraft,replyMail,forwardMail,message, anddraft. (148633307)
AVFoundation
Resolved Issues
Fixed:
AVPlayerLayerdoes not ensure a valid video frame is always displayed during item replacement, as theisReadyForDisplayproperty does not remain true during transitions. (151902458)
AVKit
Resolved Issues
Fixed: When using the AVPlayerViewController API, Dynamic Mask is not supported in visionOS simulator. (152602013)
Background Assets
Resolved Issues
Fixed: The system might not update downloaded asset packs as frequently as is expected for apps that internal testers install from TestFlight. (143281558)
Fixed: Asset pack downloads might fail unexpectedly or stall indefinitely, including across reboots. (151498902)
Fixed: The system might not deliver status updates to your app for ongoing asset pack downloads. (151647839)
Fixed: Pausing and resuming an app installation or update while the system is downloading essential asset packs might cause the installation or update to stall indefinitely. (151942388)
Fixed: The installation of large asset packs might fail. (153128086)
Fixed: The URL Override setting doesn’t save an entered URL’s port number. The device always attempts to communicate with the mock server over port 443. (156113742) (FB18913475)
CloudKit
Resolved Issues
Fixed: CloudKit sharing URLs do not launch third-party apps. (151778655)
CompositorServices
Resolved Issues
Fixed: When turning off hover effects using the tracking areas API, spatial events might provide an incorrect location. (151504311)
Fixed: Immersive Spaces using CompositorServices with the Progressive style do not display correctly on the visionOS simulator. (151925874)
Fixed: CompositorServices API hover effects and tracking areas do not work in the visionOS simulator. (152101959)
Fixed: When opening an immersive space, there might be a delay before the system has the correct immersion style. This might cause errors for functions that require specific immersion styles, since they may be called before the selected immersion style is propagated. (152523347)
Known Issues
Partially-occluded objects might be more difficult to target with tracking areas compared to RealityKit colliders. (149224443)
For CompositorServices renderers using a shared layout, hover effects might not work on tracking areas. (155811050)
Workaround: Use the layered layout or the dedicated layout with hover effects.
When using Metal 4 and progressive immersion, calling
cp_drawable_render_context_mtl4_end_encodingtriggers a crash. (156963664)Workaround: Set “GPU Frame Capture” in scheme options to “Disabled”.
Control Center
Known Issues
Tooltips do not appear for controls in Control Center. (154219497)
Controller Tracking
Resolved Issues
Fixed: While using controller tracking, the Hand Tracking API via ARKit still provides updates for hand holding the controller at 1Hz. This means that if an app is using controller tracking and hand tracking at the same time, it will get sporadic hand tracking results. The intended behavior is for hand tracking to stop when controller is held. (151882645)
Fixed: User might not be able to close or reposition app windows with a game controller or with hand gestures after using a game controller. (152673502)
CoreData
Resolved Issues
Fixed: In beta 5 SDK, CoreData changed several
Sendableannotations to resolve compatibility issues with Swift 6’s newMainActordefault isolation feature. These changes include markingNSManagedObjectasNS_SWIFT_NONISOLATED NS_SWIFT_NONSENDABLE, markingNSManagedObjectContextasNS_SWIFT_NONISOLATED NS_SWIFT_SENDABLE, and requiringNS_SWIFT_SENDABLEclosures for the family ofperform,performBlock,performBlockAndWaitand similar methods. These changes are ABI compatible with past releases but might introduce new warnings while building source code that violates the longstanding CoreData concurrency guidelines.NSManagedObjectare mutable reference types inextricably related to others in a graph and cannot be madeSendable. They are expected to be isolated to the scope of theNSManagedObjectContextthat creates or fetches them.NSManagedObjectContextis a style of actor which encapsulates its own dispatch queue. While it’s impermissible to use many methods onNSManagedObjectContextfrom other threads, it is permissible to pass references around to invoke theperformBlockfamily of methods, for the purpose of routing aSendableclosure to its managed dispatch queue. CoreData supports a user default-com.apple.CoreData.ConcurrencyDebug 1which can be used to enable additional assertions. (153848710) (FB18216198)
Deprecations
This release removes support for the following deprecated
NSPersistentStoreoption keys:NSPersistentStoreUbiquitousContentNameKeyNSPersistentStoreUbiquitousContentURLKeyNSPersistentStoreUbiquitousPeerTokenOptionNSPersistentStoreRemoveUbiquitousMetadataOptionNSPersistentStoreUbiquitousContainerIdentifierKeyNSPersistentStoreRebuildFromUbiquitousContentOption
These keys have been deprecated for more than a decade. Affected apps rebuilt with the iOS or macOS 26 SDK will get errors. Apps built against older SDKs will log warnings when opening the store.
The on-device persistent store will be fully usable after these keys are removed from options dictionary, albeit without syncing. For data syncing, these APIs were superseded by
NSPersistentCloudKitContainerin iOS 13 and SwiftData in iOS 17. If absolutely necessary, the iCloud content remains accessible in the containers with the last baseline as a .zip archive file. (157297746) (FB19286235)
EyeSight
Resolved Issues
Fixed: EyeSight might not display content, even if an observer is present. (155800405)
FaceTime
Known Issues
Testing SharePlay experiences in the simulator using FaceTime might cause the simulator to crash. (153776177)
Foundation
New Features
Interpolating non-localized types into a
LocalizedStringResource/String(localized:)/AttributedString(localized:)value will now display a deprecation warning instead of potentially falling back to a fully-unlocalized string. Provide a localized value to interpolate into the text instead, or silence the warning by wrapping the unlocalized value in a call toString(describing:). (126876158)
Resolved Issues
Fixed: Functions that initialize a string from a C-string pointer do not validate that the provided encoding is a valid encoding for C-strings. (143756086) (FB16417968)
Foundation Models framework
New Features
LanguageModelSession.prewarm()now caches the instructions and prefix of your prompt, in addition to loading system resources. The best place to useprewarm()is when your app is waiting for user interactions that might trigger response generation. This will reduce the time to the first-generated token. (152381043)#Playgroundin Xcode now allows for filing feedback for Foundation Models framework responses. (153770707)The
.contentTagginguse case now supports non-English languages. You can query the supported languages usingSystemLanguageModel(useCase: .contentTagging).supportedLanguages. Tags will be generated based on the language of the prompt. (155801948)When you use guided generation, the framework now supports programmatically detecting when and why the model refuses to respond when the content is not unsafe. In previous beta releases, this manifested as a guardrail violation. Now you can catch a specific error case
LanguageModelSession.GenerationError.refusaland obtain a model-generated explanation for why it refused to respond. Depending on your use case, you might be able to display the explanation in your UI. (156086748)In
GeneratedContent, you can use theisCompleteproperty to check whether the content was fully generated by the model. (156109416)When using guided generation, you can now access the underlying weakly typed
GeneratedContentby accessing therawContentproperty onResponseorResponseStream. (156351123)New guardrails mode
Guardrails.permissiveContentTransformationsallows transformations of content that might otherwise violate the default guardrails. Use this mode for text-to-text tasks, such as summarization and rewrite. (156721060)
Resolved Issues
Fixed: When you pass
includeSchemaInPrompt: falsetorespondorstreamResponse, it is not respected. (151926006)Fixed: Custom
@Generabletypes namedNumberorBooleanmight not function reliably in guided generation. (152280144)Fixed: Tool calling might not function properly if primitive types such as
Int,String, orBoolare used as the argument. (152318534)Fixed: In an Xcode Playground, requests made to the model might receive a “rate limit exceeded” error. (152325506)
Fixed: Model requests in macOS command line tools might experience rate limiting. (152681332)
Fixed: Generable types with a recursive definition lead to a
SchemaErrorwhen generating a response. (153147722) (FB17962270)Fixed: A prompt containing Chinese might lead to error “Unsupported language zh-hans detected”. (153151710) (FB17963656)
Fixed:
Generabletypes cannot be made public due to a bug in theGenerablemacro. (153216183) (FB17990794)Fixed: Requests to the model might experience rate limiting, even when the device is connected to power. (153216632)
Fixed: The Foundation Models framework cannot be imported when building for Mac Catalyst. (153255533) (FB18004324)
Fixed: Creating a
LanguageModelSessionwith tools that have duplicate names leads to a fatal error. (153426645) (FB18074984)Fixed: When using guided generation and tool calling together, some requests might lead to
LanguageModelSession.GenerationError.decodingFailuredue to a bug in constrained decoding. (153773704) (FB18190120)Fixed: When creating a session with a transcript, any new tools you attach to the session might not be used. Additionally, if your transcript contains tools from a previous session, those tools must be passed as the
tools:argument in the new session in order to function properly. (154904647)Fixed: Some prompts erroneously return an error indicating a guardrail violation
(FoundationModels.LanguageModelSession.GenerationError error 2). (155273863)Fixed: When using tool calling with guided generation, tools might not get called. (155313086) (FB18691470)
Fixed: Generating an enum with associated values through a dynamic schema crashes with a
SchemaError. (155957346) (FB18878026)Fixed: In some cases, requests you make to the model erroneously throw a
guardrailViolationfor all prompts due to model assets not fully downloaded. (156223847) (FB18944619)
Known Issues
Some instructions and prompts to the model might not lead to expected responses. Use Feedback Assistant to report satisfactory or unsatisfactory cases. When applicable, you can use
LanguageModelSession.logFeedbackAttachment()to serialize the feedback to a JSON file and attach it to Feedback Assistant. (152318091)Workaround: Refine your instructions and prompts using
#Playgroundin Xcode. When applying guided generation with a@Generabletype, add@Guidewith a custom description on properties to steer the model’s responses.If
Argumenttype is an enum with associated type, tools will encounter aToolCallErrorwith an underlyingdecodingFailurewhen the model attempts to call it. (156723065)Workaround: Wrap the enum in a struct.
Game Controller
New Features
Pair multiple Apple devices to your DualSense or DualSense Edge controller and easily switch between them directly using the controller or Bluetooth settings. See this PlayStation blog post for details. (137782227)
Known Issues
You might not be able to reposition app windows with a game controller after playing an Arcade game using controllers. (152130313)
Workaround: Turn off Bluetooth, turn it on again, and re-connect the controllers.
HealthKit
Resolved Issues
Fixed: The authorization screen prompted by the Medications Authorization API cannot be dismissed if the user has no available medications needing authorization. (152094574)
iCloud
Resolved Issues
Fixed: Prescription assets created on visionOS might not sync to iOS. (152119040)
Image Playground
Known Issues
The UI becomes locked when attempting to interact with the generic person panel noted in popover for bincompat Playground API presentation. (152095114)
Workaround: Force quit and restart the app.
ImmersiveSpace
Resolved Issues
Fixed: Observable view models in an ImmersiveSpace do not get de-initialized when the ImmersiveSpace is closed. Additionally, ImmersiveSpace content is evaluated eagerly instead of lazily. (147699733)
iPhone Unlock
Known Issues
Unlocking your iPhone with Apple Vision Pro might not work. (155556946)
Workaround: Update the iPhone to iOS 26 beta 4 or newer and the Apple Vision Pro to visionOS 26 beta 4 or newer.
Keyboards
Known Issues
For Chinese, Japanese, and Korean keyboards, expanding and collapsing the candidate bar might cause the bottom row of full-size keyboards and bottom two rows of 10-key keyboards to register the wrong input. (152120249)
Workaround: Resize the keyboard by dragging the corner.
Lists
Resolved Issues
Fixed: For platform-compatible first-party apps like Calendar, Voice Memos, and Reminders, list rows with multi-selection buttons might fail to render those buttons. (152510946)
Look to Scroll
Resolved Issues
Fixed: If Look to Scroll is disabled in Settings and the user has not encountered the feature before, a Tip notification for Look to Scroll will still appear. (146418079)
Mac Virtual Display
Resolved Issues
Fixed: Users might see sharp edges around keyboards and MacBooks when viewing in passthrough. (153668146)
Maps
Known Issues
Curated guides do not scroll on iOS, iPadOS, or visionOS when the iPhone is in landscape mode. (152123749)
Workaround: On iPhone, view curated guides in portrait mode.
Memory Tools
Known Issues
Leaks might be falsely reported by memory analysis tools when a target has instances of types that use Obj-C properties implemented in Swift using bridged types with
@objc @implementation. Memory analysis tools include theleaksCLI tool, Leaks instrument, and Xcode memory graph debugger. (157798911)
Messages
Resolved Issues
Fixed: Sent translated messages do not get re-translated after editing. (149401758)
Fixed: In regions where Screen Unknown Senders is on by default, notifications for message categories are erroneously off by default. (149450560)
Fixed: When scrolling through a conversation that contains messages that failed to send, translucent circles might appear to the right of the transcript, not connected to any message. (149575551)
Fixed: In one-to-one conversations, background changes might be attributed incorrectly after quitting and re-opening the Messages app. (150548773)
Fixed: When setting a photo as a background in conversations, the photo appears larger than the preview shows. (151730462)
Fixed: Transaction or Promotion messages filtered by a Message Filter App Extension might be badged as “Unknown” in the conversation list rather than “Transaction” or “Promotion”. (151869409)
Metal
New Features
Metal 4 is now supported. See Metal for additional details. (113781091)
Resolved Issues
Fixed: If you’re using Metal 4 command encoders, you should add render and compute pipelines that support indirect command buffers to your residency sets. The Metal device driver currently does not enforce this requirement. (145066238)
Fixed: Metal Shader Validation might not work with shaders that use Metal Performance Primitives. (149263281)
Known Issues
Metal Shader Validation might not work with Metal 4 ray tracing pipelines. (152520367)
Workaround: Selectively disable Shader Validation for pipelines using ray tracing. See documentation.
MetalFX
Resolved Issues
Fixed: Temporal upscaling for MTL4CommandBuffer’s
MTL4FXTemporalScalerdoes not work. (146436741)
Mobile Device Management
Resolved Issues
Fixed: Apps installed via Declarative Device Management might not get preserved correctly during Rapid Return to Service flow. (148849851)
Music
Resolved Issues
Fixed: Switching audio routes during playback of a music video or advancing to the next video in a playlist might cause the Music app to return to the playlist view, stop responding, or close unexpectedly. (152145901)
Known Issues
The Music widget might be unable to display content artwork. (155628172)
NetworkExtension
Deprecations
Algorithms DES, 3DES, SHA1-96 and SHA1-160 as well as Diffie-Hellman groups less than 14 are no longer supported for IKEv2 VPNs. (148767790)
NSLog
New Features
Dynamic string data in format arguments for
NSLogwill be redacted to\<private\>in the Unified Logging System. This specifically targets data that enters the Unified Logging System viaNSLog, and will not impact the Xcode console orNSLog’sstdoutoutput. If you wish to log un-redacted data to the Unified Logging System please use the “os_log” or “Logger” interfaces. (137129180)
Quick Look
Resolved Issues
Fixed: Opening a side-by-side stereo 180° video on Apple Vision Pro from Files and opting to convert it to Apple Projected Media Profile might stall indefinitely during conversion. (146349661)
RealityKit
New Features
SwiftUI modal presentations are now permitted in RealityViewAttachments. (129033264)
You can use
PresentationComponentwith.popoverconfiguration to show a SwiftUI popover anchored to a RealityKit entity. When presented, the popover will start off billboarded towards the user. To billboard continuously, use aBillboardComponentalongside thePresentationComponent. (132603872)
Resolved Issues
Fixed: Entities with a PortalComponent ignore any ModelSortGroupComponent and instead use a fixed rendering order.
In case of sorting rendering issues with portal surface, explicitly add a ModelSortGroupComponent using a
.planarUIAlwaysBehindsort group. (149899345)Fixed: When using RealityKit API to retrieve the transform value of an accessory-anchored entity in a shared space, the result might be offset from its true value. (151163403)
Fixed: App will crash if an entity is removed while presenting an
ImagePresentationComponent.Spatial3DImagethat has not yet finished generating. (151960494)Fixed: The
animatefunctions onEntityandRealityViewContentdo not start animations. (152456435)Fixed: When using the VideoPlayerComponent API, Dynamic Mask is not supported in the visionOS simulator. (152725380)
Known Issues
Synchronous-loading APIs block the main actor and should not be used in async contexts. (117170643)
Workaround: Use
init(...)async instead.Simple Views using RealityView that modify a
@Statein themakeclosure and use it only in theupdateclosure sometimes read an old value in theupdateclosure. (145771388)Workaround: Explicitly capture state properties in the
updateclosure:struct ContentView: View { @State var entity: Entity? var body: some View { RealityView { content in entity = Entity(...) content.add(entity!) } update: { [entity] content in // modify the captured Entity entity.transform = ... } } }Some properties and components do not update SwiftUI Views when accessed through the
.observableproperty on Entity. (147063698)When a
PresentationComponentis created with aBindingfrom anObservableObject’s published property, changes to the property might not result in the popover presenting correctly. (151346044)When using ManipulationComponent with
dynamics.translationBehavior = .none,releaseBehavior = .resetdoes not reset rotation. (151648417)Workaround: Apply rotation after
ManipulationEvents.WillEnd.Windows with solid background colors appear to stutter at the edges of Developer Captures if no other windows are open. (156968230)
Workaround: Use the default background style, open another window in the background, or keep the window in view at all times during the Developer Capture.
RemoteImmersiveSpace
Resolved Issues
Fixed: When using the RemoteImmersiveSpace API to stream spatial content from Mac to Apple Vision Pro, an app session might end due to poor Wi-Fi connection, if a user’s Mac freezes, or during transition from wired USB connection to Wi-Fi. (149237275)
Fixed: When using the RemoteImmersiveSpace API to stream spatial content from Mac to Apple Vision Pro, transitioning between the Full immersion style and Progressive does not work during an active stream. (149590532)
Fixed: A blank Sharing UI might be shown and get stuck when trying to connect Mac to Apple Vision Pro and starting spatial content streaming using RemoteImmersiveSpace API. (151503720)
Fixed: When using the RemoteImmersiveSpace API to stream spatial content from Mac to Apple Vision Pro, the app on Mac will crash if an Immersive Space is already open on Apple Vision Pro. (151897819)
Fixed: A blank UI window is shown and gets stuck when using the RemoteImmersiveSpace API to stream spatial content while using Mac Virtual Display. (151899171)
Fixed: When using the RemoteImmersiveSpace API to stream spatial content from Mac to Apple Vision Pro while in a FaceTime video call, the spatial stream might stall and end. (151936085)
Fixed: When using the RemoteImmersiveSpace API to stream spatial content from Mac to Apple Vision Pro, users might get stuck in immersion that transitions between black and passthrough, based on whether hands are visible in the field of view. (151951590)
Fixed: When using RemoteImmersiveSpace API that streams spatial content from Mac to Apple Vision Pro, visionOS 26 beta 5 is not backwards-compatible with macOS 26 beta 4, and macOS 26 beta 5 is not backwards-compatible with visionOS 26 beta 4. (153037593)
Known Issues
When using the RemoteImmersiveSpace API to stream spatial content from Mac to Apple Vision Pro, there might be visual artifacts around objects of high depth disparity, such as near objects overlapping far objects. (147999474)
When using the RemoteImmersiveSpace API that streams spatial content from Mac to Apple Vision Pro, visionOS 26 beta 2 and macOS 26 beta 2 are not backwards compatible with visionOS 26 beta 1 and macOS 26 beta 1. (149579399)
Workaround: Use both visionOS 26 beta 2 and macOS 26 beta 2.
When using the RemoteImmersiveSpace API to stream spatial content from Mac to Apple Vision Pro, an app session might have video stalls, blurry content, and black rendering on the sides if running on a Mac computer with Apple silicon. (151322584)
Workaround: Profile your application and leverage the -renderQuality API new to visionOS and macOS.
If you port an app using Xcode template or Metal 4 with
ProgressiveImmersionStylefor macOS spatial rendering, the app will crash on macOS. (153574517)Workaround: Use
FullImmersionStyle.When using the RemoteImmersiveSpace API to stream spatial content from Mac to Apple Vision Pro while in Travel mode, spatial stream might stall and end. (154209388)
Workaround: End Travel Mode while using RemoteImmersiveSpace API-enabled apps.
Safari
Resolved Issues
Fixed: The history section in the sidebar does not have the “Clear” button. (152536922)
Known Issues
After using the scroll indicator, the knob of the scroll indicator becomes invisible. (154223351)
Playing MSE video in immersive mode in Safari might end up in a state where the user cannot exit the immersive mode and has to force quit Safari to recover. (155925753)
Scenes and Windows
Known Issues
Calling
openWindowback-to-back with the same ID and value results in duplicate windows being opened. (138659891)
Search
Resolved Issues
Fixed: Some applications might quit unexpectedly when using search. The issue will be resolved automatically with an over-the-air update when connected to Wi-Fi. (157464670)
Security
Deprecations
For apps linked on or after iOS 26 and macOS 26, the default minimum TLS version of
URLSessionand Network frameworks has changed from 1.0 to 1.2. If your process connects only to your servers, verify that they support TLS 1.3 or TLS 1.2. If your process needs to connect to 3rd-party servers which cannot be updated to support newer versions of TLS, restore the previous behavior throughURLSessionand Security framework APIs:URLSessionConfiguration.tlsMinimumSupportedProtocolVersionandsec_protocol_options_set_min_tls_protocol_version. (135996267)
Shortcuts
Resolved Issues
Fixed: The Use Model action might fail to produce a valid Dictionary output with the On-Device option. (154980618)
Spatial Video
Resolved Issues
Fixed: When playing spatial video on the visionOS simulator, the immersive button is missing on the player. (154772614)
Spotlight
Known Issues
Spotlight Search shows blank icons for native visionOS apps in Siri Suggestions. (155998187)
StoreKit
New Features
There is a new option for the
Transaction.Offer.PaymentModeAPI calledoneTime. This new case supports the method of payment for In-App Purchase offer codes. (142501142)Subscription promotional offers can now be signed using JWS and attached to a purchase using the new
PurchaseOption.promotionalOffer(_:compactJWS:)API. There are also new corresponding SwiftUI APIs in StoreKit to attach a signed promotional offer or a signed introductory offer override to a view. (143395736)SubscriptionOfferView is a new SwiftUI view to merchandise auto-renewable subscriptions. It is designed to capture customers’ attention about the app’s service. (145251635)
Resolved Issues
Fixed: Subscription status updates might not be reported correctly if the subscription went into billing retry in StoreKit Testing in Xcode. (133799135) (FB14789854)
Fixed: Price of offers is not displayed in the payment sheet when making a purchase to a subscription with a higher level of service in StoreKit Testing in Xcode. (140635780) (FB15980635)
Fixed: Renewal transactions might be created regardless of the Ask to Buy status of the purchase request in StoreKit Testing in Xcode. (145242611)
Fixed:
SKProductfrom the original StoreKit API fails to decode products when using StoreKit Testing in Xcode. (150851879)Fixed: Transactions might not finish, resulting in subsequent purchases of the same product failing. (155449267)
Swift Charts
New Features
Available in iOS 26, macOS 26, and visionOS 26,
Chart3Dallows you to visualize your data and mathematical surfaces in 3D, powered by RealityKit. (148361385)
Resolved Issues
Fixed: Annotations on a scrollable chart might be clipped. (109164195)
Known Issues
The
.chart3DRenderingStylemodifier is not functional. (150430199)
SwiftUI
New Features
ControlSizenow conforms toComparable, andView/controlSize(_:)can now be used to clamp the environment’scontrolSizeto a given range. (99633360) (FB11465757)Popovers now support customization of their corner radius, through the
presentationCornerRadius(_:)modifier. (112938038)Confirmation dialogs presented with the
.confirmationDialogmodifier now appear as popovers, anchored to the source of the presentation. When using the.confirmationDialogmodifier, ensure this is applied to the view to which the dialog should be anchored. When presenting alerts with theUIAlertController.Style.actionSheetpreferredStyle, ensure asourceViewis set on the alert controller’spopoverPresentationController. (132598527)Text, TextEditor, and TextField now by default use string contents to determine the appropriate base writing direction for each paragraph, instead of relying on layout directionality. To specify the writing direction explicitly on a per-paragraph basis, use Foundation’s
AttributedString.writingDirectionattribute. To make the base writing direction follow the layout direction for an entire view, apply the view modifier.writingDirection(strategy: .layoutBased). (134821288)When linking news SDKs,
NavigationLinks produce a single view, rather than a list of views in view list contexts. This change improves performance of manyNavigationLinks in lazy containers likeList. However, if you are relying onContainerValuespropagating out of thelabelview of aNavigationLink, or similarly relying onContainerValuesof aButtonStyleused to style a link, thecontainerValue(_:,_:)modifier should be moved outside of the link. Below is a minimal example that demonstrates the behavior difference:import SwiftUI struct ContentView: View { @State private var presentPopover = false var body: some View { NavigationLink("Custom Link", value: 84) .buttonStyle(MyButtonStyle(containerValue: "Eighty-four")) } } struct ParentView: View { var body: some View { Group(subviews: ContentView()) { subviews in ForEach(subviews) { subview in Text(subview.containerValues.myCustomValue) } } .frame(minWidth: 100, minHeight: 100) } } struct MyButtonStyle: PrimitiveButtonStyle { var containerValue: String func makeBody(configuration: Configuration) -> some View { Button(configuration) .buttonBorderShape(.circle) .containerValue(\.myCustomValue, containerValue) } } private struct MyContainerValueKey: ContainerValueKey { static let defaultValue: String = "Default value" } extension ContainerValues { var myCustomValue: String { get { self[MyContainerValueKey.self] } set { self[MyContainerValueKey.self] = newValue } } } #Preview { ParentView() }(140283584)
Listno longer ignores the vertical insets of rows with a height close to the default minimum height on iOS and visionOS. UselistRowInsets(_:_:)to change the vertical row insets. (141160852)In
NavigationSplitViewandTabViews configured assidebarAdaptable, the view trailing the sidebar’s safe area is inset in the width of the sidebar. It can display content outside its safe area, underneath the sidebar. (141222137)SwiftUI views and presentations now support breakthrough effects. Breakthrough is an effect allowing elements to be visible to the user even when other app content (3D models, UI elements) is occluding it. To add a breakthrough effect to a SwiftUI view, add the
breakthroughEffect(_:)modifier. To customize the breakthrough effect of a popover in a volumetric context, use thepresentationBreakthroughEffect(_:)modifier. (142705695)In apps that adopt the new design, the
buttonBorderShape(_:)view modifier can be used to customize the shape of bordered buttons. Previously this modifier only affected buttons in Widgets in macOS. (145773436)The
buttonSizing(_:)view modifier specifies the sizing behavior ofButton,Picker,Menu, and other button-producing controls. If you are usingSpacerviews or an infinite-width frame in yourButtonlabel to create a flexible button, applybuttonSizing(.flexible)to theButtoninstead. (146327046)Buttons using a customButtonStylenow play system interaction sounds in apps built against visionOS 26 SDK or later.Buttons usingPrimitiveButtonStyledo not play sounds. (150862851)
Resolved Issues
Fixed:
TextEditor’s undo stack might contain invalid operations for applications with multipleTextEditorviews. (83650197) (FB9662463)Fixed: The menu content of some
Menuviews does not update as the result of a state change. (106878937)Fixed: View.onHover(perform:) and View.onContinuousHover(coordinateSpace:perform:) affect hit-testing for gestures. Gestures are not received if one of these view modifiers is used within an overlay. (108560020)
Fixed: For an
ImmersiveSpacescene, the value for defining a custom scene class via the app’sInfo.plistis ignored. (129389802)Fixed:
listSectionSpacingdoes not work correctly for sections that have headers and footers. For more control over the list section layout, use thelistSectionMarginsmodifier. (140929163)Fixed: On iOS,
navigationSplitViewColumnWidth()does not respect the specified minimum and maximum column widths. (143529326)Fixed: Popovers presented from a view positioned at
z != 0appear at the wrong depth. (143571112)Fixed: Multiple title views in sidebar list labels on iOS are not styled hierarchically as title and subtitle. (144253754)
Fixed: In custom layouts that do not implement
explicitAlignment(of:in:proposal:subviews:cache:), alignment guides do not work correctly for a right-to-left layout direction. (145073832)Fixed: Applying a
boldmodifier toTextresets theweightconfiguration. The interaction ofboldandweightis not consistent between Text and Font. (147270079)Fixed: Environment updates from outside of a popover might fail to propagate into the popover’s content view. (147954025)
Fixed: Two-handed gestures cancel the initial event stream. (149026305)
Fixed: On platforms supporting edge-attached and non-edge-attached sheets, non-edge-attached sheets present erroneously as full-screen covers when
.navigationTransition(.zoom...)is specified. If you wish to keep the full-screen cover in compact size classes, configure a sheet with:.sheet(...) { ContentView() .navigationTransition(.zoom...) .presentationSizing(.page) .presentationCompactAdaptation(.fullScreen)(150455117)
Fixed: Standard gesture precedence and failure requirements do not work with
.manipulable. Nested gestures always take precedence even if they fail. (150773003)Fixed: When presenting a context menu from an ornament or attachment in a Volume, the context menu might not appear relative to origin. (151803598)
Fixed: When using the
.hoverEffectDisabled(true)and.manipulablemodifiers on the same view, the hover effect glow will still be visible. (151810879)Fixed: If Default Actor Isolation is set to
MainActor,@Animatablemacro emits concurrency warnings in Swift 5 language mode and does not compile in Swift 6 language mode. (152524435)Fixed: Gestures do not have the same lower priority over the view’s existing
UIGestureRecognizers andNSGestureRecognizers as they do over the view’s existing SwiftUI gestures.In apps built with iOS 26, macOS 26, tvOS 26, and visionOS 26, use highPriorityGesture(_:isEnabled:) to make sure your gesture takes precedence over the view’s existing gestures, or use simultaneousGesture(_:isEnabled:) to give your gesture the same priority as the view’s existing gestures. (155581361)
Fixed: On visionOS, tvOS, and watchOS, sheets presented within toolbar items might fail to present if the toolbar item’s label view is a
Label. (157326248)
Known Issues
DragGesturehas a defaultminimumDistanceof 10, which is unitless. (144949485)Workaround: When adding a
DragGestureto an entity, useDragGesture(minimumDistance: 0.001, coordinateSpace: .local)to make the minimum distance 1 millimeter.When a popover is presented from a SwiftUI view within a volume, moving around the volume might cause the popover to become detached from its source content. (147066605)
When a background is set for a table view, the header does not adopt the color. This results in the table having the specified color but the header having a transparent background. (150483611)
Workaround: Refrain from setting a background on table views.
When using
.manipulablemodifier on content within aScrollView, if the user is looking at the manipulable item when trying to perform an indirect scroll gesture, manipulation will take precedence over scrolling. (151659525)The detailed surface information classification API might unexpectedly be “none”. (151820408)
The
breakthroughEffect(_:)andpresentationBreakthroughEffect(_:)modifiers have no effect in the simulator. (152112050)
Deprecations
Textconcatenation using the+operator is deprecated because it makes it hard to create localized strings that are correct across all languages. UseTextinterpolation instead. See documentation onTextfor more info on how to produce localized strings. (128144043)
TabletopKit
New Features
Using the
CustomActionAPI, you can implement custom actions that previously required multiple built-in actions (for example, setting the board for a game of chess). This can reduce network traffic and allow you to define a behavior that is either executed or rolled back atomically on all peers. (150326238)Equipment states can now have custom data via the new
CustomEquipmentStateAPI. (150762229)
Deprecations
interactionWasUpdatedhas been deprecated because only some of the provided information is reliably available for remote interactions. The preferred alternative is polling the cursors in theonUpdatefunction of theTabletopGame.RenderDelegate. (150762273)
TextKit
New Features
iOS 26, tvOS 26, visionOS 26, watchOS 26, and macOS Tahoe 26 have two methods for resolving the natural alignment
NSTextAlignment.naturaland the last line ofNSTextAlignment.justifiedinto concrete alignments,leftandright. The first approach utilizes the UI language, which is determined by passing nil-language toNSParagraphStyle.defaultWritingDirection(forLanguage: ). This behavior was employed prior to this release. The second method is new and dynamically utilizes the base writing direction for the paragraph. When the base writing direction is set toNSWritingDirection.rightToLeft, the text is aligned toright, and vice versa. The behavior is selected by API introduced in this major release:NSTextLayoutManager.resolvesNaturalAlignmentWithBaseWritingDirection,NSStringDrawingOptionsResolvesNaturalAlignmentWithBaseWritingDirection,UITraitCollection.resolvesNaturalAlignmentWithBaseWritingDirection, andNSTextField.resolvesNaturalAlignmentWithBaseWritingDirection. (152045248)
Resolved Issues
Fixed: The directionality of
NSParagraphStyleindentation properties (firstLineHeadIndent,headIndent, andtailIndent) is determined by inconsistent hidden rules implemented by the TextKit typesetting engine.With iOS 26, macOS 26, tvOS 26, watchOS 26, and visionOS 26, the TextKit 2 typesetting engine has been standardized to utilize the resolved writing direction for the paragraph when linked with the OS 26 versions of the corresponding SDKs. For binary compatibility, applications developed with prior SDK versions will use the UI language in a subset of API interfaces. Specifically, for
UILabel,NSTextField,SwiftUI.Text, andNSStringDrawing, the indentation directionality is determined by the UI language queried by passing nil toNSParagraphStyle. defaultWritingDirection()in applications built with prior SDK versions. (155893102)
UI Frameworks
Resolved Issues
Fixed: Non-SF Symbol images in TabBars and TabViews default to template rendering. (142894523)
Fixed:
.hoverEffectsDisabled()does not disable highlight effects on links withinSwiftUI.Textviews. (148559710)Fixed: Gaze hover effects might not appear on controls when occluded by another object. (149493534)
Known Issues
Text Effect Windows might be partially cut off when triggered from SwiftUI text fields that are positioned in an ornament at
.topTrailingBack. (142326671)Apps might receive activation and deactivation notifications when viewing Apple Immersive Video. (148774882)
UIKit
New Features
Confirmation dialogs presented with the
UIAlertController.Style.actionSheetpreferredStylenow appear as popovers, anchored to the source of the presentation. When using the.confirmationDialogmodifier, ensure this is applied to the view to which the dialog should be anchored. When presenting alerts with theUIAlertController.Style.actionSheetpreferredStyle, ensure asourceViewis set on the alert controller’spopoverPresentationController. (152537984)
Known Issues
Popovers, action sheets, and context menus from within a
RealityViewattachment might cause the presented content to appear at the wrong location. (147613953)UIKit non-interactive table view rows might respond to gaze, potentially leading users to perceive them as unresponsive and challenging to navigate. (150958738)
Workaround: Use SwiftUI or CollectionViews.
Deprecations
UIScreen.mainScreenhas been changed fromAPI_TO_BE_DEPRECATEDto deprecated in iOS 26, tvOS 26, and visionOS 26. (142902390)
Video Toolbox
Resolved Issues
Fixed: Decoding errors in MV-HEVC videos might crash the controlling process, causing the user-facing app to close or video playback to pause. The user can resume playback if the player supports it as the controlling process could relaunch video playback. (152060939)
WebKit
Resolved Issues
Fixed: Non-2D video in Media Source Extensions (MSE) might render incorrectly or cause Safari to hang. (149733671)
Known Issues
A site will crash when using a 3D model with audio in
<model>. (146899549)Workaround: Use a 3D model without audio.
Some USDZ models with compressed textures might render without textures in HTML
<model>elements. (155650658)Workaround: Do not compress the textures.
WebKit API
New Features
The
loadAPIs onWebPagenow return anAsyncSequencedirectly that can be used to track relevant navigation events. ThecurrentNavigationEventproperty has been removed in favor of thenavigationsproperty, which produces an indefinite sequence directly. (152414525)The
WebPageAPI now supports directly loading URLs. Additionally, when loading an HTML string, there is now a default value for thebaseURLparameter. (152904248) (FB17850359)
Resolved Issues
Fixed:
webViewOnScrollGeometryChangemight report an incorrect content size. (146576790)
WidgetKit
Resolved Issues
Fixed: If the
.widgetTexturemodifier is set to.paper, the property does not take effect when rendering widgets. (151808588)Fixed: The
.supportedMountingStylesmodifier does not take effect when displaying the widget configuration UI. (151808744)Fixed: iOS-based widgets under development do not automatically show up on the device when running and debugging in Xcode. (154678847)
Widgets
Resolved Issues
Fixed: iOS widgets do not appear in the visionOS Widgets app while using visionOS simulator. (150067581)
Fixed: In the Widgets app, app icons in Widget Library might appear as placeholders when running on simulator. (150547965)
Fixed: A visionOS app project might not auto-select the built widget, and the widget will be left in the Suggested section in the Widgets app. (153326762)
Window Sharing
New Features
Window sharing on visionOS can now be started and managed from People View. Tap the Nearby button and select nearby people to start window sharing with, invite nearby people to join your active FaceTime call, and manage your window sharing sessions, all in one place. (154800877)