Skip to content

viem Integration

Integrate EVM blockchains using viem for TypeScript/JavaScript applications. Covers client setup, reading/writing data, accounts, contract interactions, and wagmi React hooks.

Invocation

text
/viem-integration

Or describe your requirements naturally:

text
Help me set up viem to read smart contract data on Base

What It Does

This skill helps you:

  • Set up blockchain clients: PublicClient for reads, WalletClient for writes, with http/webSocket/custom transports
  • Read blockchain data: Balances, contract state, event logs, and transaction details
  • Send transactions: Token transfers, contract interactions with simulation, gas estimation, and nonce management
  • Build React frontends: wagmi hooks for wallet connection, contract reads/writes, and chain switching

Quick Decision Guide

Building...Use This
Node.js script/backendviem with http transport
React/Next.js frontendwagmi hooks (built on viem)
Real-time event monitoringviem with webSocket transport
Browser wallet integrationwagmi or viem custom transport

Installation

bash
# Core library
npm install viem

# For React apps
npm install wagmi viem @tanstack/react-query

Core Concepts

Clients

ClientPurposeExample Use
PublicClientRead-only operationsGet balances, read contracts, fetch logs
WalletClientWrite operationsSend transactions, sign messages

Transports

TransportUse Case
http()Standard RPC calls (most common)
webSocket()Real-time event subscriptions
custom()Browser wallets (window.ethereum)

Reference Topics

The skill includes detailed reference documentation covering:

  • Clients and Transports -- PublicClient, WalletClient, chain configuration
  • Reading Data -- getBalance, readContract, getLogs, watchContractEvent
  • Writing Transactions -- sendTransaction, writeContract, simulateContract
  • Accounts and Keys -- privateKeyToAccount, mnemonicToAccount, HD wallets
  • Contract Patterns -- ABI formats, getContract, multicall, encodeFunctionData
  • Wagmi React -- useAccount, useConnect, useReadContract, useWriteContract

Released under the MIT License.