ComparisonExtended Reality (XR)
OpenXR, WebXR or native SDKs: how to choose an enterprise XR stack
Three routes lead to an enterprise XR application: the OpenXR standard reached through an engine such as Unity, Unreal or Godot; WebXR in the browser; or each platform's own SDK. They trade device reach, feature depth, distribution and portability differently. This comparison explains what each covers, where lock-in really sits, and which route suits training at scale, browser product viewers and high-fidelity design review.
On this page
- Five places an XR application gets locked in
- The layers of an XR application stack
- OpenXR: one native API across many headsets
- WebXR: distribution by link, within browser limits
- Native platform SDKs: depth at the cost of portability
- OpenXR, WebXR and native SDKs side by side
- Content formats that travel between tools
- Which XR stack fits which scenario
- A manufacturer supporting two headset brands and tablets
- Questions and answers
- Sources
Five places an XR application gets locked in
Vendor lock-in in XR is rarely a single decision. It accumulates in five layers, and a team can be portable in one while tied down in another: the runtime that drives displays, cameras and trackers; the engine or framework developers write against; the store or distribution channel; device management, which enrolls, locks down and updates devices; and the content format, which decides whether 3D assets can move to another tool.
A project that writes to an open runtime API but stores every scene in one engine's proprietary format, and ships only through one vendor's store, is still locked in. The aim is not zero dependency but knowing which dependencies you chose and what replacing each would cost. ColdAI builds on open runtimes such as OpenXR and WebXR where the task allows it8.
The layers of an XR application stack
- Application code
Your scenarios, procedures, interface and integrations with business systems.
- Content and assets
Models, scenes and media, ideally in formats that outlive one tool.
- Engine or framework
Unity, Unreal, Godot, a web framework or a platform's own UI toolkit.
- XR API
OpenXR, WebXR or a vendor's native interface to tracking, input and rendering.
- Device runtime and OS
The vendor's implementation on the headset, with its store and management hooks.
- Headset hardware
Displays, cameras and sensors, which set the features available.
OpenXR: one native API across many headsets
OpenXR is a royalty-free standard from the Khronos Group that gives applications a common API for tracking, input and rendering on AR and VR devices1. Vendors ship OpenXR runtimes, and an app written against the API, usually through an engine, runs on any conformant one. Khronos lists runtimes from vendors including Meta, Google for Android XR, HTC, Pico, Valve, Varjo, Magic Leap and Microsoft, and engine support in Unreal Engine, Unity and Godot1.
Two caveats matter. Many features enterprise apps want, such as passthrough, scene understanding and some hand or eye tracking, arrive as extensions, some shared across vendors and some owned by one. OpenXR 1.1 moved several widely used extensions into the core specification1, but an app relying on a vendor extension still needs a fallback. And conformance covers the API, not the store, the management console or the device lifecycle; those stay vendor-specific.
Android XR shows the engine route at work: Google's guidance states that Unity's Android XR support is built on OpenXR6. Apple is the notable absence. visionOS apps are built with Apple's frameworks, such as SwiftUI, RealityKit and ARKit, or through Unity's visionOS support5, and Apple does not appear among the runtime vendors Khronos lists1.
WebXR: distribution by link, within browser limits
WebXR is a W3C API, developed by the Immersive Web Working Group, that lets a web page start an immersive session on a headset or phone2. Its attraction is distribution: a link replaces store submission, packaging and per-device installs, and updates reach everyone on their next visit. That suits product viewers, sales configurators and light internal pilots.
The constraints are real. The specification requires a secure context, and an immersive session normally starts only from a user action such as a tap, with the user's consent2. That makes unattended kiosk flows awkward in a browser. Immersive AR sits in a separate AR module that a browser may or may not implement2. At the visionOS 2 release in 2024, for instance, Safari on Apple Vision Pro enabled immersive VR sessions by default but not the AR module34, so check current release notes. Performance headroom is lower than native, and vendor-specific sensors are reachable only if the browser exposes them.
Native platform SDKs: depth at the cost of portability
Every platform also offers its own SDK, and new hardware features usually appear there first. On Apple Vision Pro, ARKit provides scene reconstruction, image anchoring and skeletal hand tracking with the user's permission5; Android XR documents its Jetpack XR SDK as one route alongside OpenXR, Unity, Godot, Unreal Engine and WebXR9.
Native makes most sense when one platform has been chosen deliberately and the experience depends on a feature only it offers, or must behave like part of the operating system. The cost arrives the day another device joins the estate: a second codebase. Teams that go native usually confine platform code to a thin layer and keep business logic, data access and content shared.
OpenXR, WebXR and native SDKs side by side
| Criterion | OpenXR via an engine | WebXR in the browser | Native platform SDK |
|---|---|---|---|
| Device reach | Any headset with a conformant runtime; one build per platform target | Any device whose browser implements WebXR; AR support varies | One platform; the work repeats for each additional one |
| Feature access | Core features plus extensions; vendor-only features need fallbacks | Whatever the browser exposes; limited sensor and camera access | Everything, including features with no standard yet |
| Distribution | App stores, management push or an enterprise install mode | A link; no installation or store review | The platform store or its enterprise distribution channel |
| Performance headroom | High, with engine profiling tools and native rendering | Lower, because of browser and scripting overheads | Highest on that one platform |
| Security review | Normal app review plus camera and sensor permissions | Browser sandbox, HTTPS and per-session permission prompts | Normal app review under platform privacy rules |
| Offline use | Straightforward; assets ship with or are cached by the app | Possible, but fragile for large assets | Straightforward |
| Long-term portability | Good at the API layer; engine and store remain dependencies | Good, subject to browser support | Low; tied to one vendor's roadmap |
The highlight reflects the most common enterprise case, native apps across several headset brands. It is not a universal recommendation.
Content formats that travel between tools
Which XR stack fits which scenario
- If
You are rolling out safety or procedure training to standalone headsets from more than one brand.
ThenBuild natively with an engine on OpenXR and distribute through device management.
You get one codebase, offline operation and the performance standalone headsets need.
- If
Customers or sales staff need to view a product in 3D or AR from a link, on whatever device they have.
ThenUse WebXR, with a plain 3D viewer as the fallback for unsupported browsers.
Nobody installs an app to look at one product, and the fallback keeps the page useful everywhere.
- If
Engineers will review detailed designs on one chosen headset, and the review relies on eye tracking or high-resolution passthrough.
ThenUse an engine with that vendor's extensions, or the native SDK, and isolate the platform-specific code.
Fidelity matters more than reach here, but isolation keeps a later move affordable.
- If
Apple Vision Pro must sit alongside Android-based headsets in the same program.
ThenUse an engine that targets both, accept a separate visionOS build path, and keep shared logic outside it.
No single runtime covers both platforms, so portability has to come from your own architecture.
A manufacturer supporting two headset brands and tablets
Questions and answers
Does Apple Vision Pro support OpenXR?
Not according to public documentation. Apple is not listed among the OpenXR runtime vendors on the Khronos site, and Apple's developer pages describe visionOS apps built with SwiftUI, RealityKit, ARKit and Reality Composer Pro, or with Unity. For cross-platform programs, an engine that treats visionOS as a separate build target is the practical route, and Safari's immersive WebXR VR sessions can cover lighter use cases.
Can WebXR do passthrough AR on a headset?
It can where the browser implements the WebXR AR module, which defines immersive AR sessions that show the real world behind digital content. Support depends on browser and device: some headset browsers and Chrome on Android phones offer it, while Safari on Apple Vision Pro had not enabled the AR module at the visionOS 2 release3. Test on the exact devices you plan to use, and design a VR or 3D-viewer fallback for those that lack it.
Should we use a cross-platform engine or build natively for one headset?
Use a cross-platform engine when the app must run on more than one device family, when the team already knows the engine, or when the device estate is likely to change. Build natively when one platform was chosen for good reasons and the experience depends on features only it offers. Either way, keep business logic, data access and content outside the platform-specific layer.
What happens to our application if a headset vendor leaves the enterprise market?
If the app targets OpenXR through an engine and its assets are in neutral formats, moving to another conformant headset is mostly testing, input tuning and replacing vendor extensions. The larger work usually sits in device management, enrollment and distribution, which are tied to the vendor's business program. The headset fleet guide explains how to plan for that.
Sources
- OpenXR: high-performance access to AR and VR — The Khronos Group · checked 10 October 2026
- WebXR Device API (Candidate Recommendation Draft) — W3C Immersive Web Working Group · checked 10 October 2026
- WebXR is enabled by default in Safari with visionOS 2 — UploadVR · checked 10 October 2026
- News from WWDC24: WebKit in Safari 18 beta — WebKit · checked 10 October 2026
- visionOS: tools and frameworks — Apple Developer · checked 10 October 2026
- Develop with Unity for Android XR — Android Developers · checked 10 October 2026
- glTF: the 3D asset delivery format — The Khronos Group · checked 10 October 2026
- Extended Reality (XR): ColdAI's approach to AR, MR and VR applications — ColdAI
- Develop for Android XR — Android Developers · checked 10 October 2026
- Usdz File Format Specification — OpenUSD · checked 10 October 2026