Next-gen Smart Accounts with EIP-7702

Next-gen Smart Accounts with EIP-7702

EIP-7702 unlocks a new capability for externally-owned accounts (EOAs): the ability to behave like smart contract accounts. The latest SDK let you enable 7702 on any of your in-app wallets with one line of code, giving your users gas-sponsored, batched and automated transactions faster and more efficiently than ever before.

Why you’ll care

Once an in-app wallet is running in EIP-7702 mode you can:

Sponsor gas so users can sign transactions with zero ETH in their balance.
Batch transactions so multiple contract calls clear in a single signature.
Add session keys to automate on-chain actions safely (think scheduled mints, subscription based payments or game loops).
• …and any other capability you’d expect from smart accounts—all while your user keeps their familiar EOA address.

All it takes is a tiny config change.

But what about EIP-4337 smart wallets?
In our testing, using 7702 is up to twice as fast and orders of magnitude cheaper than using 4337 smart contract wallets!

Try it for yourself

Don't take our word for it, try it yourself on the live playground:

https://playground.thirdweb.com/connect/account-abstraction/7702


Using 7702 with In-App Wallets

In-app wallets lets you create wallets for your users based on standard logins like email, passkey or Google. Below are drop-in examples to turn those wallets into 7702 smart accounts for every stack the thirdweb SDK supports today.

TypeScript / React

// plain TypeScript
import { inAppWallet } from "@thirdweb-dev/sdk";

const wallet = inAppWallet({
  executionMode: {
    mode: "EIP7702",
    sponsorGas: true,
  },
});
// React (e.g. Next.js)
import { ConnectButton, inAppWallet } from "@thirdweb-dev/react";

<ConnectButton
  client={client}
  wallets={[
    inAppWallet({
      executionMode: {
        mode: "EIP7702",
        sponsorGas: true,
      },
    }),
  ]}
/>

. NET / Unity

// .NET (server or Blazor)
var smartEoa = await InAppWallet.Create(
    client: thirdwebClient,
    authProvider: AuthProvider.Google,
    executionMode: ExecutionMode.EIP7702Sponsored
);
// Unity (C#)
var wallet = await ConnectWallet(
    new WalletOptions(
        provider: WalletProvider.InAppWallet,
        chainId: 11155111,
        inAppWalletOptions: new InAppWalletOptions(
            authprovider: AuthProvider.Google,
            executionMode: ExecutionMode.EIP7702Sponsored
        )
    )
);
Heads-up EIP-7702 only works on chains that enable it. Ethereum mainnet and Sepolia already support it, with more coming soon; keep an eye on the thirdweb blog for other chain activation dates.

Using EIP-7702 with External Wallets (EIP-5792)

Don’t want to embed an in-app wallet? No problem. EIP-5792 lets you tap into the same 7702 capabilities from any external wallet—like Metamask and Coinbase Wallet —via the sendCalls RPC method.

Sponsoring Gas & Batching Transactions

The useSendCalls React hook (or the plain sendCalls function in vanilla TypeScript) lets you bundle multiple calls into one and attach a paymaster so your dApp covers the gas:

import { useSendCalls } from "@thirdweb-dev/react";

const { mutate: sendCalls, data: bundleId } = useSendCalls();
await sendCalls({
  client,
  calls: [sendTx1, sendTx2],
  capabilities: {
    paymasterService: {
      url: `https://${CHAIN.id}.bundler.thirdweb.com/${client.clientId}`,
    },
  },
});

Thie enabled single signature, gas-free, batched execution on exernal wallets like Metamask!

Documentation links: React API | TypeScript API

Ready to ship?

Upgrade your thirdweb SDK to the latest version, flip on executionMode: "EIP7702" or use EIP5792's sendCalls, and your users instantly level-up to smart-account features—no new wallets, no migrations, just better UX.

Got questions or feedback? Jump into the thirdweb Discord and let us know what you’re building!