Skip to main content

Custom connectors

Custom connectors, such as social logins, WalletConnect QR, Coinbasewallet, etc., can be integrated into your Modal. A simple example of how to incorporate them for Wagmi or Ethers library.

If you already have Wagmi integrated into your application or would like more control over Wagmi's configuration, you can integrate Web3Modal on top of it.

import { createWeb3Modal } from '@web3modal/wagmi/react'

import { http, createConfig, WagmiProvider } from 'wagmi'
import { sepolia } from 'wagmi/chains'
import { walletConnect } from 'wagmi/connectors'

import { QueryClient, QueryClientProvider } from '@tanstack/react-query'

const queryClient = new QueryClient()

const projectId = 'YOUR_PROJECT_ID'

const metadata = {
//...
}

// create the connectors (delete the ones you don't need)
const connectors: CreateConnectorFn[] = []
connectors.push(walletConnect({ projectId, metadata, showQrModal: false })); // showQrModal must be false
connectors.push(injected({ shimDisconnect: true }));
connectors.push(coinbaseWallet({
appName: metadata.name,
appLogoUrl: metadata.icons[0],
}));

connectors.push(authConnector({
options: { projectId },
socials: ['google', 'x', 'github', 'discord', 'apple'], // add Social logins
showWallets: true,
email: true,
walletFeatures: false,
}));

const config = createConfig({
chains: [sepolia],
transports: {
[sepolia.id]: http()
},
connectors
})

createWeb3Modal({
wagmiConfig: config,
projectId,
})

export function ContextProvider({ children }) {
return (
<WagmiProvider config={config}>
<QueryClientProvider client={queryClient}>{children}</QueryClientProvider>
</WagmiProvider>
)
}

Check our React Wagmi demo in Github