Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
fix some cursor issues and use mm connect package
  • Loading branch information
alexandratran committed Nov 27, 2025
commit 4d6d11e193cfa648c8f43fea25d7efb0c482c767
72 changes: 28 additions & 44 deletions sdk/evm/connect/guides/interact-with-contracts.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,7 @@ With MM Connect, you can:
- **Manage transaction states**.
- **Handle contract errors**.

## Smart Contract

### Solidity Contract
## Solidity smart contract

In this example, we'll be demonstrating how to use MetaMask Connect SDK with viem, web3.js, ethers.js or with ETH APIs to interact with Solidity smart contracts.

Expand All @@ -45,7 +43,7 @@ contract HelloWorld {
}
```

### Read From Contract
## Read from contracts

<Tabs
defaultValue="viem"
Expand All @@ -59,12 +57,11 @@ values={[
<TabItem value="ethers">

```tsx
import { MetaMaskSDK } from '@metamask/sdk'
import { createEVMClient } from '@metamask/connect/evm'
import { ethers } from 'ethers'

// Initialize SDK
const MMSDK = new MetaMaskSDK()
const provider = MMSDK.getProvider()
const evmClient = createEVMClient()
const provider = evmClient.getProvider()

const ethersProvider = new ethers.BrowserProvider(provider)
const signer = await ethersProvider.getSigner()
Expand Down Expand Up @@ -105,12 +102,11 @@ const message = await contract.message()
<TabItem value="web3">

```tsx
import { MetaMaskSDK } from '@metamask/sdk'
import { createEVMClient } from '@metamask/connect/evm'
import { Web3 } from 'web3'

// Initialize SDK
const MMSDK = new MetaMaskSDK()
const provider = MMSDK.getProvider()
const evmClient = createEVMClient()
const provider = evmClient.getProvider()

const web3 = new Web3(provider)

Expand Down Expand Up @@ -146,13 +142,12 @@ const message = await contract.methods.message().call()
<TabItem value="viem">

```tsx
import { MetaMaskSDK } from '@metamask/sdk'
import { createEVMClient } from '@metamask/connect/evm'
import { createPublicClient, custom } from 'viem'
import { sepolia } from 'viem/chains'

// Initialize SDK
const MMSDK = new MetaMaskSDK()
const provider = MMSDK.getProvider()
const evmClient = createEVMClient()
const provider = evmClient.getProvider()

