Skip to main content



Web3Modal SDK has support for Wagmi, Ethers v5 and Ethers v6. Choose one of these ethereum libraries to get started.


npm install @web3modal/wagmi @wagmi/core viem

Don't have a project ID?

Head over to WalletConnect Cloud and create a new project now!

Get startedcloud illustration


You can start Web3Modal configuration using either default or custom mode.

Default mode will implement WalletConnect, Browser Wallets (injected) and Coinbase options in addition to Wagmi's public provider and WalletConnect's provider.

In your App.vue file set up the following configuration.

<script setup>
import { createWeb3Modal, defaultWagmiConfig } from '@web3modal/wagmi/vue'
import { mainnet, arbitrum } from 'viem/chains'

// 1. Get projectId at
const projectId = 'YOUR_PROJECT_ID'

// 2. Create wagmiConfig
const metadata = {
name: 'Web3Modal',
description: 'Web3Modal Example',
url: '',
icons: ['']

const chains = [mainnet, arbitrum]
const wagmiConfig = defaultWagmiConfig({ chains, projectId, metadata })

// 3. Create modal
createWeb3Modal({ wagmiConfig, projectId, chains })

// Rest of your app ...

Trigger the modal

To open Web3Modal you can use our default web components or build your own logic with Web3Modal composables.

<w3m-button />

Learn more about the Web3Modal web components here


Web components are global html elements that don't require importing.

Smart Contract Interaction

<script setup lang="ts">
import { readContract } from '@wagmi/core'
import { USDTAbi } from '../abi/USDTAbi'

const USDTAddress = '0x...'

const data = readContract({
address: USDTAddress,
abi: USDTAbi,
functionName: 'symbol',

Read more about Wagmi actions for smart contract interaction here.