Overview
LazorKit Wallet Mobile Adapter — passkey smart wallets for React Native & Expo.
React Native / Expo adapter for LazorKit smart wallets on Solana. Users authenticate with a device passkey (Face ID, Touch ID, screen lock) through the LazorKit portal — your app never touches private key material.
Package
@lazorkit/wallet-mobile-adapter on npm,
current release 2.4.0 (install latest; the beta tag is an old pre-v2 build).
Peers: react ≥ 18, react-native ≥ 0.70, @solana/web3.js ^1.98.2. It depends on
expo-web-browser (14.2 or 15) and expo-crypto 15, so it targets Expo SDK 54
(53 for expo-web-browser alone); older Expo SDKs are untested. Speaks protocol v2, and
v1 for wallets made before it — see Networks & versions.
Why this SDK
- No seed phrase. Passkey-based WebAuthn, synced via iCloud Keychain / Google Password Manager.
- No gas. A Kora paymaster sponsors every transaction — users don't need SOL.
- Programmable wallet. Vault + authority PDAs, ranks (Owner / Admin / Delegate), on-chain spending limits.
- Confirmed sends. Every send resolves once its transaction is confirmed.
- Session keys. One prompt mints a scoped Ed25519 signer — subsequent sends are prompt-free.
- Deferred execution. Sign a single challenge to authorise multi-instruction payloads that exceed the single-tx size limit.
How it fits together
┌──────────────┐ deep link ┌────────────────┐ signs ┌──────────────┐
│ your app │─────────────────▶│ LazorKit Portal│──────────▶│ passkey │
│ (RN/Expo) │◀─────────────────│ (WebAuthn) │ │ (OS / browser)│
└──────┬───────┘ redirect URL └────────────────┘ └──────────────┘
│
▼ build tx / finalize
┌──────────────┐ relay via ┌──────────────┐
│ SDK │────paymaster───▶│ Solana │
└──────────────┘ └──────────────┘The adapter is a JavaScript package: it opens the LazorKit portal in the system browser
(expo-web-browser), the portal runs the WebAuthn ceremony, and the result comes back to
your app on its redirect URL. The SDK builds instructions, finalises the passkey
signature, submits through the paymaster, and waits for confirmation.
Explore
Getting Started
Install, configure, and send your first transaction in ~5 minutes.
LazorKitProvider
Provider props and configuration.
useWallet hook
Complete API — connect, sign, sessions, authorities.
Sending transactions
Confirmation, callbacks, sequencing, the deferred window, the paymaster.
Types
TypeScript interfaces and constants.
Wallet Confirmation
How connect finds a returning user's wallet, and the built-in chooser.
Upgrading to 2.x
What changed since 1.x and the 2.0.0 betas, release by release.
Errors
Every error class, when it is thrown, and what to do.
Session Keys
Skip the passkey prompt with scoped Ed25519 keys.
Troubleshooting
Common errors and fixes.