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.