const publicClient = createPublicClient({
chain: sepolia,
Expand Down Expand Up @@ -181,11 +176,6 @@ const contractABI = [
},
]

const publicClient = createPublicClient({
chain: sepolia,
transport: custom(provider),
})

const contractAddress = '0x8AA6820B3F197384874fAdb355361758258cb981' // On Sepolia testnet, replace with your contract address

// Read message from smart contract
Expand All @@ -200,19 +190,17 @@ const message = await publicClient.readContract({
<TabItem value="eth_api">

```tsx
import { MetaMaskSDK } from '@metamask/sdk'
import { createEVMClient } from '@metamask/connect/evm'

// Initialize SDK
const MMSDK = new MetaMaskSDK()
const provider = MMSDK.getProvider()

const evmClient = createEVMClient()
const provider = evmClient.getProvider()

async function getMessage(contractAddress, userAddress) {
try {
// Create function signature for balanceOf(address)
const functionSignature = '0x06fdde03'
// Pad address to 32 bytes
const encodedAddress = userAddress.slice(2).padStart(64, '0')
const result = await provider.request({
method: 'eth_call',
params: [
Expand Down Expand Up @@ -244,7 +232,7 @@ async function displayMessage() {
</TabItem>
</Tabs>

### Write to Contract
## Write to contracts

<Tabs
defaultValue="viem"
Expand All @@ -258,12 +246,11 @@ values={[
<TabItem value="ethers">

```tsx
import { MetaMaskSDK } from '@metamask/sdk'
import { createEVMClient } from '@metamask/connect/evm'
import { ethers } from 'ethers'

// Initialize SDK
const MMSDK = new MetaMaskSDK()
const provider = MMSDK.getProvider()
const evmClient = createEVMClient()
const provider = evmClient.getProvider()

const ethersProvider = new ethers.BrowserProvider(provider)
const signer = await ethersProvider.getSigner()
Expand Down Expand Up @@ -307,12 +294,11 @@ const receipt = await tx.wait()
<TabItem value="web3">

```tsx
import { MetaMaskSDK } from '@metamask/sdk'
import { createEVMClient } from '@metamask/connect/evm'
import { Web3 } from 'web3'

// Initialize SDK
const MMSDK = new MetaMaskSDK()
const provider = MMSDK.getProvider()
const evmClient = createEVMClient()
const provider = evmClient.getProvider()

const web3 = new Web3(provider)

Expand All @@ -337,10 +323,13 @@ const receipt = await tx.wait()
<TabItem value="viem">

```tsx
import { MetaMaskSDK } from '@metamask/sdk'
import { createEVMClient } from '@metamask/connect/evm'
import { createPublicClient, custom } from 'viem'
import { sepolia } from 'viem/chains'

const evmClient = createEVMClient()
const provider = evmClient.getProvider()

const contractABI = [
{
inputs: [{ internalType: 'string', name: 'initMessage', type: 'string' }],
Expand All @@ -364,16 +353,16 @@ const contractABI = [
]
const publicClient = createPublicClient({
chain: sepolia,
transport: custom(this.provider),
transport: custom(provider),
})

const walletClient = createWalletClient({
chain: sepolia,
transport: custom(this.provider),
transport: custom(provider),
})

const contractAddress = '0x8AA6820B3F197384874fAdb355361758258cb981' // On Sepolia, replace with your contract address
address = await walletClient.getAddresses()
const address = await walletClient.getAddresses()

// Submit transaction to the blockchain
const hash = await walletClient.writeContract({
Expand All @@ -392,13 +381,8 @@ const receipt = await publicClient.waitForTransactionReceipt({ hash })
<TabItem value="eth_api">

```tsx
import { MetaMaskSDK } from '@metamask/sdk'
import { createEVMClient } from '@metamask/connect/evm'

// Initialize SDK
const MMSDK = new MetaMaskSDK()
const provider = MMSDK.getProvider()

const evmClient = createEVMClient()
const provider = evmClient.getProvider()

Expand Down
8 changes: 0 additions & 8 deletions sdk/evm/connect/guides/wagmi/manage-networks.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@ keywords: [SDK, Wagmi, JavaScript, detect, switch, add, network, networks, dapp]
toc_max_heading_level: 2
---

import networkGif from '../../\_assets/network.gif';

# Manage networks

Manage networks in your Wagmi dapp.
Expand All @@ -16,12 +14,6 @@ With MM Connect, you can:
- **Add new networks** to MetaMask.
- **Handle common network-related errors**.

<p align="center">
<a href="https://metamask-sdk-examples.vercel.app/" target="_blank">
<img src={require(networkGif).default} alt="Switch Networks" width="450px" />
</a>
</p>

## Detect and switch networks

Wagmi provides intuitive hooks for several network-related operations.
Expand Down
8 changes: 0 additions & 8 deletions sdk/evm/connect/guides/wagmi/manage-user-accounts.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@ keywords: [SDK, Wagmi, JavaScript, authenticate, connect, sign, accounts, wallet
toc_max_heading_level: 3
---

import connectGif from '../../\_assets/connect.gif';

# Manage user accounts

Connect and manage user wallet sessions in your Wagmi dapp.
Expand All @@ -18,12 +16,6 @@ With MM Connect, you can:
- **Manage wallet sessions** (connect/disconnect).
- **Support multiple wallet types** (extension, mobile app).

<p align="center">
<a href="https://metamask-sdk-examples.vercel.app/" target="_blank">
<img src={require(connectGif).default} alt="Connect to MetaMask" width="450px" />
</a>
</p>

## Connect wallet

Wagmi provides a simple, hook-based approach for handling wallet connections.
Expand Down