demo ยท v139

Three Mediation Modes

silent and conditional are Credential Management mediation values. Immediate UI Mode keeps the same sign-in goal but now uses uiMode: "immediate": show credential UI only when Chrome finds a local passkey or password, otherwise reject with NotAllowedError so the site can fall back.

browser support probe

Immediate UI should be checked with PublicKeyCredential.getClientCapabilities() and the immediateGet flag before the sign-in moment.

pending

CredentialsContainer

Waiting for probe.

pending

PublicKeyCredential

Waiting for probe.

pending

immediateGet

Waiting for probe.

run live requests

conditional

autofill
await navigator.credentials.get({
  mediation: "conditional",
  publicKey
});

Passkey autofill may appear in the username field. If the user never chooses a credential, the promise can stay pending.

Not run yet.

silent

no UI
await navigator.credentials.get({
  mediation: "silent",
  password: true
});

Silent requests never show account UI. They resolve with an available password credential or with null.

Not run yet.

immediate UI

current API
await navigator.credentials.get({
  password: true,
  publicKey,
  uiMode: "immediate"
});

The call must follow a user gesture. Chrome shows a picker only when local credentials are found; otherwise it rejects cleanly.

Not run yet.

immediate outcome simulator

The live API depends on saved credentials and browser support. These branches show how the site should respond to each immediate UI outcome.

behavior matrix

path request shape visible UI empty store outcome edge handling
silent mediation: "silent" Never. Resolve null. Use for low-risk password credential checks where UI would be surprising.
conditional mediation: "conditional" Autocomplete/passkey chip in a focused form field. Usually stays pending until selection, abort, or page navigation. Pair with autocomplete="username webauthn" and a normal form fallback.
immediate UI uiMode: "immediate" Modal picker only when local credentials are immediately available. Reject NotAllowedError without showing UI. Requires a user gesture, rejects in private mode, and rejects non-empty allowCredentials.

The Chrome 139 origin trial used mediation: "immediate". Chrome's current API uses uiMode: "immediate", while the behavior stays centered on immediate credential discovery plus a fast fallback path.

see also