React Native
Mobile integration today via the hosted flow, and the planned native on-device prover.
What you'll build: AuthenSee login in a mobile app. Today, that means launching the hosted flow from your app and exchanging the result on your backend — the same server-side contract as the web. A native on-device prover is in development and will make first-party mobile ceremonies possible without the hosted surface.
Integrate today: the hosted flow
React Native runtime packages are not a public provider integration surface yet. The supported mobile path mirrors the web integration:
- Your backend mints a session (
POST /v1/sessions) and returnshostedUrlto the app - The app opens
hostedUrlin the system browser or an in-app browser tab (a top-level context, so the passkey ceremony works) - Your
callbackUrl— typically a universal link / app link back into your app — receives theauthResultCode - Your backend exchanges it (
POST /v1/auth-results/exchange)
Nothing about the exchange, the JWT, or the callback parameters differs from the hosted pages guide.
The planned native SDK
The native module targets on-device proof generation without a browser:
| Layer | What it does |
|---|---|
| TypeScript API | The same SDK surface documented in the SDK section |
| JSI bridge | Direct JavaScript-to-native communication (no legacy bridge) for low-latency prover access |
| Native Rust prover | Barretenberg compiled for iOS (Swift via uniffi) and Android (Kotlin via uniffi) |
| Secure storage | iOS Keychain (kSecAttrAccessibleWhenUnlockedThisDeviceOnly) and Android Keystore (hardware-backed when available) for enrollment data |
Platform targets
| Platform | Minimum version |
|---|---|
| React Native | 0.72+ (New Architecture supported) |
| iOS | 15.0+ |
| Android | API 26+ |
Performance targets
| Metric | Target |
|---|---|
| End-to-end auth time | P50: 5 seconds, P95: 10 seconds |
| SDK binary size (including circuits) | < 15 MB |
Device portability (planned API)
The SDK will support transferring enrolled factors between devices with a locally encrypted bundle:
The passphrase encrypts the bundle on-device; it is never sent to the server.
Next
- Hosted pages guide — the flow your mobile app launches today
- SDK overview — the provider SDK your backend uses either way
- Core concepts — what the on-device prover will attest to