Native passkeys for Expo apps

Add passkey registration and sign-in without leaving Expo.

Expo Easy Passkey gives app developers a small TypeScript API over iOS AuthenticationServices and Android Credential Manager. Your app runs the native ceremony. Your server verifies the WebAuthn JSON.

import {
  authenticateWithPasskey,
  createPasskey,
  getPasskeyAvailability,
} from "expo-easy-passkey";

const availability = getPasskeyAvailability();

if (availability.supported) {
  const options = await fetchRegistrationOptions();
  const credential = await createPasskey(options);
  await verifyRegistration(credential);

  const request = await fetchAuthenticationOptions();
  const assertion = await authenticateWithPasskey(request);
  await verifyAuthentication(assertion);
}

Install

Install the packages, configure the plugin, and build a dev client.

Platforms

Host AASA and Digital Asset Links files for your relying-party domain.

Server

Connect the app ceremony to challenge and verification endpoints.

Examples

Copy app-side recipes for registration, sign-in, fallback UI, and errors.