v135 · xr

XR Session Matrix

Test all three WebXR session modes — immersive-vr, immersive-ar, and inline — against this device using the correct isSessionSupported() API. Also probes for the removed supportsSession() and the retained requestSession(), giving you a full picture of what Chrome 135 ships.

checking WebXR… checking supportsSession… checking isSessionSupported…
Chrome 135 removes navigator.xr.supportsSession() (deprecated since Chrome 79). The replacement navigator.xr.isSessionSupported(sessionMode) returns a proper Promise<boolean>. This matrix probes all three session modes and reports the actual support status on this device.

Session mode support matrix

immersive-vr

Full VR headset mode — immersive, opaque display, head-tracked.

not yet probed

immersive-ar

Augmented reality mode — see-through display, camera passthrough.

not yet probed

inline

Non-immersive mode — renders in a canvas element in the page, no headset required.

not yet probed

API presence probe

navigator.xr
navigator.xr.supportsSession removed in Chrome 135
navigator.xr.isSessionSupported
navigator.xr.requestSession

Migration code

// Chrome 135: supportsSession() is gone. Use isSessionSupported() instead. // BEFORE (Chrome 79–134, now removed): // navigator.xr.supportsSession('immersive-vr') // .then(supported => { ... }); ← deprecated, throws in Chrome 135+ // AFTER (Chrome 79+, correct): async function checkXRSupport(mode) { if (!navigator.xr) return false; return navigator.xr.isSessionSupported(mode); // ← Promise<boolean> } // Usage: const vrSupported = await checkXRSupport('immersive-vr'); const arSupported = await checkXRSupport('immersive-ar'); const inlineSupported = await checkXRSupport('inline'); // Guard before entering XR: if (vrSupported) { const session = await navigator.xr.requestSession('immersive-vr'); // ... }

Results

Click "Probe all session modes" to run the check.