> ## Documentation Index
> Fetch the complete documentation index at: https://docs.crossmint.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Passkey Signer

> Configure a passkey signer at wallet creation using WebAuthn biometric authentication.

<Note>
  **This page has been updated for Wallets SDK V1.** If you are using the previous version,
  see the [previous version of this page](/wallets/v0/guides/signers/passkey) or the [V1 migration guide](/wallets/guides/migrate-to-v1).
</Note>

Use a passkey signer to let users sign transactions with biometric authentication — Face ID, Touch ID, fingerprint, or Windows Hello. Passkeys are built on the <a href="https://www.w3.org/TR/webauthn-3/" target="_blank">WebAuthn</a> standard and are synchronized across devices via providers like Apple Keychain, Google Password Manager, and 1Password.

<Note>
  Passkey signers are **EVM only**. They are not supported on Solana or Stellar.
</Note>

## Configuration

Configure the wallet to use a passkey as the operational signer at creation time. The SDK handles WebAuthn registration during the first wallet creation.

<Tabs>
  <Tab title="React">
    Using `createOnLogin` on the provider:

    ```tsx theme={null}
    import {
        CrossmintProvider,
        CrossmintAuthProvider,
        CrossmintWalletProvider,
    } from "@crossmint/client-sdk-react-ui";

    function App({ children }) {
        return (
            <CrossmintProvider apiKey="YOUR_CLIENT_API_KEY">
                <CrossmintAuthProvider loginMethods={["email", "google"]}>
                    <CrossmintWalletProvider
                        createOnLogin={{
                            chain: "base-sepolia",
                            recovery: { type: "email" },
                            signers: [{ type: "passkey" }],
                        }}
                    >
                        {children}
                    </CrossmintWalletProvider>
                </CrossmintAuthProvider>
            </CrossmintProvider>
        );
    }
    ```

    Or create the wallet explicitly:

    ```typescript theme={null}
    import { useWallet } from "@crossmint/client-sdk-react-ui";

    const { createWallet } = useWallet();

    const wallet = await createWallet({
        chain: "base-sepolia",
        recovery: { type: "email", email: "user@example.com" },
        signers: [{ type: "passkey" }],
    });
    ```

    Each transaction triggers a biometric authentication prompt.
  </Tab>
</Tabs>

## Adding a Passkey to an Existing Wallet

If the wallet already exists with a different signer, you can add a passkey via `wallet.addSigner({ type: "passkey" })`. See [Add Signers](/wallets/guides/signers/add-signers#add-a-passkey-signer) for the full flow.

## Next Steps

<CardGroup cols={3}>
  <Card title="Add Signers" icon="key" href="/wallets/guides/signers/add-signers">
    Register additional signers on an existing wallet
  </Card>

  <Card title="Configure Recovery" icon="shield-halved" href="/wallets/guides/signers/configure-recovery">
    Set up email or phone recovery
  </Card>

  <Card title="Device Signer" icon="microchip" href="/wallets/guides/signers/device-signer">
    The default client-side signer
  </Card>
</CardGroup>
