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

# Authenticate with Passkey

<Card title="Recommended: JavaScript SDK for React Native" icon="react" color="#4779FE">
  While this SDK is still supported, we recommend using newer [JavaScript SDK](/docs/javascript/reference/react-native-quickstart), which is optimized for React Native, but also comes with a host of other benefits.
</Card>

<Note>
  The user must have already signed in via another method (e.g. email/password, social, etc.) and added a passkey to their account before they can use it to sign in with.

  You can prompt a user to add a passkey to their account using your SDK's passkey registration method (see SDK-specific Tabs) or by directing them to the account security section in your app (the client/WebView flow).
</Note>

## Dashboard Configuration

Simply toggle on "Passkey" in [the Log in & User Profile section of the dashboard](https://app.dynamic.xyz/dashboard/log-in-user-profile).

```ts React Native theme={"system"}
  import { dynamicClient } from '<path to client file>';

  // Primary sign-in with passkey (1FA)
  await dynamicClient.auth.passkey.signIn({
    relatedOriginRpId: 'example.com', // Optional, if you want to sign in from a related origin
  });

  // Register a new passkey for the signed-in user
  await dynamicClient.passkeys.register();

  // MFA authenticate using an existing passkey
  await dynamicClient.passkeys.authenticateMFA({
    relatedOriginRpId: 'example.com', // Optional, if you want to authenticate from a related origin
  });
```

<Note>
  `relatedOriginRpId` is the Relying Party ID (RP ID). The canonical form is a **bare hostname** such as `my.example.com`; a full origin like `https://my.example.com` is also accepted and resolves to the same RP ID. It must match the `rpId` the credential was registered under. See [Related Origin Requests](https://passkeys.dev/docs/advanced/related-origins/).
</Note>

<Note>
  React Native requires platform setup for passkeys. See the [React Native Passkey Setup guide](/docs/react-native/reference/setup-passkey).
</Note>
