Two-phase login: email check → password/passkey
Key: Only email field is shown initially. The autocomplete="username webauthn" attribute enables passkey conditional UI — browsers with passkey support will offer to autofill passkey credentials.
Conditional UI: The password field has autocomplete="current-password webauthn". On mount, we call authClient.signIn.passkey({ autoFill: true }) to preload passkeys. Browsers that support Conditional UI (Chrome, Safari, Edge) will show a passkey autofill dropdown when the user interacts with the password field.
authClient.signIn.email() with email + empty password
Note: We use signIn.email() as the check mechanism rather than a separate endpoint. This avoids leaking whether an email exists via a dedicated check API.