Skip to main content

Passkeys support for Expo

Category
SDK
Published

Enable seamless, passwordless authentication in your Expo apps with Passkeys.

We're excited to announce native Passkeys support for Clerk's Expo SDK.

Implementation

Adding Passkeys support to your Expo app is straightforward using the user.createPasskey() method from useUser() hook and the signIn.authenticateWithPasskey() method from useSignIn() hook.

Create a Passkey

const CreatePasskeyPage = () => {
  const { user } = useUser()

  const handlePasskeySignIn = async () => {
    if (!user) return
    try {
      return await user.createPasskey()
    } catch (e: any) {
      // Handle errors
    }
  }
}
const SignInWithPasskeyPage = () => {
  const { signIn } = useSignIn()

  const handlePasskeySignIn = async () => {
    try {
      const signInAttempt = await signIn?.authenticateWithPasskey({
        flow: 'discoverable',
      })

      if (signInAttempt?.status === 'complete') {
        await setActive({ session: signInAttempt.createdSessionId })
        router.push('/')
      } else {
        // Handle errors
      }
    } catch (err) {
      // Handle errors
    }
  }
}

Getting Started

To implement Passkeys in your Expo application:

  1. Enable Passkeys in your Clerk Dashboard
  2. Follow our Passkeys integration guide for detailed setup instructions

Platform Support

  • iOS 16.0 or later
  • Android 9+ or later

Visit our documentation to learn more about implementing Passkeys in your Expo application.