Skip to main content


A wallet configurator for Coinbase Wallet which allows integrating the wallet with React

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

const coinbaseConfig = coinbaseWallet(options);
customize (optional)

coinbaseConfig contains the default config for metadata and UI. you can optionally choose to override the defaults to customize the wallet. Learn more about these configs

const coinbaseConfig = coinbaseWallet({ ... });

// override metadata = "..."; // change the name
coinbaseConfig.meta.iconURL = "..."; // change the icon
coinbaseConfig.meta.urls = {
// change urls to download the wallet on various platforms
android: "https://...",
ios: "https://...",
chrome: "https://...",
firefox: "https://...",

// override connection UI
coinbaseConfig.connectUI = CoinbaseConnectUI; // react component

// custom selection UI
coinbaseConfig.selectUI = CoinbaseSelectUI; // react component

// custom logic to check if the wallet is installed or not
coinbaseConfig.isInstalled = isCoinbaseInstalled; // function

Once the config is ready, you can use it with ConnectWallet component or useConnect hook as shown below

// add to ThirdwebProvider to add it in ConnectWallet's modal
<ThirdwebProvider supportedWallets={[coinbaseConfig]} clientId="your-client-id"/>;

// or use it with useConnect hook
const connect = useConnect();
connect(coinbaseConfig, { ... });


qrmodal (optional)

You can choose to show the coinbase's default QR code modal by setting qrmodal to "coinbase" or show the custom QR code modal by setting qrmodal to "custom".

Default is "custom".

qrmodal: "coinbase",
recommended (optional)

Show this wallet as "recommended" in the ConnectWallet Modal.

recommended: true,

Usage with ConnectWallet

To allow users to connect to this wallet using the ConnectWallet component, you can add it to ThirdwebProvider's supportedWallets prop.

<YourApp />

Usage with useConnect

you can use the useConnect hook to programmatically connect to the wallet without using the ConnectWallet component.

The wallet also needs to be added in ThirdwebProvider's supportedWallets if you want the wallet to auto-connect on next page load.

const coinbaseConfig = coinbaseWallet();

function App() {
const connect = useConnect();

const handleConnect = async () => {
await connect(coinbaseConfig, connectOptions);

return <div> ... </div>;


{ chainId?: number } | undefined
chainId (optional)

If chainId is provided, wallet will be connected and immediately switch to network with given chainId.

Chain object corresponding to this chainId from @thirdweb-dev/chains package must be specified in ThirdwebProvider's supportedChains prop as shown below

import { Polygon } from "@thirdweb-dev/chains";
import { ThirdwebProvider } from "@thirdweb-dev/react";

export function YourApp() {
return (
<ThirdwebProvider supportedChains={[Polygon]} clientId="your-client-id">
<App />