AuthenSeeDocs

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:

  1. Your backend mints a session (POST /v1/sessions) and returns hostedUrl to the app
  2. The app opens hostedUrl in the system browser or an in-app browser tab (a top-level context, so the passkey ceremony works)
  3. Your callbackUrl — typically a universal link / app link back into your app — receives the authResultCode
  4. 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:

LayerWhat it does
TypeScript APIThe same SDK surface documented in the SDK section
JSI bridgeDirect JavaScript-to-native communication (no legacy bridge) for low-latency prover access
Native Rust proverBarretenberg compiled for iOS (Swift via uniffi) and Android (Kotlin via uniffi)
Secure storageiOS Keychain (kSecAttrAccessibleWhenUnlockedThisDeviceOnly) and Android Keystore (hardware-backed when available) for enrollment data

Platform targets

PlatformMinimum version
React Native0.72+ (New Architecture supported)
iOS15.0+
AndroidAPI 26+

Performance targets

MetricTarget
End-to-end auth timeP50: 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:

// On the old device: export identity
const bundle = await AuthenSee.exportIdentity('my-secure-passphrase');
// Transfer the bundle via QR code, AirDrop, etc.
 
// On the new device: import identity
await AuthenSee.importIdentity(bundle, 'my-secure-passphrase');

The passphrase encrypts the bundle on-device; it is never sent to the server.

Next

On this page