A passkey replaces the password with something the person’s device already has: a fingerprint, a face scan or a PIN. It cannot be phished, nothing needs remembering, and it syncs between a person’s devices through their platform (iCloud Keychain, Google Password Manager, a password manager). Passkeys use the standard called WebAuthn, which every current browser supports.

In Studio

Users & auth → Sign-in → Sign-in & registration → Ways to sign in → Passkeys.
Choose the Passkey domain carefully and early. It is the identity the device stores. Changing it later makes existing passkeys stop working. Use your registrable domain (example.com) so passkeys work on app.example.com and www.example.com alike.

Register a passkey

The person must already be signed in (by any method). The browser shows its own prompt.
Give each passkey a name people recognise (“MacBook”, “Work phone”). It appears in their list. Where to put it: right after sign-in (“Sign in faster next time?”) and on the account page.

Sign in with a passkey

Call it from a button click. Without an email, the browser offers any passkey it has for your site. Put “Sign in with a passkey” next to the normal form.

Manage a person’s passkeys

Show this list with Remove buttons. backed_up tells you whether the passkey syncs between devices. Encourage people to keep another sign-in method or a second passkey in case they lose a device. The auth webhook event for registration is user.passkey_added. See Auth webhooks.

Passkeys on a server or in a native app

In a browser, register and signIn do the whole ceremony. Elsewhere (a native app, a test), use the step-by-step calls: request options, hand them to the platform’s WebAuthn, and send back what it returns with the ticket.
requestRegistration and finishRegistration do the same for registering.

When it fails

Two-step verification

An extra step on top.

Sessions

After sign-in.