Passkey-native (P-256 / WebAuthn) ERC-4337 smart account from Coinbase. Deploys deterministically to the same address across Ethereum, Base, Optimism, Arbitrum, and Polygon via CREATE2. Drop-in via the Coinbase Wallet SDK / wagmi connector with bundler + paymaster handled by Coinbase.
- 01passkey signup
- 02no-seed-phrase consumer apps
- 03cross-chain same-address UX
- 04Base / OP-stack apps
- 05sponsored gas onboarding
- pnpm add @coinbase/wallet-sdk wagmi viem
| Variable | Scope | Description |
|---|---|---|
| NEXT_PUBLIC_CDP_PROJECT_ID | Client | Coinbase Developer Platform project ID, used to enable paymaster / gas sponsorship for Smart Wallet. |
Use Coinbase Smart Wallet for passkey-based onboarding. Install `@coinbase/wallet-sdk` and add the wagmi connector with `coinbaseWallet({ appName, preference: 'smartWalletOnly' })` to force the Smart Wallet flow (no extension fallback). Users sign up with a passkey; the same address deploys across Ethereum, Base, Optimism, Arbitrum, and Polygon via CREATE2. For sponsored gas, configure a paymaster URL from the CDP dashboard and pass it through `useSendCalls` / `useWriteContracts` (EIP-5792). Verify session ownership server-side via SIWE rather than trusting the client address.
- ⚑Smart Wallet is EVM-only and currently deploys to Ethereum, Base, Optimism, Arbitrum, Polygon, Avalanche, BNB, and Zora — confirm chain coverage before promising users a network.
- ⚑Passkeys live in the OS / iCloud / Google keychain. Users who lose access to that account lose the wallet unless you provision recovery via owners (multi-owner Smart Wallet).
- ⚑Uses EntryPoint v0.6 today (Coinbase has signaled v0.7 migration) — custom paymasters or modules must target the matching EntryPoint version.
- ⚑Gas sponsorship runs through the CDP paymaster with allowlist policies — sponsored calls that pass simulation can still fail at submission if the policy rejects the contract / selector.
- ⚑Cross-app session and `preference: 'smartWalletOnly'` change behavior significantly — pick one mode and test the connect flow on iOS Safari, Android Chrome, and desktop separately.