Skip to main content

Conditional UI Flow (Usernameless Login)

Conditional UI lets the user select a passkey from the username or email field without entering the identifier first. That one selection completes both parts of login: the credential ID tells the server which account and user pool to use, and the verified assertion authenticates the user.
Implementation prerequisite: Conditional UI is not automatic: your page must call navigator.credentials.get({ mediation: 'conditional' }) and mark the input with autocomplete="username webauthn". Without both, nothing is offered. It is available in all modern web browsers. Use isConditionalMediationAvailable() because browser support does not guarantee that every operating system and credential-provider combination can offer a passkey.
Eligible passkeys can appear in different system autofill surfaces depending on the platform, including a keyboard suggestion, sheet, overlay or desktop dropdown. The browser and active credential providers control which credentials are shown.
1

Make Conditional UI available

  • The page starts the conditional request before the field can be used and focuses the annotated username or email field where the platform supports it.
  • When the field is focused, the browser or operating system can show eligible discoverable passkeys from the active credential providers.
  • The presentation varies by platform: keyboard suggestion, system sheet or overlay on mobile, or a desktop dropdown. Conditional mediation remains non-blocking to the page.
  • At this point, the relying party does not know which account is signing in.
2

Select and authorize a passkey

  • The user selects a passkey from the available options.
  • User verifies their identity using their screen lock (e.g., fingerprint, PIN, or face recognition).
  • The browser returns the credential ID and signed assertion to the application.
3

Resolve the account and validate login

  • The server uses the credential ID to find the account and correct user pool, then verifies the assertion.
  • It applies the same account-status and login-policy checks used by every other login route.
  • A wrong user pool, stale credential or blocked account receives its specific message and next action instead of a session.
4

Complete login

  • Only a valid assertion for an account that may sign in creates a session.
  • If One-Tap is enabled, this successful passkey login makes One-Tap eligible for the account in the current browser profile.
The server still decides whether login succeeds. If it no longer accepts the selected passkey, show a clear stale-passkey message with retry and fallback. When the credential ID is conclusively unknown, a supporting browser can receive signalUnknownCredential. This is best effort and does not prove that the provider removed the passkey. See the WebAuthn Signal API.

Acceptance criteria

Conditional UI combines account discovery and authentication. The selected discoverable credential identifies the account, and its assertion proves the login. The user does not submit an identifier first. Conditional UI still needs a normal login and fallback route beside it. W1.2-AC05 applies when the page supports multiple user pools or sign-in areas. W1.2-AC08 applies where the WebAuthn Signal API is supported. W1.2-AC09 applies when One-Tap is enabled.

References