← Protocols
Coinbase Smart Wallet
Wallet / Auth·EVM

Coinbase Smart Wallet

01Description

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.

02Best for
  • 01passkey signup
  • 02no-seed-phrase consumer apps
  • 03cross-chain same-address UX
  • 04Base / OP-stack apps
  • 05sponsored gas onboarding
03Install
  • pnpm add @coinbase/wallet-sdk wagmi viem
04Environment variables
VariableScopeDescription
NEXT_PUBLIC_CDP_PROJECT_IDClientCoinbase Developer Platform project ID, used to enable paymaster / gas sponsorship for Smart Wallet.
05Prompt snippet
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.
06Gotchas
  • 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.
07Alternatives