OpenXR
OpenXR is an open, royalty-free standard from the Khronos Group that provides a unified API for writing XR applications that run across multiple hardware platforms and runtimes without modification. Released as version 1.0 in August 2019, OpenXR ended more than a decade of platform fragmentation in which every VR and AR headset required its own proprietary SDK.1
The Fragmentation Problem OpenXR Solved
Before OpenXR, the XR development landscape was entirely vendor-specific. A game built for Oculus Rift used the Oculus PC SDK; the same experience on HTC Vive required SteamVR's OpenVR API; Microsoft HoloLens used the Windows Mixed Reality APIs; mobile VR used the Oculus Mobile SDK or GearVR SDK. Each platform had different coordinate systems, different input abstractions, different session lifecycle models, and different compositor interfaces. An application had to maintain separate codepaths for each target platform, and middleware vendors had to write glue layers for every combination.
OpenXR replaced this with a single API surface that runtimes implement. An application calls xrCreateInstance, xrCreateSession, and xrWaitFrame / xrBeginFrame / xrEndFrame — and the runtime (provided by the headset vendor) handles the hardware specifics. The same application binary runs on Meta Quest, HoloLens, SteamVR headsets, and any other OpenXR-conformant runtime without recompilation.2
Architecture
OpenXR divides responsibility between the application, the loader, and the runtime:
The runtime is the vendor-supplied implementation of the OpenXR API for a specific platform — Meta's runtime on Quest, Microsoft's on HoloLens and Windows Mixed Reality, Valve's via SteamVR. The runtime handles tracking, composition, display management, and hardware communication.
The loader is a thin library that discovers the active runtime at application startup and routes API calls to it. Applications link against the loader; they need not know which runtime will be present at run time.
API layers sit between the application and loader, enabling cross-cutting concerns like validation, frame capture, and performance monitoring to be inserted transparently.2
The Action System
One of OpenXR's most significant design contributions is its action system for input abstraction. Rather than querying hardware-specific button and axis identifiers, applications declare abstract actions ("grip", "select", "move") and bind them to physical controller inputs through interaction profiles that describe a specific controller layout. The runtime performs the binding; the application code is independent of whether the user has a Meta Touch controller, an HP Reverb controller, or hand-tracked input.2
This allows applications to support new input hardware without code changes — the runtime provides the binding profile for new devices, and existing action-based applications automatically benefit.
Extension System
Core OpenXR covers session management, tracking, and rendering. Everything beyond the core is handled through extensions:
- Vendor extensions (
XR_MSFT_*,XR_META_*,XR_EXT_*) expose platform-specific capabilities — spatial anchors, hand tracking, face tracking, scene understanding — before they mature to multi-vendor standards - Cross-vendor extensions (
XR_KHR_*,XR_EXT_*) represent capabilities that multiple vendors have agreed to support consistently - The extension registry has grown from ~30 extensions at 1.0 to over 150 by 20255
Key extensions widely adopted across platforms include XR_KHR_composition_layer_depth (depth submission for reprojection), XR_EXT_hand_tracking (skeletal hand input), and XR_FB_eye_tracking_social / XR_ML_eye_tracking (gaze tracking).
Adoption
Microsoft adopted OpenXR as the primary API for HoloLens 2 development and deprecated the Windows Mixed Reality proprietary APIs in favour of OpenXR.3 Meta deprecated the Oculus PC and Mobile SDKs, migrating the Quest platform to OpenXR as of SDK 28 (2021).4 Unity and Unreal Engine both adopted OpenXR as their primary XR backend, meaning the overwhelming majority of XR applications now target OpenXR whether or not the developer engages with the API directly.
See also: Standards & SDKs · WebXR · MRTK · Microsoft HoloLens · Apple Vision Pro