Adapters

The thirdweb SDK can work side by side with:

  • ethers.js v5
  • ethers.js v6
  • viem
  • older versions of the @thirdweb-dev/sdk (using the ethers.js v5 adapter)

Adapters allow you to use contracts, providers and wallets from these libraries with the thirdweb SDK and vice versa.

Ethers v6

You can use an existing ethers.js v6 Signer with the thirdweb SDK by converting it using the ethers6Adapter:

import { ethers6Adapter } from "thirdweb/adapters/ethers6";
import { sendTransaction } from "thirdweb";
// convert a ethers signer
const signer: ethers.Signer = ...;
const account = await ethers6Adapter.signer.fromEthers({
signer,
});
// use it with the thirdweb SDK
await sendTransaction({
transaction,
account,
});

Similarly, you can use any wallets created with the thirdweb SDK with ethers.js v6 by converting them using the ethers6Adapter:

import { ethers6Adapter } from "thirdweb/adapters/ethers6";
import { createThirdwebClient, inAppWallet } from "thirdweb/wallets";
import { sepolia } from "thirdweb/chains";
const client = createThirdwebClient({ clientId });
const wallet = inAppWallet();
const chain = sepolia;
const account = await wallet.connect({
client,
strategy: "google",
});
// convert a thirdweb account to ethers signer
const ethersSigner = await ethers6Adapter.signer.toEthers({
client,
chain,
account,
});

You can also convert ethers.js providers and contracts from and to the thirdweb SDK.

View the ethers6Adapter reference for more details.

Ethers v5

You can use an existing ethers.js v5 Signer with the thirdweb SDK by converting it using the ethers5Adapter:

import { ethers5Adapter } from "thirdweb/adapters/ethers5";
// convert an ethers signer to a thirdweb account
const signer: ethers.Signer = ...;
const account = await ethers5Adapter.signer.fromEthers({
signer,
});
// convert a thirdweb account to ethers signer
const ethersSigner = await ethers5Adapter.signer.toEthers({
client,
chain,
account
});

You can also convert ethers.js providers and contracts from and to the thirdweb SDK.

View the ethers5Adapter reference for more details.

viem

You can use an existing wallet client from viem with the thirdweb SDK by converting it using the viemAdapter:

import { viemAdapter } from "thirdweb/adapters/viem";
// convert a viem wallet client to a thirdweb account
const walletClient = createWalletClient(...);
const account = await viemAdapter.walletClient.fromViem({
walletClient,
});
// convert a thirdweb account to viem wallet client
const viemClientWallet = viemAdapter.walletClient.toViem({
client,
chain,
account,
});

You can also convert viem public clients and contracts from and to the thirdweb SDK.

View the viemAdapter reference for more details.