In-App Wallets

Create in-app wallet for your users based on their email, phone, passkey, social auth or even their external wallets. These wallets are scoped by your clientId and do not require any confirmation to sign transactions.

Available auth methods

  • emailEmail
  • phonePhone
  • passkeyPasskey
  • guestGuest
  • walletWallet
  • googleGoogle
  • appleApple
  • facebookFacebook
  • xX
  • discordDiscord
  • telegramTelegram
  • twitchTwitch
  • farcasterFarcaster
  • githubGithub
  • lineLine
  • coinbaseCoinbase
  • steamSteam

Live Playground

Try out in-app wallets for yourself in the in-app wallet live playground

Configure in-app wallets

The simplest way to create an in-app wallet is to use the inAppWallet() function. By default, this will create a wallet that supports email/password login, Google, Apple, Facebook login, and passkey.

import { inAppWallet } from "thirdweb/wallets";
const wallet = inAppWallet();

You can also customize the wallet by passing in options.

import { inAppWallet } from "thirdweb/wallets";
const wallet = inAppWallet({
auth: {
mode, // options are "popup" | "redirect" | "window";
options, // ex: ["discord", "farcaster", "apple", "facebook", "google", "passkey"],
passkeyDomain, // for passkey, the domain that the passkey is created on
redirectUrl, // the URL to redirect to after authentication
},
metadata, // metadata for the wallet (name, icon, etc.)
smartAccount, // smart account options for the wallet (for gasless tx)
});

View all in-app wallet options.

Once created, you can use it either with the prebuilt UI components, or with your own UI.

Usage

import { ThirdwebProvider, ConnectButton } from "thirdweb/react";
import { inAppWallet } from "thirdweb/wallets";
const client = createThirdwebClient({ clientId });
const wallet = inAppWallet();
const account = await wallet.connect({
client,
strategy: "google",
});
console.log("connected as", account.address);

API Reference

View all the auth and configuration options for in-app wallets in the API Reference.