WebXR
WebXR is a browser API that enables immersive VR and AR experiences to run directly in a web browser, without requiring the user to install an application. It is the successor to the deprecated WebVR API and is defined by the W3C Immersive Web Working Group. WebXR means that an AR experience can be launched by scanning a QR code or tapping a link — reaching any user with a compatible browser on a phone, tablet, or headset, without an app store submission or install step.
From WebVR to WebXR
The original WebVR API (2016) was a browser experiment that exposed VR headset tracking and rendering to web applications. It was implemented in Firefox and Chrome but never reached W3C standardisation, suffered from inconsistent implementations, and did not address AR use cases. WebVR was formally deprecated in 2018 as the Immersive Web Working Group began work on its replacement.2
WebXR Device API 1.0 became a W3C Recommendation in 2022, covering both VR and AR modes under a unified API with a clean session model, a frame loop aligned with the display refresh rate, and an extension system for additional capabilities.1
Session Types
WebXR distinguishes three session types:
immersive-vr: a full VR session that takes over the display; the real world is not visible. The user is inside a fully rendered virtual environment.immersive-ar: an AR session that composites virtual content over the real world. On phones, this uses the camera feed; on headsets, it uses passthrough or optical see-through.inline: a non-immersive session that renders XR content in a canvas element on a normal web page, allowing 3D viewing and device-orientation-based interaction without entering a full headset mode.1
The session request pattern gates access — the browser prompts the user to consent before immersive content can start, and the feature must be declared in the page's permissions policy for deployment on HTTPS origins.
Capabilities and Extensions
Core WebXR provides tracking, a frame loop, and projection layer rendering. Extensions handled through the XRSession.requestReferenceSpace() and feature system add:
- Hit testing (
XR_hit_test): cast rays against detected real-world surfaces to find placement points for AR content - Anchors (
XR_anchors): persist virtual object positions relative to the real world across frames - DOM overlay: render standard HTML UI over an AR session, enabling web-native controls without custom 3D UI
- Depth sensing: access depth data from the device's sensors (LiDAR on iPhone, depth from ARCore)
- Hand tracking: access the 25-joint hand skeleton from devices that support it3
AR Without Installation
WebXR's main commercial significance is eliminating the install barrier for mobile AR. A user with an Android phone (ARCore) or iPhone (with a WebXR-capable browser) can enter an AR experience at a URL tap — no App Store, no download. This has driven wide adoption for:
- Retail product visualization: furniture in the room, clothing try-on, eyewear fitting
- Marketing and packaging: AR activations on labels, posters, and packaging that launch via QR code
- Education and training: AR overlays at museum exhibits, on equipment, at field sites4
The Living Wine Labels product by Tactic.studio — the animated AR experiences on 19 Crimes wine — migrated from a native iOS/Android app to a WebAR format, allowing consumers to activate AR directly from a browser without installing anything. This transition dramatically expanded the accessible audience.
Platform Support
WebXR support varies significantly by browser and platform:
- Chrome (Android): full AR and VR support via ARCore; the reference implementation
- Chrome (iOS): immersive-vr only; AR sessions not available due to ARKit not being exposed to WebXR on iOS
- Safari (iOS): as of 2025, limited WebXR support;
immersive-arnot available natively, driving reliance on third-party WebAR frameworks (8th Wall, Zappar, Niantic Lightship Web) - Meta Quest Browser: full OpenXR-backed WebXR support for VR and passthrough AR5
The iOS gap — Apple's restriction on WebXR AR access to ARKit — is the primary limitation for universal WebAR deployment. Third-party frameworks work around it by implementing their own camera-based tracking in JavaScript, bypassing the WebXR API entirely.
See also: Standards & SDKs · ARKit · ARCore · Passthrough · Tactic.studio · OpenXR