This post documents an issue I reported in feedback FB19610114 and see if anyone knows of a workaround. Here is a copy of the feedback.
Short version
Manipulation (SwiftUI OR RealityKit) fails to translate entities after changing rooms. By changing rooms, I mean a human wearing an Apple Vision Pro leaving one room and entering another room. Once this issue occurs, it impacts all apps that use these features. A device restart is the only solution I have to fix it.
Feedback FB19610114
This is an odd one. I'm using the new Manipulation Component in visionOS 26. Most of the time this works well. Sometime it stops working and when it does the only way to get it working again is to reboot the headset.
When this happens, I can continue to rotate and scale items, but translation no longer works. It is as if the item is stuck to a fixed point in the parent scene (window, volume, etc). When this bug occurs, it affects every app across the entire operating system that is using manipulation, including the RealityKit component AND the SwiftUI version. This is not limited to one app and is not limited to apps that I am working on. Once this error occurs, it affects literally any application across the operating system that is using this API, including apps from Apple.
I won't speculate on the cause of this, but I do know of one way where I can always get it to happen.
Here is how to reproduce it:
- Make an Xcode project with a single entity that uses the Manipulation Component. There is no need to customize the configuration of this component. The default implementation will work.
- Build and run this app on device. You can keep running from device or quit and launch the app like normal on device.
- Open the app and manipulate the entity - it should work as expected.
- Physically walk into another room. It is vital that you leave the current room that you are in and enter a different room entirely.
- Use the digital crown to recenter your view and bring your window or volume to you.
- Test the manipulation on the entity again - it should still be working as expected at this point.
- Physically, move yourself and your headset into the original room where you started.
- Use the digital crown to recenter your view and bring your window or volume to you.
- Test the manipulation on the entity again - you should now see the issue.
When I follow the steps above, then 100% of the time manipulation translation stops working at this point. It will impact any application using this API. The only way to fix it is to restart my headset.
A few points to keep in mind
- It does not matter if an app is actively being run from Xcode.
- When this occurs, it impacts every single app, not just one.
- When this occurs, rotation and scaling continue to work, but the entity/view cannot be translated.
- This impacts BOTH the SwiftUI version and the RealityKit version.
- When this occurs, the only way to "fix" it is to reboot the device.