Discuss Spatial Computing on Apple Platforms.

Posts under General subtopic

Post

Replies

Boosts

Views

Activity

Eye tracking data access for researchers
Hi, Is there a way for researchers to get or request access to eye tracking data from the Apple Vision Pro within the boundaries of the app to be developed? I'm currently involved in research where access to eye tracking data would be beneficial (I'm aware of many existing discussions about this, but I was still wondering if there might be an option, particularly for research labs.) Thank you for your answer.
3
1
917
4h
Built-in environments in the visionOS simulator
Should Environments like White Sands and Mount Hood work in the visionOS simulator? In a fresh visionOS 27.2 simulator, selecting an Environment from Home View does nothing. I saw the same behavior with visionOS 27.0. After selecting the Moon, Control Center still shows White Sands. Moving the immersion slider in Control Center changes the position of Device Hub’s sidebar slider, but that slider remains disabled and no environment appears. This happens before installing or running my app. The simulated room scenes work. The simulator logs show that the environment catalog downloads successfully, but the scenic assets are marked state=notPresent. Trying to increase immersion produces: Default environment identifier Wolf is no longer available on disk. Resetting to system default. Invalid environment Wolf requested, it does not exist or is not in correct state (Unavailable). Failed to load environment: Error Domain=RealityEnvironmentError Code=407 "Environment action not performed." (Wolf is the internal identifier for White Sands.) Is this an expected simulator limitation, a known issue, or is there a way to download and enable these environments?
1
0
351
1d
Presenting the system share sheet from a full ImmersiveSpace on visionOS 26
We are building a visionOS 26 app (deployment target visionOS 26.0). Inside a full immersive space, the user takes a spatial photo. The photo is shown on a RealityView attachment. We need the system share sheet( AirDrop, Messages, Mail, Copy, Save Image, and the item preview with Done) to appear when the user taps Share on that attachment. The immersive space is: ImmersiveSpace(id: "ImmersiveView") { ImmersiveView() } .immersionStyle(selection: $panoImageView, in: .full) .upperLimbVisibility(.visible) The review UI is a RealityView attachment, not a window: Attachment(id: "panoramaFrameCaptureReview") { PanoramaFrameCaptureReviewView(model: frameCapture) { guard let path = frameCapture.shareURL?.path else { return } dismissWindow(id: "PanoramaPhotoShare") Task { @MainActor in try? await Task.sleep(nanoseconds: 180_000_000) openWindow(id: "PanoramaPhotoShare", value: path) } } } The shared item is a stereo HEIC written with Image I/O (kCGImagePropertyGroupTypeStereoPair, left/right images, HEIF camera extrinsics and SimplifiedPinhole intrinsics). The same data displays correctly with ImagePresentationComponent and saves to Photos as a spatial photo. Share is the only part that fails. Attempt 1. ShareLink on the attachment Tapping Share does nothing. On entry to the immersive space the system logs: Presentations are not currently supported in Immersive contexts. Attempt 2. UIActivityViewController from the attachment’s hosting controller let activity = UIActivityViewController(activityItems: [fileURL], applicationActivities: nil) var presenter: UIViewController = self while let parent = presenter.parent { presenter = parent } presenter.present(activity, animated: true) presenter is UIHostingController<RootView>. The console then says: Skipping popover presentations transition, missing window or scene for <UIActivityViewController>. Failed to request default share mode for fileURL:...heic error:Error Domain=NSOSStatusErrorDomain Code=-10814 No share UI appears. presentedViewController is non-nil, so a “did it present?” check does not detect the failure. Attempt 3. A real WindowGroup whose only job is to present UIActivityViewController WindowGroup(id: "PanoramaPhotoShare", for: String.self) { path in if let path = path.wrappedValue { PanoramaPhotoShareWindow(path: path) } } .windowStyle(.plain) .defaultSize(width: 20, height: 20) .defaultWindowPlacement { _, _ in WindowPlacement(.utilityPanel) } struct PanoramaPhotoShareWindow: View { let path: String @Environment(.dismissWindow) private var dismissWindow var body: some View { PanoramaPhotoSharePresenter(url: URL(fileURLWithPath: path)) { dismissWindow(id: "PanoramaPhotoShare") } .frame(width: 8, height: 8) .background(.clear) } } final class PanoramaPhotoShareController: UIViewController { override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) guard view.window != nil, let url else { return } let activity = UIActivityViewController(activityItems: [url], applicationActivities: nil) activity.completionWithItemsHandler = { _, _, _, _ in self.onFinish?() } present(activity, animated: true) } } Tapping Share opens this window and the app crashes immediately. We removed the feature so users are not crashed. An earlier build that also put a ShareLink in that window logged: Attempt to present <UIActivityViewController> on <UIHostingController<...PanoramaPhotoShareWindow...>> which is already presenting <UIActivityViewController>. Question What is the supported way, on visionOS 26, to present the system share sheet while a .full ImmersiveSpace stays open? If a window is required, how should that window present the sheet without crashing, and without showing a second window that only contains another Share button?
1
0
756
6d
visionOS 27 beta 4 (24M5326g) stuck: update fails with MSU 806 MADownloadDaemonNotReady, all Apple services hang
My Apple Vision Pro is still on visionOS 27.0 beta 4 (24M5326g) and can't update or use any Apple service. Safari works. Software Update offers visionOS 27.2 (24N6120) but stays at "Update Requested". The OTAUpdate log shows: MobileSoftwareUpdateErrorDomain 806 "Failed to download update brain asset, MADownLoadResult:MADownloadDaemonNotReady". App Store can't connect, Apple TV and Games say a network connection is required, iCloud doesn't work, and Media & Purchases hangs at "Signing in to Apple Media Services". Other devices on the same network work normally. Reset All Settings didn't help. devicectl device sysdiagnose fails with CoreDeviceCLISupport.DiagnoseError 0. I don't have a Developer Strap. Has anyone recovered a Vision Pro stuck on an early beta like this without one? Filed as FB25386556.
0
0
438
1w
Async Entity(contentsOf:) is 15 to 20x slower while an ARView is rendering
While a non-AR ARView is on screen and rendering, await Entity(contentsOf:) takes about 26 s to load a 4.5 MB USDZ with 300 textured meshes. The same file loads in about 1.5 s with the synchronous Entity.load(contentsOf:), or with the async API while the view is hidden. iPhone 16 Pro, iOS 27.2Mac Catalyst, macOS 27.2await Entity(contentsOf:), view rendering22 to 26 s26 sEntity.load(contentsOf:), view rendering1.6 s1.1 to 1.7 sawait Entity(contentsOf:), view hidden1.4 s1.3 to 1.5 sModelEntity(contentsOf:) and Entity.loadAsync(contentsOf:) behave the same. A .reality file loads fast either way, and the iOS Simulator doesn't show it. A Time Profiler trace shows the main thread blocked in re::RenderThread::waitForFramePacing on every frame, so the @MainActor import only advances between frames. Neither workaround fits loading content into a scene the user is looking at: the sync load blocks the main thread, and hiding the view blanks it. Filed as FB25340264, with a sample project.
0
0
179
2w
visionOS : any non-nil preferredSurroundingsEffect enables a light-spill halo around VideoPlayerComponent video
Hi all — sharing a platform behavior I isolated while building a custom immersive video player, in case others hit it (and to ask whether it's intended). Finding On visionOS 27 (Xcode 27), an entity playing video via VideoPlayerComponent(videoRenderer:) gets a light-spill "screen glow" halo around its edges whenever the immersive space declares any non-nil preferredSurroundingsEffect. The halo follows the video's colors frame by frame. With no surroundings effect (nil), there is no halo. Quick repro Progressive immersive space + VideoPlayerComponent playing. Add .preferredSurroundingsEffect(.dim(intensity: 0.0)) → halo appears (even though the effect is visually a no-op). Remove it → halo disappears. Same with .colorMultiply(_:) and preset effects. Things I ruled out on device (Vision Pro) ImmersiveContentBrightness (.custom(1.0) vs .automatic): no difference. VideoPlayerComponent configuration (.stereo, spatial video mode, isPassthroughTintingEnabled) and component attach timing: no difference. Presenting the same video via VideoMaterial: no halo. Bright white SwiftUI content: no halo. Questions Is this coupling intended? The preferredSurroundingsEffect docs don't mention any effect on video playback. Is there a public way to keep a surroundings effect (e.g. room dimming) while avoiding the video light spill? I found none on VideoPlayerComponent. Current workaround: don't declare any surroundings effect in the modes where the halo is undesirable. Also filed via Feedback Assistant(FB25130748). Curious if anyone else has seen this or knows a switch.
2
1
3.0k
2w
Metal Compositor Service & Persona (VisionOS)
Hello, I'm currently trying to make a collaborative app. But it just works only on Reality View, when I tried to use Compositor Layer like below, the personas disappeared. ImmersiveSpace(id: "ImmersiveSpace-Metal") { CompositorLayer(configuration: MetalLayerConfiguration()) { layerRenderer in SpatialRenderer_InitAndRun(layerRenderer) } } Is there any potential solution too see Personas in Metal view? Thanks in advance!
3
0
2k
3w
Main Camera development request blocked by Individual-to-Organization conversion
We are developing MadnessBot as a business-only Vision Pro automotive inspection app for professional mechanics and repair shops, intended for private business distribution. Main Camera access is essential for analyzing the vehicle and component in front of the technician. A native development app is running on our physical headset, and chat plus OBDLink CX diagnostics have been tested. Our existing Apple Developer Program membership is enrolled as Individual. We contacted Developer Support on October 6, 2026, with a follow-up on October 9, for assistance converting it to Organization. The conversion form asks for the type of tax ID historically associated with the Individual membership; the Account Holder does not know that record and has asked Support to verify it before selecting an answer. The enterprise API request form remains inaccessible until organization enrollment is confirmed. We have not submitted a camera entitlement request yet. Our planned initial request is Development Only Main Camera access for registered test devices. Feedback reference: FB25132939. Could the Enterprise APIs for visionOS team help route this prerequisite blocker to membership support, or advise the correct escalation path so we can complete conversion and apply for Development Only access?
0
0
1.6k
Oct ’26
RealityKit VideoMaterial renders 8-bit HEVC HLG/BT.2020 360° video with a purple tint in the visionOS Simulator (device is fine)
We paint a looping 360° video on the inside of a sphere with VideoMaterial(avPlayer:): an AVQueuePlayer plus AVPlayerLooper, a ModelEntity with an inward-facing equirectangular mesh, inside a .mixed ImmersiveSpace. No shaders, no VideoPlayerComponent. We could not find an official Apple sample that puts a VideoMaterial on a 360° sphere; this is the plain pattern from the VideoMaterial(avPlayer:) reference and the one used in threads like 734081. On Apple Vision Pro hardware the video renders correctly. In the visionOS Simulator (27.0, 26.5 and earlier 26.x, Xcode 27.0) the whole frame has a strong purple/magenta cast. Audio and timing are fine. The video (which we cannot share, so here is its metadata, image sample of issue on simulator provided below): MP4, HEVC Main, 8-bit 4:2:0, 3840x1920, tagged BT.2020 primaries, HLG transfer (ARIB STD-B67), BT.2020 non-constant matrix, both in the colr atom and in the SPS VUI. ffprobe -show_format -show_streams (trimmed): [STREAM] index=0 codec_name=hevc profile=Main codec_type=video codec_tag_string=hvc1 width=3840 height=1920 pix_fmt=yuv420p color_range=tv color_space=bt2020nc color_transfer=arib-std-b67 color_primaries=bt2020 r_frame_rate=30000/1001 avg_frame_rate=679200/22663 duration=37.771667 bit_rate=25030607 [SIDE_DATA] side_data_type=Stereo 3D type=2D horizontal_field_of_view=360000/1000 [/SIDE_DATA] [/STREAM] [STREAM] index=1 codec_name=aac profile=LC codec_type=audio codec_tag_string=mp4a sample_fmt=fltp sample_rate=48000 channels=2 channel_layout=stereo duration=37.758333 bit_rate=128176 [/STREAM] [FORMAT] nb_streams=2 format_name=mov,mp4,m4a,3gp,3g2,mj2 duration=37.778333 bit_rate=25160348 TAG:major_brand=mp42 TAG:minor_version=1 TAG:compatible_brands=isommp41mp42 [/FORMAT] AVFoundation's view of the track, from CMFormatDescriptionGetExtension on the loaded video track: primaries=ITU_R_2020 transfer=ITU_R_2100_HLG matrix=ITU_R_2020 bitsPerComponent=8 The playback code, reduced to the essentials: let item = AVPlayerItem(url: fileURL) let looper = AVPlayerLooper(player: player, templateItem: item) // retained player.actionAtItemEnd = .advance let material = VideoMaterial(avPlayer: player) let sphere = ModelEntity( mesh: try equirectSphere(radius: 12), // lat/long grid, normals inward, materials: [material] // UVs (u, 1 - v), inward winding ) sphere.position = [0, 1.5, 0] rootEntity.addChild(sphere) // rootEntity was added in RealityView { } player.play() What we have ruled out in a minimal sample project: Apple's own 360° HLS example (360 Lighthouse, HEVC Main 10, 10-bit, BT.709 SDR) plays with correct colours in the same sphere, same code, same simulator session. Rewriting our file's colr atom to BT.709 (three bytes, no re-encode) is honoured by AVFoundation (the track's CMFormatDescription then reports ITU_R_709_2 for primaries, transfer and matrix) but the tint stays. So the remaining differences between the failing file and Apple's working stream are 8-bit Main vs 10-bit Main 10, HLG/BT.2020 in the bitstream VUI vs BT.709, and local MP4 vs HLS. The minimal sample project (without the video) is available on request. Is this a known limitation of the simulator's VideoMaterial path with 8-bit HLG content, and is there a recommended way to get device-equivalent colour in the simulator? Feedback filed as FB24997147. Here is a sample of the result on the simulator of a cement column, painted white, but rendered purple on simulator:
1
0
3.4k
Oct ’26
Revealed keyboard drifts in progressive immersion, and no immersion style gives windows-in-front + Crown + passthrough cutouts
Environment: Apple Vision Pro, visionOS 27.0.1 (24M372). Magic Keyboard, with Settings › Awareness & Safety › Reveal Keyboards set to Always. Our app puts the user in an opaque virtual room while they work at their real desk, using app windows and Mac Virtual Display. A virtual desk is placed on the real desk. It is world-locked: positioned once from a PlaneAnchor (PlaneDetectionProvider), then a plain entity at fixed ImmersiveSpace coordinates. No AnchorEntity or WorldAnchor is involved. We offer two modes: .mixed, and .progressive for Digital Crown control. Each gives us only half of what desk work needs. 1. The revealed keyboard drifts in progressive immersion (FB25006789) In .progressive, the physical keyboard shown by keyboard awareness does not stay registered with the virtual desk. After the keyboard has been out of view for a few seconds (for example, while looking at a Mac Virtual Display window), it looks "floaty" when you look back: as the head turns, it slides against the desk. Turning right, the keyboard moves left farther than the desk does. What we checked: It happens in .progressive at any Crown amount, and in .full. With identical content in .mixed (no app passthrough cutout, so again only keyboard awareness shows the keyboard), it is much steadier. On 27.0.1, PlaneAnchor and DeviceAnchor coordinateSpace(correction: .rendered) are exactly equal to their .none transforms: 0 mm, 0°, scale 1. That held over 835 per-frame samples with ±50° yaw and up to 36 cm of head movement. So the rendered correction gives the app nothing to compensate with. The app's desk transform is constant while the drift is visible. upperLimbVisibility(.automatic) vs .visible and a .portrait progressive aspect ratio make no difference. Possibly related: https://developer.apple.com/forums/thread/796557 (FB19666209). 2. No immersion style combines what desk work needs (FB25006837) We need, at the same time: windows (our own and Mac Virtual Display) never covered by the room's walls, furniture or trees; the Digital Crown to bring the real surroundings back in; a passthrough cutout over the real desk, and a well-registered keyboard. .mixed: ✓ OcclusionMaterial cutouts reveal passthrough. ✓ The keyboard stays registered. ✗ RealityKit entities can render in front of windows, including Mac Virtual Display and window chrome. breakthroughEffect doesn't cover whole windows or Mac Virtual Display. ✗ The Crown can't adjust immersion. .progressive: ✓ Windows always stay in front of immersive content (as an Apple engineer confirmed in https://developer.apple.com/forums/thread/764556). ✓ The Crown adjusts immersion. ✗ OcclusionMaterial reveals nothing inside the portal, so there is no desk cutout. ✗ The keyboard drifts (issue 1). Because of issue 1 we have switched our default back to .mixed, and lost windows-in-front. Questions Is keyboard awareness in .progressive/.full expected to be registered less accurately than in .mixed? Is there a supported way to keep it registered with world-locked content, or to get the pose at which the system draws it? In .mixed, is there a supported way to keep windows (including Mac Virtual Display) in front of an app's immersive content? Or, in .progressive, a supported way to show passthrough in an app-defined region inside the portal? Any pointers or workarounds are appreciated.
0
0
1.6k
Sep ’26
RoomPlan crashes spiking on iOS 27
We're seeing a pretty significant spike in RoomPlan crashes on iOS 27, specifically a RoomScanCore EXC_BREAKPOINT. This crash isn't new, we've seen a low background rate of it across earlier iOS versions, but since iOS 27 shipped, the rate has jumped substantially, well beyond what iOS 27's adoption share alone would explain. We haven't reproduced the crash internally. As with the existing crashes, it's seemingly environment/scenario-dependent in ways that don't always show up in our QA passes. Is anyone else seeing this? Are there known issues that will be patched next month with iOS 27.2?
1
0
1.3k
Sep ’26
visionOS 27.0 simulator restarts (backboardd EXC_BREAKPOINT in DRValidateIndices) on MeshResource.generate(from:) for a valid multi-part mesh
Since moving to Xcode 27.0 (27A266a) with the visionOS 27.0 simulator runtime (24M362), generating a mesh with several parts through MeshResource.generate(from: MeshResource.Contents) makes the simulator go black for a couple of seconds and restart. The app does not crash; the simulator's render server does: Thread ... Crashed :: com.apple.CoreRE.ResourceFetchManager-service-queue 0 DirectResource specialized static IndexValidation._validate_neon(_:vertexCount:) 1 DirectResource DRValidateIndices 2 CoreRE re::(anonymous namespace)::validatePrivateData(id<REMeshPayload>, unsigned char const*, unsigned long) 3 CoreRE -[REMultiBufferMeshPayload initWithCoder:] 4 Foundation _decodeObject Environment: MacBook Pro (M1 Pro, 16 GB), macOS 27.0 (26A428), Xcode 27.0 (27A266a), visionOS 27.0 SDK (24M361); failing runtime visionOS 27.0 simulator (24M362); working: the visionOS 26.5 simulator runtime (23O470) under the same Xcode, and an Apple Vision Pro on visionOS 27. What I have established: It reproduces with a fully synthetic mesh: one model, three parts (1330 / 20 / 24 vertices, 9513 / 72 / 120 indices), random positions, normals, UVs and triangle indices. Only the part layout matters. The mesh is valid: every part's indices are within its own vertex count, counts are multiples of three, attribute buffers match. RealityKit's app-side validator agrees and lets it through (it does reject a broken part with REMeshPartDescriptor: index buffer payload range is invalid), then the render server's validator traps on the accepted payload. Single-part meshes of any size, primitives, and compiled .reality scenes are fine. Same mesh, same Xcode: fine on a simulator device created on the 26.5 runtime, fine on a visionOS 27 device. Only the 27.0 simulator runtime traps. FB number: FB24831983. Workarounds so far: a simulator device on the 26.5 runtime, or generating one MeshResource per part. Has anyone seen DRValidateIndices trapping on the 27.0 simulator?
1
0
2.7k
Sep ’26
WebXR Augmented Reality Module
On visionOS 26.5, I noticed the Safari Extension 'WebXR Augmented Reality Module' option. I've enabled this option in Safari Settings, and restarted Safari, but when I try to launch a WebXR experience that supports immersive-ar as option (for example this one: https://www.viverse.com/dPASDhP I don't see the option to Play in AR (like I do with a Quest 3S headset) Does anyone have any examples of websites that can make use of this new WebXR Augmented Reality Module feature flag in Safari, on visionOS?
3
4
1.8k
Sep ’26
PresentationComponent loses gaze targeting or dismisses in a volumetric window
On visionOS 26.6 and 27 latest beta: PresentationComponent in a volumetric WindowGroup, when looking at the volume from a specific lower/back region create two bugs: buttons inside the presentation have their gaze obstructed by hand presence, no button shows any hover highlight hand movement in that specific area auto dismisses the presentation The focused public repro uses a thin ModelEntity with InputTargetComponent and ordinary SwiftUI buttons. Its README includes two clearer videos: https://github.com/mesqueeb/PresentationAutoCloseInBackOfVolume 1. Gaze obstructed on buttons when hand is at specific location (see "Test Action" has no hover highlight, even though i look at it) 2. Hover state restored on buttons when hand is gone (see "Test Action" has hover highlight) 3. Presentation auto closed when hand comes back The weirdest part: This only happens at a specific location, when walking to the back of the volume, then turning around and interacting with the volume from the lower right back side. Any workaround or fix guidance would be appreciated. Feedback Assistant: FB24569418.
2
0
1.6k
Sep ’26
Immersive space closes if immersive environment was fully open
If the immersive environment is fully open, then an immersive space is closed right after attempting to open it. The issue specifically impacts a mixed immersive space which replaces the immersive environment while the immersive environment is at 100%. This issue does not occur if immersive environment is any less than 100%, or if the immersionStyle is .full, or if immersiveEnvirionmentBehavior is .coexist. This can be reproduced in the template for an immersive visionOS app by removing the line .immersionStyle(selection: .constant(.full), in: .full) Then run the app and open the immersive space, and the space then closes after attempting to open it. I’m using visionOS 27.0 beta 5 and Xcode 27.0 beta 5. I've submitted feedback as FB24353599 Video of the behavior: https://youtu.be/wafDXRZVyog
1
0
1.1k
Aug ’26
Apple Cinema Environment
I’d be very interested in having Apple Cinema Environment deployed across all third party apps (I.e Disney+, HBO Max, etc). These already have their immersive environments as well as the option to use Apple’s immersive environments (i.e the Moon). However the Apple Cinema / Theater is the best implementation I’ve seen thus far however its currently limited to the AppleTV content. Are there any plans to deploy this across other apps?
1
0
1.1k
Aug ’26
How do I create Enterprise.license file?
Hello, I did get an email that I now have access to the Enterprise APIs and I should create the license file. However, I can't figure out a way to create the license file. I did go check out that button, it did have the buttons to "renew" the licenses I got a while ago (via email). but no way to create new ones. and I am enrolled in the "Apple Developer Program as an organization " Where can I create Enterprise.license file?
4
0
1.7k
Aug ’26
Adding a ManipulationComponent detaches the whole RealityView content hierarchy on visionOS 27
On visionOS 27 (27.0 Seed 4, 24M5326g), adding a ManipulationComponent to a single entity makes RealityKit remove the RealityView's ENTIRE content hierarchy from the scene and re-add it about 30ms later. Not just the manipulated entity — everything. Same app binary on visionOS 26: never happens. FB24092291. Bisected on the same build and device: two entities, neither with manipulation -> no detach add one entity with a ManipulationComponent -> detach, every time same entity, manipulation swapped for my own drag/rotate/ scale gesture handling -> no detach Everything else is identical between the last two cases — same entity, same collision shape, same InputTargetComponent, same ViewAttachmentComponent, same scene, same view hierarchy. The only variable is whether the component is installed. Setup: an immersive space containing a SwiftUI RealityView. One root entity added to the RealityViewContent in the make closure; all app content built as its descendants. The detach is brief but not harmless: every entity in the hierarchy gets SceneEvents.WillRemoveEntity and then DidAddEntity, so anything keyed to those events runs a full teardown and re-add for content that was never meant to go anywhere. In my app that cascade is what makes the scene visibly empty and rebuild. Nothing in my code removes it. Stack captured from a WillRemoveEntity subscription on the root — frame 0 is my callback, everything above it is framework: SwiftUI (AttributeGraph StatefulRule.withObservation ...) -> RealityFoundation -> CoreRE -> entity removal Ruled out before landing on the component: make runs exactly once, the root re-enters a scene with the same ObjectIdentifier (not a re-host), the hosting controller is never deallocated, there is exactly one RealityViewContent.add(_:) in the whole app, and with Self._printChanges() in the view's body the detach happens in an update pass where the body is not re-evaluated at all. Also ruled out: transient overlay UI (suppressed entirely, still detached) and entity count. Workaround if this is biting you: skip ManipulationComponent on 27 and handle drag/rotate/scale yourself. That is what I am doing for now. If you are debugging something similar: SceneEvents.WillRemoveEntity also fires when an entity merely leaves a scene, so a teardown-looking log is not proof anything was destroyed. Check whether make ran twice and whether the scene identity changed before suspecting your own code.
1
2
1.6k
Aug ’26
Eye tracking data access for researchers
Hi, Is there a way for researchers to get or request access to eye tracking data from the Apple Vision Pro within the boundaries of the app to be developed? I'm currently involved in research where access to eye tracking data would be beneficial (I'm aware of many existing discussions about this, but I was still wondering if there might be an option, particularly for research labs.) Thank you for your answer.
Replies
3
Boosts
1
Views
917
Activity
4h
Built-in environments in the visionOS simulator
Should Environments like White Sands and Mount Hood work in the visionOS simulator? In a fresh visionOS 27.2 simulator, selecting an Environment from Home View does nothing. I saw the same behavior with visionOS 27.0. After selecting the Moon, Control Center still shows White Sands. Moving the immersion slider in Control Center changes the position of Device Hub’s sidebar slider, but that slider remains disabled and no environment appears. This happens before installing or running my app. The simulated room scenes work. The simulator logs show that the environment catalog downloads successfully, but the scenic assets are marked state=notPresent. Trying to increase immersion produces: Default environment identifier Wolf is no longer available on disk. Resetting to system default. Invalid environment Wolf requested, it does not exist or is not in correct state (Unavailable). Failed to load environment: Error Domain=RealityEnvironmentError Code=407 "Environment action not performed." (Wolf is the internal identifier for White Sands.) Is this an expected simulator limitation, a known issue, or is there a way to download and enable these environments?
Replies
1
Boosts
0
Views
351
Activity
1d
Presenting the system share sheet from a full ImmersiveSpace on visionOS 26
We are building a visionOS 26 app (deployment target visionOS 26.0). Inside a full immersive space, the user takes a spatial photo. The photo is shown on a RealityView attachment. We need the system share sheet( AirDrop, Messages, Mail, Copy, Save Image, and the item preview with Done) to appear when the user taps Share on that attachment. The immersive space is: ImmersiveSpace(id: "ImmersiveView") { ImmersiveView() } .immersionStyle(selection: $panoImageView, in: .full) .upperLimbVisibility(.visible) The review UI is a RealityView attachment, not a window: Attachment(id: "panoramaFrameCaptureReview") { PanoramaFrameCaptureReviewView(model: frameCapture) { guard let path = frameCapture.shareURL?.path else { return } dismissWindow(id: "PanoramaPhotoShare") Task { @MainActor in try? await Task.sleep(nanoseconds: 180_000_000) openWindow(id: "PanoramaPhotoShare", value: path) } } } The shared item is a stereo HEIC written with Image I/O (kCGImagePropertyGroupTypeStereoPair, left/right images, HEIF camera extrinsics and SimplifiedPinhole intrinsics). The same data displays correctly with ImagePresentationComponent and saves to Photos as a spatial photo. Share is the only part that fails. Attempt 1. ShareLink on the attachment Tapping Share does nothing. On entry to the immersive space the system logs: Presentations are not currently supported in Immersive contexts. Attempt 2. UIActivityViewController from the attachment’s hosting controller let activity = UIActivityViewController(activityItems: [fileURL], applicationActivities: nil) var presenter: UIViewController = self while let parent = presenter.parent { presenter = parent } presenter.present(activity, animated: true) presenter is UIHostingController<RootView>. The console then says: Skipping popover presentations transition, missing window or scene for <UIActivityViewController>. Failed to request default share mode for fileURL:...heic error:Error Domain=NSOSStatusErrorDomain Code=-10814 No share UI appears. presentedViewController is non-nil, so a “did it present?” check does not detect the failure. Attempt 3. A real WindowGroup whose only job is to present UIActivityViewController WindowGroup(id: "PanoramaPhotoShare", for: String.self) { path in if let path = path.wrappedValue { PanoramaPhotoShareWindow(path: path) } } .windowStyle(.plain) .defaultSize(width: 20, height: 20) .defaultWindowPlacement { _, _ in WindowPlacement(.utilityPanel) } struct PanoramaPhotoShareWindow: View { let path: String @Environment(.dismissWindow) private var dismissWindow var body: some View { PanoramaPhotoSharePresenter(url: URL(fileURLWithPath: path)) { dismissWindow(id: "PanoramaPhotoShare") } .frame(width: 8, height: 8) .background(.clear) } } final class PanoramaPhotoShareController: UIViewController { override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) guard view.window != nil, let url else { return } let activity = UIActivityViewController(activityItems: [url], applicationActivities: nil) activity.completionWithItemsHandler = { _, _, _, _ in self.onFinish?() } present(activity, animated: true) } } Tapping Share opens this window and the app crashes immediately. We removed the feature so users are not crashed. An earlier build that also put a ShareLink in that window logged: Attempt to present <UIActivityViewController> on <UIHostingController<...PanoramaPhotoShareWindow...>> which is already presenting <UIActivityViewController>. Question What is the supported way, on visionOS 26, to present the system share sheet while a .full ImmersiveSpace stays open? If a window is required, how should that window present the sheet without crashing, and without showing a second window that only contains another Share button?
Replies
1
Boosts
0
Views
756
Activity
6d
visionOS 27 beta 4 (24M5326g) stuck: update fails with MSU 806 MADownloadDaemonNotReady, all Apple services hang
My Apple Vision Pro is still on visionOS 27.0 beta 4 (24M5326g) and can't update or use any Apple service. Safari works. Software Update offers visionOS 27.2 (24N6120) but stays at "Update Requested". The OTAUpdate log shows: MobileSoftwareUpdateErrorDomain 806 "Failed to download update brain asset, MADownLoadResult:MADownloadDaemonNotReady". App Store can't connect, Apple TV and Games say a network connection is required, iCloud doesn't work, and Media & Purchases hangs at "Signing in to Apple Media Services". Other devices on the same network work normally. Reset All Settings didn't help. devicectl device sysdiagnose fails with CoreDeviceCLISupport.DiagnoseError 0. I don't have a Developer Strap. Has anyone recovered a Vision Pro stuck on an early beta like this without one? Filed as FB25386556.
Replies
0
Boosts
0
Views
438
Activity
1w
Async Entity(contentsOf:) is 15 to 20x slower while an ARView is rendering
While a non-AR ARView is on screen and rendering, await Entity(contentsOf:) takes about 26 s to load a 4.5 MB USDZ with 300 textured meshes. The same file loads in about 1.5 s with the synchronous Entity.load(contentsOf:), or with the async API while the view is hidden. iPhone 16 Pro, iOS 27.2Mac Catalyst, macOS 27.2await Entity(contentsOf:), view rendering22 to 26 s26 sEntity.load(contentsOf:), view rendering1.6 s1.1 to 1.7 sawait Entity(contentsOf:), view hidden1.4 s1.3 to 1.5 sModelEntity(contentsOf:) and Entity.loadAsync(contentsOf:) behave the same. A .reality file loads fast either way, and the iOS Simulator doesn't show it. A Time Profiler trace shows the main thread blocked in re::RenderThread::waitForFramePacing on every frame, so the @MainActor import only advances between frames. Neither workaround fits loading content into a scene the user is looking at: the sync load blocks the main thread, and hiding the view blanks it. Filed as FB25340264, with a sample project.
Replies
0
Boosts
0
Views
179
Activity
2w
visionOS : any non-nil preferredSurroundingsEffect enables a light-spill halo around VideoPlayerComponent video
Hi all — sharing a platform behavior I isolated while building a custom immersive video player, in case others hit it (and to ask whether it's intended). Finding On visionOS 27 (Xcode 27), an entity playing video via VideoPlayerComponent(videoRenderer:) gets a light-spill "screen glow" halo around its edges whenever the immersive space declares any non-nil preferredSurroundingsEffect. The halo follows the video's colors frame by frame. With no surroundings effect (nil), there is no halo. Quick repro Progressive immersive space + VideoPlayerComponent playing. Add .preferredSurroundingsEffect(.dim(intensity: 0.0)) → halo appears (even though the effect is visually a no-op). Remove it → halo disappears. Same with .colorMultiply(_:) and preset effects. Things I ruled out on device (Vision Pro) ImmersiveContentBrightness (.custom(1.0) vs .automatic): no difference. VideoPlayerComponent configuration (.stereo, spatial video mode, isPassthroughTintingEnabled) and component attach timing: no difference. Presenting the same video via VideoMaterial: no halo. Bright white SwiftUI content: no halo. Questions Is this coupling intended? The preferredSurroundingsEffect docs don't mention any effect on video playback. Is there a public way to keep a surroundings effect (e.g. room dimming) while avoiding the video light spill? I found none on VideoPlayerComponent. Current workaround: don't declare any surroundings effect in the modes where the halo is undesirable. Also filed via Feedback Assistant(FB25130748). Curious if anyone else has seen this or knows a switch.
Replies
2
Boosts
1
Views
3.0k
Activity
2w
Metal Compositor Service & Persona (VisionOS)
Hello, I'm currently trying to make a collaborative app. But it just works only on Reality View, when I tried to use Compositor Layer like below, the personas disappeared. ImmersiveSpace(id: "ImmersiveSpace-Metal") { CompositorLayer(configuration: MetalLayerConfiguration()) { layerRenderer in SpatialRenderer_InitAndRun(layerRenderer) } } Is there any potential solution too see Personas in Metal view? Thanks in advance!
Replies
3
Boosts
0
Views
2k
Activity
3w
Main Camera development request blocked by Individual-to-Organization conversion
We are developing MadnessBot as a business-only Vision Pro automotive inspection app for professional mechanics and repair shops, intended for private business distribution. Main Camera access is essential for analyzing the vehicle and component in front of the technician. A native development app is running on our physical headset, and chat plus OBDLink CX diagnostics have been tested. Our existing Apple Developer Program membership is enrolled as Individual. We contacted Developer Support on October 6, 2026, with a follow-up on October 9, for assistance converting it to Organization. The conversion form asks for the type of tax ID historically associated with the Individual membership; the Account Holder does not know that record and has asked Support to verify it before selecting an answer. The enterprise API request form remains inaccessible until organization enrollment is confirmed. We have not submitted a camera entitlement request yet. Our planned initial request is Development Only Main Camera access for registered test devices. Feedback reference: FB25132939. Could the Enterprise APIs for visionOS team help route this prerequisite blocker to membership support, or advise the correct escalation path so we can complete conversion and apply for Development Only access?
Replies
0
Boosts
0
Views
1.6k
Activity
Oct ’26
RealityKit VideoMaterial renders 8-bit HEVC HLG/BT.2020 360° video with a purple tint in the visionOS Simulator (device is fine)
We paint a looping 360° video on the inside of a sphere with VideoMaterial(avPlayer:): an AVQueuePlayer plus AVPlayerLooper, a ModelEntity with an inward-facing equirectangular mesh, inside a .mixed ImmersiveSpace. No shaders, no VideoPlayerComponent. We could not find an official Apple sample that puts a VideoMaterial on a 360° sphere; this is the plain pattern from the VideoMaterial(avPlayer:) reference and the one used in threads like 734081. On Apple Vision Pro hardware the video renders correctly. In the visionOS Simulator (27.0, 26.5 and earlier 26.x, Xcode 27.0) the whole frame has a strong purple/magenta cast. Audio and timing are fine. The video (which we cannot share, so here is its metadata, image sample of issue on simulator provided below): MP4, HEVC Main, 8-bit 4:2:0, 3840x1920, tagged BT.2020 primaries, HLG transfer (ARIB STD-B67), BT.2020 non-constant matrix, both in the colr atom and in the SPS VUI. ffprobe -show_format -show_streams (trimmed): [STREAM] index=0 codec_name=hevc profile=Main codec_type=video codec_tag_string=hvc1 width=3840 height=1920 pix_fmt=yuv420p color_range=tv color_space=bt2020nc color_transfer=arib-std-b67 color_primaries=bt2020 r_frame_rate=30000/1001 avg_frame_rate=679200/22663 duration=37.771667 bit_rate=25030607 [SIDE_DATA] side_data_type=Stereo 3D type=2D horizontal_field_of_view=360000/1000 [/SIDE_DATA] [/STREAM] [STREAM] index=1 codec_name=aac profile=LC codec_type=audio codec_tag_string=mp4a sample_fmt=fltp sample_rate=48000 channels=2 channel_layout=stereo duration=37.758333 bit_rate=128176 [/STREAM] [FORMAT] nb_streams=2 format_name=mov,mp4,m4a,3gp,3g2,mj2 duration=37.778333 bit_rate=25160348 TAG:major_brand=mp42 TAG:minor_version=1 TAG:compatible_brands=isommp41mp42 [/FORMAT] AVFoundation's view of the track, from CMFormatDescriptionGetExtension on the loaded video track: primaries=ITU_R_2020 transfer=ITU_R_2100_HLG matrix=ITU_R_2020 bitsPerComponent=8 The playback code, reduced to the essentials: let item = AVPlayerItem(url: fileURL) let looper = AVPlayerLooper(player: player, templateItem: item) // retained player.actionAtItemEnd = .advance let material = VideoMaterial(avPlayer: player) let sphere = ModelEntity( mesh: try equirectSphere(radius: 12), // lat/long grid, normals inward, materials: [material] // UVs (u, 1 - v), inward winding ) sphere.position = [0, 1.5, 0] rootEntity.addChild(sphere) // rootEntity was added in RealityView { } player.play() What we have ruled out in a minimal sample project: Apple's own 360° HLS example (360 Lighthouse, HEVC Main 10, 10-bit, BT.709 SDR) plays with correct colours in the same sphere, same code, same simulator session. Rewriting our file's colr atom to BT.709 (three bytes, no re-encode) is honoured by AVFoundation (the track's CMFormatDescription then reports ITU_R_709_2 for primaries, transfer and matrix) but the tint stays. So the remaining differences between the failing file and Apple's working stream are 8-bit Main vs 10-bit Main 10, HLG/BT.2020 in the bitstream VUI vs BT.709, and local MP4 vs HLS. The minimal sample project (without the video) is available on request. Is this a known limitation of the simulator's VideoMaterial path with 8-bit HLG content, and is there a recommended way to get device-equivalent colour in the simulator? Feedback filed as FB24997147. Here is a sample of the result on the simulator of a cement column, painted white, but rendered purple on simulator:
Replies
1
Boosts
0
Views
3.4k
Activity
Oct ’26
Revealed keyboard drifts in progressive immersion, and no immersion style gives windows-in-front + Crown + passthrough cutouts
Environment: Apple Vision Pro, visionOS 27.0.1 (24M372). Magic Keyboard, with Settings › Awareness & Safety › Reveal Keyboards set to Always. Our app puts the user in an opaque virtual room while they work at their real desk, using app windows and Mac Virtual Display. A virtual desk is placed on the real desk. It is world-locked: positioned once from a PlaneAnchor (PlaneDetectionProvider), then a plain entity at fixed ImmersiveSpace coordinates. No AnchorEntity or WorldAnchor is involved. We offer two modes: .mixed, and .progressive for Digital Crown control. Each gives us only half of what desk work needs. 1. The revealed keyboard drifts in progressive immersion (FB25006789) In .progressive, the physical keyboard shown by keyboard awareness does not stay registered with the virtual desk. After the keyboard has been out of view for a few seconds (for example, while looking at a Mac Virtual Display window), it looks "floaty" when you look back: as the head turns, it slides against the desk. Turning right, the keyboard moves left farther than the desk does. What we checked: It happens in .progressive at any Crown amount, and in .full. With identical content in .mixed (no app passthrough cutout, so again only keyboard awareness shows the keyboard), it is much steadier. On 27.0.1, PlaneAnchor and DeviceAnchor coordinateSpace(correction: .rendered) are exactly equal to their .none transforms: 0 mm, 0°, scale 1. That held over 835 per-frame samples with ±50° yaw and up to 36 cm of head movement. So the rendered correction gives the app nothing to compensate with. The app's desk transform is constant while the drift is visible. upperLimbVisibility(.automatic) vs .visible and a .portrait progressive aspect ratio make no difference. Possibly related: https://developer.apple.com/forums/thread/796557 (FB19666209). 2. No immersion style combines what desk work needs (FB25006837) We need, at the same time: windows (our own and Mac Virtual Display) never covered by the room's walls, furniture or trees; the Digital Crown to bring the real surroundings back in; a passthrough cutout over the real desk, and a well-registered keyboard. .mixed: ✓ OcclusionMaterial cutouts reveal passthrough. ✓ The keyboard stays registered. ✗ RealityKit entities can render in front of windows, including Mac Virtual Display and window chrome. breakthroughEffect doesn't cover whole windows or Mac Virtual Display. ✗ The Crown can't adjust immersion. .progressive: ✓ Windows always stay in front of immersive content (as an Apple engineer confirmed in https://developer.apple.com/forums/thread/764556). ✓ The Crown adjusts immersion. ✗ OcclusionMaterial reveals nothing inside the portal, so there is no desk cutout. ✗ The keyboard drifts (issue 1). Because of issue 1 we have switched our default back to .mixed, and lost windows-in-front. Questions Is keyboard awareness in .progressive/.full expected to be registered less accurately than in .mixed? Is there a supported way to keep it registered with world-locked content, or to get the pose at which the system draws it? In .mixed, is there a supported way to keep windows (including Mac Virtual Display) in front of an app's immersive content? Or, in .progressive, a supported way to show passthrough in an app-defined region inside the portal? Any pointers or workarounds are appreciated.
Replies
0
Boosts
0
Views
1.6k
Activity
Sep ’26
RoomPlan crashes spiking on iOS 27
We're seeing a pretty significant spike in RoomPlan crashes on iOS 27, specifically a RoomScanCore EXC_BREAKPOINT. This crash isn't new, we've seen a low background rate of it across earlier iOS versions, but since iOS 27 shipped, the rate has jumped substantially, well beyond what iOS 27's adoption share alone would explain. We haven't reproduced the crash internally. As with the existing crashes, it's seemingly environment/scenario-dependent in ways that don't always show up in our QA passes. Is anyone else seeing this? Are there known issues that will be patched next month with iOS 27.2?
Replies
1
Boosts
0
Views
1.3k
Activity
Sep ’26
visionOS 27.0 simulator restarts (backboardd EXC_BREAKPOINT in DRValidateIndices) on MeshResource.generate(from:) for a valid multi-part mesh
Since moving to Xcode 27.0 (27A266a) with the visionOS 27.0 simulator runtime (24M362), generating a mesh with several parts through MeshResource.generate(from: MeshResource.Contents) makes the simulator go black for a couple of seconds and restart. The app does not crash; the simulator's render server does: Thread ... Crashed :: com.apple.CoreRE.ResourceFetchManager-service-queue 0 DirectResource specialized static IndexValidation._validate_neon(_:vertexCount:) 1 DirectResource DRValidateIndices 2 CoreRE re::(anonymous namespace)::validatePrivateData(id<REMeshPayload>, unsigned char const*, unsigned long) 3 CoreRE -[REMultiBufferMeshPayload initWithCoder:] 4 Foundation _decodeObject Environment: MacBook Pro (M1 Pro, 16 GB), macOS 27.0 (26A428), Xcode 27.0 (27A266a), visionOS 27.0 SDK (24M361); failing runtime visionOS 27.0 simulator (24M362); working: the visionOS 26.5 simulator runtime (23O470) under the same Xcode, and an Apple Vision Pro on visionOS 27. What I have established: It reproduces with a fully synthetic mesh: one model, three parts (1330 / 20 / 24 vertices, 9513 / 72 / 120 indices), random positions, normals, UVs and triangle indices. Only the part layout matters. The mesh is valid: every part's indices are within its own vertex count, counts are multiples of three, attribute buffers match. RealityKit's app-side validator agrees and lets it through (it does reject a broken part with REMeshPartDescriptor: index buffer payload range is invalid), then the render server's validator traps on the accepted payload. Single-part meshes of any size, primitives, and compiled .reality scenes are fine. Same mesh, same Xcode: fine on a simulator device created on the 26.5 runtime, fine on a visionOS 27 device. Only the 27.0 simulator runtime traps. FB number: FB24831983. Workarounds so far: a simulator device on the 26.5 runtime, or generating one MeshResource per part. Has anyone seen DRValidateIndices trapping on the 27.0 simulator?
Replies
1
Boosts
0
Views
2.7k
Activity
Sep ’26
WebXR Augmented Reality Module
On visionOS 26.5, I noticed the Safari Extension 'WebXR Augmented Reality Module' option. I've enabled this option in Safari Settings, and restarted Safari, but when I try to launch a WebXR experience that supports immersive-ar as option (for example this one: https://www.viverse.com/dPASDhP I don't see the option to Play in AR (like I do with a Quest 3S headset) Does anyone have any examples of websites that can make use of this new WebXR Augmented Reality Module feature flag in Safari, on visionOS?
Replies
3
Boosts
4
Views
1.8k
Activity
Sep ’26
PresentationComponent loses gaze targeting or dismisses in a volumetric window
On visionOS 26.6 and 27 latest beta: PresentationComponent in a volumetric WindowGroup, when looking at the volume from a specific lower/back region create two bugs: buttons inside the presentation have their gaze obstructed by hand presence, no button shows any hover highlight hand movement in that specific area auto dismisses the presentation The focused public repro uses a thin ModelEntity with InputTargetComponent and ordinary SwiftUI buttons. Its README includes two clearer videos: https://github.com/mesqueeb/PresentationAutoCloseInBackOfVolume 1. Gaze obstructed on buttons when hand is at specific location (see "Test Action" has no hover highlight, even though i look at it) 2. Hover state restored on buttons when hand is gone (see "Test Action" has hover highlight) 3. Presentation auto closed when hand comes back The weirdest part: This only happens at a specific location, when walking to the back of the volume, then turning around and interacting with the volume from the lower right back side. Any workaround or fix guidance would be appreciated. Feedback Assistant: FB24569418.
Replies
2
Boosts
0
Views
1.6k
Activity
Sep ’26
Immersive space closes if immersive environment was fully open
If the immersive environment is fully open, then an immersive space is closed right after attempting to open it. The issue specifically impacts a mixed immersive space which replaces the immersive environment while the immersive environment is at 100%. This issue does not occur if immersive environment is any less than 100%, or if the immersionStyle is .full, or if immersiveEnvirionmentBehavior is .coexist. This can be reproduced in the template for an immersive visionOS app by removing the line .immersionStyle(selection: .constant(.full), in: .full) Then run the app and open the immersive space, and the space then closes after attempting to open it. I’m using visionOS 27.0 beta 5 and Xcode 27.0 beta 5. I've submitted feedback as FB24353599 Video of the behavior: https://youtu.be/wafDXRZVyog
Replies
1
Boosts
0
Views
1.1k
Activity
Aug ’26
Apple Cinema Environment
I’d be very interested in having Apple Cinema Environment deployed across all third party apps (I.e Disney+, HBO Max, etc). These already have their immersive environments as well as the option to use Apple’s immersive environments (i.e the Moon). However the Apple Cinema / Theater is the best implementation I’ve seen thus far however its currently limited to the AppleTV content. Are there any plans to deploy this across other apps?
Replies
1
Boosts
0
Views
1.1k
Activity
Aug ’26
How do I create Enterprise.license file?
Hello, I did get an email that I now have access to the Enterprise APIs and I should create the license file. However, I can't figure out a way to create the license file. I did go check out that button, it did have the buttons to "renew" the licenses I got a while ago (via email). but no way to create new ones. and I am enrolled in the "Apple Developer Program as an organization " Where can I create Enterprise.license file?
Replies
4
Boosts
0
Views
1.7k
Activity
Aug ’26
Adding a ManipulationComponent detaches the whole RealityView content hierarchy on visionOS 27
On visionOS 27 (27.0 Seed 4, 24M5326g), adding a ManipulationComponent to a single entity makes RealityKit remove the RealityView's ENTIRE content hierarchy from the scene and re-add it about 30ms later. Not just the manipulated entity — everything. Same app binary on visionOS 26: never happens. FB24092291. Bisected on the same build and device: two entities, neither with manipulation -> no detach add one entity with a ManipulationComponent -> detach, every time same entity, manipulation swapped for my own drag/rotate/ scale gesture handling -> no detach Everything else is identical between the last two cases — same entity, same collision shape, same InputTargetComponent, same ViewAttachmentComponent, same scene, same view hierarchy. The only variable is whether the component is installed. Setup: an immersive space containing a SwiftUI RealityView. One root entity added to the RealityViewContent in the make closure; all app content built as its descendants. The detach is brief but not harmless: every entity in the hierarchy gets SceneEvents.WillRemoveEntity and then DidAddEntity, so anything keyed to those events runs a full teardown and re-add for content that was never meant to go anywhere. In my app that cascade is what makes the scene visibly empty and rebuild. Nothing in my code removes it. Stack captured from a WillRemoveEntity subscription on the root — frame 0 is my callback, everything above it is framework: SwiftUI (AttributeGraph StatefulRule.withObservation ...) -> RealityFoundation -> CoreRE -> entity removal Ruled out before landing on the component: make runs exactly once, the root re-enters a scene with the same ObjectIdentifier (not a re-host), the hosting controller is never deallocated, there is exactly one RealityViewContent.add(_:) in the whole app, and with Self._printChanges() in the view's body the detach happens in an update pass where the body is not re-evaluated at all. Also ruled out: transient overlay UI (suppressed entirely, still detached) and entity count. Workaround if this is biting you: skip ManipulationComponent on 27 and handle drag/rotate/scale yourself. That is what I am doing for now. If you are debugging something similar: SceneEvents.WillRemoveEntity also fires when an entity merely leaves a scene, so a teardown-looking log is not proof anything was destroyed. Check whether make ran twice and whether the scene identity changed before suspecting your own code.
Replies
1
Boosts
2
Views
1.6k
Activity
Aug ’26