demo · v136

Password fill triggers upgrade

The actual integration site: when the user's password manager auto-fills the password field for an existing account, fire navigator.credentials.create({publicKey, mediation: "conditional"}) in the background. If a passkey can be silently created, it is — future sign-ins skip the password. If not, the form submits normally.

Probes conditional create mediation support.

conditional create probe log

the code

pwField.addEventListener("input", async () => {
  try {
    const cred = await navigator.credentials.create({
      publicKey: { /* ... */ },
      mediation: "conditional",
    });
    if (cred) sendToServer(cred);
  } catch (e) { /* user declined or no support */ }
});

why this angle

The sibling concept exposes the API. This one wires it to the only place it ever fires in practice — a password autofill. Open the page, paste into the password field, and watch the log: the conditional create kicks off without any modal.

see also