v148 · WebAuthn · passkeys · UX
Passkey Flow Visualizer
Compare the three WebAuthn mediation modes — Modal, Conditional, and Immediate — side by side. Run live navigator.credentials.get() probes and inspect the actual browser result, rejection, or timeout for this origin.
flow comparison
Each lane shows the steps for one mediation mode. "Run comparison" calls the real Credential Management API for each mode and records the observed result.
time-to-UI comparison
Measured time from each live credential request to resolution, rejection, or an explicit timeout for pending conditional UI.
These values come from the live browser calls on this origin. Conditional UI is aborted after a short window if it remains pending.
passkey manager
Query registered credentials for this origin via navigator.credentials.get(). Credential details are not exposed by the API for privacy; this panel shows what Chrome surfaces.
mediation: "immediate" support
| Feature | Status | Notes |
|---|
how it works
- All three modes call
navigator.credentials.get({publicKey: {…}})— only themediationvalue differs. "required"always shows the picker, regardless of whether credentials exist."conditional"waits passively; the browser inserts passkeys into autofill onautocomplete="username webauthn"inputs."immediate"(Chrome 148) resolves if credentials exist, rejects withNotAllowedErrorinstantly if not — no UI delay, no click required.- This page reports actual API timing for the current browser, origin, authenticator state, and saved credentials.
implementation reference
Need the exact API surface, compatibility boundaries, errors, lifecycle, and source links? Read the matching gendn reference ↗