Description
About Browser Features
Introduction
The DeviceHub Browser Features tool is a free online web-platform matrix that probes whether important APIs exist in your current browser session, media, storage, graphics, realtime, clipboard, and device buses, without claiming every detected API will succeed once permissions, secure context, or hardware enter the picture. Compatibility engineers building support matrices, developers choosing progressive enhancement, IT verifying locked-down images, and students learning feature detection versus user-agent sniffing scan rows instead of trusting a single marketing HTML5 score. usb truthy does not mean requestDevice succeeded, and getUserMedia existing does not mean camera streams start without prompts on other pages. Open over HTTPS, read available versus unsupported labels, and follow dedicated DeviceHub browser tools for live smoke when a row matters. WebUSB, Web Bluetooth, and Web Serial rows often read unsupported on Safari and Firefox by design, Chromium on secure origins is the practical home for those APIs today. Technical writers maintaining internal compatibility tables export mental notes from this matrix before updating docs that still claim APIs Safari never shipped. PWA installability often needs service workers plus manifests, matrix rows are hints, not Lighthouse scores. Game streaming tabs strip WebUSB while leaving WebGL available, matrix rows help narrate which half of a toolchain broke after a browser update. Rows for WebCodecs, File System Access, and WebTransport appear only when probes exist in the page list, absence on a row means that probe is not part of this build’s checklist. Compatibility spreadsheets should paste Browser Information engine version beside unsupported rows so future readers know which release was tested. Nightly channel browsers may expose globals behind flags, refresh after toggling experiments before trusting stale unsupported labels. Installable PWA checks often need serviceWorker plus manifest, matrix rows hint readiness but do not replace Lighthouse install audits. SharedArrayBuffer rows correlate with COOP/COEP in production, detection here does not configure isolation headers for you. Payment Request API rows when present still need compatible wallets, matrix detection does not prove checkout works end-to-end.
What this tool does
Safe feature-detection probes inspect globals and navigator properties, listing results with short explanations of what each API family does in plain language. The page does not enable chrome flags, polyfill missing APIs, or upload your matrix for fingerprint marketplaces. Rows distinguish detection from guaranteed runtime success under CSP, cross-origin isolation, iframe permissions, or enterprise policy stripping constructors entirely. Refresh recomputes after extension installs or policy changes in the same session. Grouping may cluster graphics, storage, media, and device APIs so scanning hundreds of rows stays feasible on laptop screens. SharedArrayBuffer availability often correlates with cross-origin isolation in production, detection here does not set COOP or COEP headers for you. Enterprise polyfill extensions can inject fake globals, retest in clean profiles when locked images look suspiciously complete. WebCodecs rows when present still require codec support on the GPU, detection is not hardware decode certification. WebTransport experimental rows signal stacks IT may block, note channel and flag state when pasting unsupported rows. Credential Management API availability hints passkey readiness but not server WebAuthn configuration correctness.
When to use it
Run Browser Features when planning fallbacks, after browser upgrades, when a WebView seems stripped compared with desktop Chrome, and before blaming DeviceHub camera tools for missing getUserMedia that policy removed. Prefer WebGL Test or WebGPU Test for graphics depth beyond a boolean row. Prefer Browser Storage Test when quota math is the question. Prefer User Agent only when a legacy server sniffer remains in the stack. Re-test inside embedded iframes when production bugs occur there, not only at top level. Run before committing to WebUSB-only firmware updaters when half your customers use Firefox. WebTransport rows when present flag experimental stacks IT may block before wide release. Run before shipping WebCodecs playback when Safari rows still read unsupported for your target audience. File System Access API rows flag desktop Chromium workflows, Safari unsupported there is expected platform scope. Iframe feature policy allow lists can block APIs in embeds despite top-level available, reproduce embed context for iframe tickets.
How it works
Probes typically use typeof checks, in-operator tests, or guarded constructor references without calling permissioned methods on this page. Many APIs require secure contexts, HTTPS or localhost, even when detection passes at top level. Enterprise policies can delete globals, yielding unsupported that reflects IT choices. Private modes may alter storage-related outcomes on sibling tools even when constructors still exist here. Results are session-specific to the active profile and browser engine. Detection order does not imply dependency, WebGPU may exist while WebGL is blocklisted independently. Feature policy on embedding sites can disable APIs in iframes even when this top-level tab reads available, reproduce embed context for iframe bugs. Game streaming browsers may strip WebUSB while keeping WebGL, matrix helps narrate which toolchain half broke after updates. Nightly flags exposing experimental globals change matrix without DeviceHub updates, refresh after toggling chrome experiments.
Step-by-step instructions
- Open Browser Features over HTTPS in the failing browser profile, including managed builds where policy may remove APIs entirely. Record browser channel (Stable/Beta/Dev) beside the matrix screenshot so policy diffs are traceable later.
- Locate rows tied to your symptom, getUserMedia, WebGL, serviceWorker, navigator.storage, RTCPeerConnection, navigator.usb. If iframe apps fail, rerun matrix inside the embed URL, not only at top-level DeviceHub.
- Mark unsupported Chromium-only rows on Safari or Firefox as expected platform limits when your app depends on USB or Bluetooth pickers. Mark enterprise-managed profiles explicitly when unsupported rows may reflect GPO rather than consumer builds.
- Treat available as invitation to open the matching DeviceHub smoke tool, not proof that production code will succeed unchanged. When WebUSB row is available, continue to WebUSB Test for picker smoke rather than stopping at detection.
- Capture Browser Information beside the matrix when version and engine context must accompany unsupported rows in a ticket. Compare matrix timestamp mentally to last browser update, stale tabs before updates mislead triage.
- Document whether testing occurred in a normal or private window when storage-related rows flip, private modes change outcomes on sibling tools even when constructors appear here. Export only rows relevant to the bug to keep tickets readable for engineers on mobile phones.
Common problems
Teams confuse API presence with permission granted and overbuild false confidence. Outdated documentation lists APIs mobile Safari still lacks years later. Extensions inject or block globals unpredictably. Top-level detection passing while iframe embeds fail is common when allow attributes or feature policy differ. Expecting WebUSB on Firefox leads to unnecessary bug reports against DeviceHub. Assuming one green row certifies iframe embed success ignores allow="usb" style requirements on parent frames. Confusing SharedWorker rows with ServiceWorker rows sends teams to fix the wrong worker type. Treating WebCodecs availability as guaranteed hardware decode on all GPUs ignores codec licensing and blocklists on older machines. Safari Technology Preview gains APIs mid-cycle, retest matrix after STP upgrades before filing against stable Safari. Mobile Safari rows differ from iPad desktop-mode rows, capture matrix in the exact layout mode users complain about.
Privacy explanation
Feature probes execute locally in your tab. DeviceHub does not upload your capability list for this matrix to render. No mic or camera permission is requested by the detection page itself. Closing the tab ends the view. Matrices pasted into public forums reveal capability facts, not personal files, still mind org policy. Capability lists can coarse-identify browser generation, handle pasted matrices under internal data handling rules when required. Enterprise polyfill extensions injecting fake globals warrant clean-profile retests when matrices look too complete on locked images. Matrix exports for spreadsheets should include Browser Information version beside each unsupported row for future readers.