Skip to content
On this page

Getting Started โ€‹

Overview โ€‹

viem is a TypeScript interface for Ethereum that provides low-level stateless primitives for interacting with Ethereum. viem is focused on developer experience, stability, bundle size, and performance:

  • Developer experience Automatic type safety and inference, comprehensive documentation, composable APIs.
  • Stability Test suite runs against forked Ethereum networks, complete test coverage.
  • Bundle size Modular, tree-shakable, 35kB bundle.
  • Performance Optimized encoding/parsing, async tasks only when necessary, consistently #1 in benchmarks.

You can learn more about the rationale behind the project in the Why viem section.

Installation โ€‹

bash
npm i viem
bash
pnpm i viem
bash
yarn add viem

Quick Start โ€‹

1. Set up your Client & Transport โ€‹

Firstly, set up your Client with a desired Transport & Chain.

tsx
import { createPublicClient, http } from 'viem'
import { mainnet } from 'viem/chains'

const client = createPublicClient({
  chain: mainnet,
  transport: http(),
})

INFO

In a production app, it is highly recommended to pass through your authenticated RPC provider URL (Alchemy, Infura, Ankr, etc). If no URL is provided, viem will default to a public RPC provider. Read more.

2. Consume Actions! โ€‹

Now that you have a Client set up, you can now interact with Ethereum and consume Actions!

tsx
import { createPublicClient, http } from 'viem'
import { mainnet } from 'viem/chains'

const client = createPublicClient({
  chain: mainnet,
  transport: http(),
})

const blockNumber = await client.getBlockNumber()

Live example โ€‹

Released under the MIT License.