Passkey Authentication
Passkey authentication is fully local-first and the most secure of the auth methods that Jazz provides because keys are managed by the device/operating system itself.
How it works
Passkey authentication is based on the Web Authentication API and uses familiar FaceID/TouchID flows that users already know how to use.
Key benefits
- Most secure: Keys are managed by the device/OS
- User-friendly: Uses familiar biometric verification (FaceID/TouchID)
- Cross-device: Works across devices with the same biometric authentication
- No password management: Users don't need to remember or store anything
- Wide support: Available in most modern browsers and mobile platforms
Implementation
Using passkeys in Jazz is as easy as this:
React Native Setup
Passkey authentication on React Native requires the react-native-passkey library and domain configuration:
-
Install the peer dependency:
npm install react-native-passkey -
Configure your app's associated domains:
- iOS: Add an Associated Domains entitlement with
webcredentials:yourdomain.comand host an Apple App Site Association (AASA) file athttps://yourdomain.com/.well-known/apple-app-site-association - Android: Host a Digital Asset Links file at
https://yourdomain.com/.well-known/assetlinks.json
- iOS: Add an Associated Domains entitlement with
-
For React Native 0.76+ with New Architecture: The
react-native-passkeylibrary uses the legacyNativeModulesbridge pattern. You need to disable bridgeless mode while keeping New Architecture enabled.Add this override to your
AppDelegate.swift:
class ReactNativeDelegate: RCTDefaultReactNativeFactoryDelegate { // ... existing methods ... override func bridgelessEnabled() -> Bool { return false } }
See the react-native-passkey documentation for detailed setup instructions.
Examples
You can try passkey authentication using our passkey example or the music player demo.
When to use Passkeys
Passkeys are ideal when:
- Security is a top priority
- You want the most user-friendly authentication experience
- You're targeting modern browsers and devices
- You want to eliminate the risk of password-based attacks
Limitations and considerations
- Requires hardware/OS support for biometric authentication
- Not supported in older browsers (see browser support below)
- Requires a fallback method for unsupported environments
React Native Limitations
- Requires
react-native-passkeypeer dependency - Passkeys require domain verification (AASA for iOS, assetlinks.json for Android)
- Not available in Expo Go (requires a development build)
- React Native 0.76+ with New Architecture requires disabling bridgeless mode (see setup instructions above)
- Android builds may hang at
configureCMakeDebugwith NDK 27.x - use NDK 28.2+ to avoid this
Browser Support
Passkeys are supported in most modern browsers.
For older browsers, we recommend using passphrase authentication as a fallback.
Additional resources
For more information about the Web Authentication API and passkeys: