Hey guys, I know there was another thread discussing AVP compat but I wonder if anything changed in the meantime.
I’m talking about a real interactive app including e.g. picking virtual objects up and handling them in some way, stable tracking of hands and surroundings, AR or full VR, “good” performance. The simpler USZD-export would just not cut it.
Is WebXR on AVP there yet? What are the blockers? It’d be really great to build an app for Quest and AVP using NE.
WebXR immersive VR on Apple Vision Pro works today—full hand tracking, eye+pinch, physics, picking, multiplayer, same as Quest. That part is ready.
The blocker is passthrough AR: Apple doesn’t expose immersive-ar on visionOS (platform limitation, not Needle Engine). For AR you’d need Everywhere Actions (interactive USDZ), which you said isn’t interactive enough.
Verdict: If your app can run in full VR (no passthrough), build once for Quest + AVP with WebXR. If you need real AR/passthrough with object manipulation, that’s not currently possible on Vision Pro via WebXR—no engine can bypass Apple’s restriction.
Fastest test: add a WebXR component to your scene, deploy, and open on AVP in Safari. If the VR button appears, you’re set. Share a URL if you hit issues.
Good to know “true” AR via WebXR is not achievable on AVP so far. This might not a problem for the app I have in mind though.
Problem is I do not yet have the device so I’m unable to run my own tests. I’ll have to wait a few more weeks but need to already lay some groundwork.
So I was hoping on getting some hands-on info from you guys. If you could provide any I’d really appreciate it
I know the device is super capable but I’m concerned via WebXR it might perform with its brakes on (for technical/political/whatever reason).
I found this demo (on linkedin) which looks pretty solid in regards of render and tracking performance but it’s hard to tell from that small of a snippet.
Also, this is running on a custom threejs WebGPU fork. Don’t know if it makes a huge difference as 1) it’s still threejs and 2) the fork’s WebGPU-related optimizations mainly target lighting if I’m not mistaken.
Can I expect an experience close to how it works on Quest 3 in regards of rendering and tracking? Especially hand tracking of course. If I knew it translates pretty well to AVP I could focus on experimenting on Quest as I have one in arm’s reach.
The user journey is another thing I’m concerned about: Entering and exiting VR/AR in Quest feels a bit cumbersome and glitchy sometimes. Also it pins the two system related icon’s on one’s hands which might get in the way a bit. I expect this to be quite similar on AVP?
Ah and: Does it support depth occlusion in WebXR?
Excuse the wall of text and again, thanks for any info you can provide already. I’m sure you guys did your fair share of experimentations
The tracking and rendering on AVP are really good. Way better than Quest 3 in my opinion (higher resolution, clearer, better colors). Performance is also pretty good (also better than Quest 3).
What you see in that LinkedIn demo is also supported in Needle: it’s immersive-vr without hand tracking (we do that by default on AVP). Basically, when you request hand tracking, you get hand data but no “real-world arm overlay” since you’re supposedly doing something with the hand data (like rendering a robot hand). If you don’t request hand tracking, then you get transient pointers (just works in Needle as well) and those “arm overlays” you see in that video, which makes it feel like AR while actually it’s still an immersive-vr session.
Entering VR is straightforward; it’s not glitchy but in typical Apple fashion users have to confirm once that yes, that page may access their head data. The hand menu is not pinned to the hand, it only appears when users to a wrist-flip gesture (basically the system gesture that users use in all apps).
And depth occlusion technically isn’t supported (as it’s an immersive-ar feature), but that arm overlay kinda feels like it.
I hope that helps! Let me know if you need more info or some screencaps, we have an AVP here for testing.