Every demo below uses a web feature the Android System WebView often lags on by months or years. Scroll to see what shipping your own engine unlocks.
Live feature detection, evaluated on this engine right now — not a spec sheet. Open the same URL in Chrome, Brave, Firefox and Cefrium to compare what each supports.
The Android System WebView exposes none of these.
In a secure context this Cefrium build exposes most of them — WebGPU even
returns a working adapter; the live results below show exactly which.
Web Bluetooth, WebUSB and Web Serial are wired end-to-end (since 0.5.0):
requestDevice()/requestPort() routes to the app via
CefDeviceChooserHandler, so your code presents the picker.
WebAuthn / passkeys also work end-to-end (Android 14+) through the system
Credential Manager - create and sign in with a passkey, validated against
webauthn.io. WebGPU returns a working adapter; WebHID and Built-in AI are not
viable on Android.
These need an Android permission bridge and capture/media plumbing to work in an embedded engine. Cefrium 0.3.0 wires them end-to-end — scroll down to grant a permission and see them run.
Cards fade and rise as they enter the viewport via a CSS
view() timeline. WebView: not supported.
animation-timeline: view().IntersectionObserver, no animation library.A background layer drifts against the page via
animation-timeline: scroll().
Drag the handle at the bottom-right of the box to resize it. The card switches layout based on its width, not the viewport's.
@container (min-width: 420px).Pure CSS anchoring with position-try-fallbacks and an
arrow that re-points itself using an anchored container query.
The Popover API plus @starting-style,
transition-behavior: allow-discrete and overlay.
In the top layer — no z-index wars, animated in and out.
A same-document View Transition smoothly morphs the card between sizes. WebView lacks cross-document transitions entirely.
The container restyles selected rows with no JavaScript —
label:has(input:checked).
Pick your stack:
Swatches generated with oklch() and blended with
color-mix(in oklch, …) — perceptually uniform color.
Synthesize speech on-device via speechSynthesis.
Tap to request your location. Cefrium routes the prompt through Android's permission system (you'll see a native Allow / Block dialog) and the OS location provider — the same flow a real browser uses. Nothing is stored.
Tap to open the camera and mic. The preview is live and never leaves the device; tap Stop to release the hardware immediately. This is the same capture pipeline a video call uses.
Recorded clip — press play to see and hear yourself (proves camera + mic):
Play the demo tone, then check your lock screen / notification
shade — Cefrium surfaces play/pause controls with title and metadata via
navigator.mediaSession.