# Viem Build reliable Ethereum apps & libraries with lightweight, composable, & type-safe modules from viem. # Why Viem \[A brief preamble on why we built Viem] ## The Problems The current state of low-level Ethereum interface abstractions lack in at least one of the following four areas: **developer experience**, **stability**, **bundle size** and/or **performance** — a quadrilemma. As the authors of [wagmi](https://wagmi.sh), a popular React Hooks library for Ethereum, we struggled to work with the existing low-level TypeScript Ethereum libraries. We wanted to provide the users of wagmi with the best possible developer experience, but we were limited by the underlying technologies wagmi was built on. We knew an *always* stable, predictable implementation with a tiny bundle size and performant modules was paramount to interacting with the world's largest blockchain ecosystem. So we created **viem**: a TypeScript Interface for Ethereum that provides low-level stateless primitives for interacting with Ethereum. An alternative to ethers.js and web3.js with a focus on reliability, efficiency, and excellent developer experience. ## Developer Experience viem delivers a great developer experience through modular and composable APIs, comprehensive documentation, and automatic type safety and inference. It provides developers with intuitive building blocks to build their Ethereum apps and libraries. While viem's APIs may be more verbose than alternative libraries, we believe this is the right trade-off as it makes viem's modular building blocks extremely flexible. Easy to move around, change, and remove. It also allows the developers to better understand Ethereum concepts as well as understand *what* and *why* certain properties are being passed through. Learning how to use viem is a great way to learn how to interact with Ethereum in general. We aim to provide extensive API documentation and usage for *every* module in viem. viem uses a [documentation](https://gist.github.com/zsup/9434452) and [test driven](https://en.wikipedia.org/wiki/Test-driven_development#:~:text=Test%2Ddriven%20development%20\(TDD\),software%20against%20all%20test%20cases.) development approach to building modules, which leads to predictable and stable APIs. viem also provides consumers with [strongly typed APIs](/docs/typescript), allowing consumers to get the best possible experience through [autocomplete](https://twitter.com/awkweb/status/1555678944770367493), [type inference](https://twitter.com/_jxom/status/1570244174502588417?s=20), as well as static validation. ## Stability Stability is a fundamental principle for viem. As the authors of [wagmi](https://wagmi.sh), we have many organizations, large and small, that rely heavily on the library and expect it to be entirely stable for their users. viem takes the following steps to ensure stability: * We run our test suite against a forked Ethereum node * We aim for complete test coverage and test all potential behavioral cases * We build deterministic and pure APIs ## Bundle Size Maintaining a low bundle size is critical when building web applications. End users should not be required to download a module of over 100kB in order to interact with Ethereum. On a slow 3G mobile network loading a 100kB library would take at least **two seconds** (plus additional time to establish an HTTP connection). Furthermore, viem is tree-shakable, meaning only the modules you use are included in your final bundle.
## Performance In addition to the fast load times mentioned above, viem further tunes performance by only executing heavy asynchronous tasks when required and optimized encoding/parsing algorithms. The benchmarks speak for themselves:
## Opinions & Escape Hatches Unlike other low-level interfaces that impose opinions on consumers, viem enables consumers to choose their opinions while still maintaining sensible and secure defaults. This allows consumers to create their own opinionated implementations, such as [wagmi](https://wagmi.sh), without the need for tedious workarounds. *** **viem** will help developers build with a higher level of accuracy and correctness through type safety and developer experience. It will also integrate extremely well with [wagmi](https://wagmi.sh) so folks can start using it without much upfront switching cost. # Installation Install Viem via your package manager, a ` ``` ## Using Unreleased Commits If you can't wait for a new release to test the latest features, pull requests and commits are continuously released via [pkg.pr.new](https://pkg.pr.new) and can be installed using the pull request number or short commit ID. :::code-group ```bash [pnpm] pnpm add https://pkg.pr.new/viem@123 ``` ```bash [npm] npm install https://pkg.pr.new/viem@123 ``` ```bash [yarn] yarn add https://pkg.pr.new/viem@123 ``` ```bash [bun] bun add https://pkg.pr.new/viem@123 ``` ::: Or clone the [Viem repo](https://github.com/wevm/viem) to your local machine, build, and link it yourself. ```bash gh repo clone wevm/viem cd viem pnpm install pnpm build pnpm link --global ``` Then go to the project where you are using Viem and run `pnpm link --global viem` (or the package manager that you used to link Viem globally). ## Security Ethereum-related projects are often targeted in attacks to steal users' assets. Make sure you follow security best-practices for your project. Some quick things to get started. * Pin package versions, upgrade mindfully, and inspect lockfile changes to minimize the risk of [supply-chain attacks](https://nodejs.org/en/guides/security/#supply-chain-attacks). * Use [npm](https://docs.npmjs.com)'s [`min-release-age`](https://docs.npmjs.com/cli/v11/using-npm/config#min-release-age) or [pnpm](https://pnpm.io)'s [`minimumReleaseAge`](https://pnpm.io/settings#minimumreleaseage) and [`trustPolicy`](https://pnpm.io/settings#trustpolicy) to mitigate against supply-chain attacks. * Install the [Socket](https://socket.dev) [GitHub App](https://github.com/apps/socket-security) to help detect and block supply-chain attacks. * Add a [Content Security Policy](https://cheatsheetseries.owasp.org/cheatsheets/Content_Security_Policy_Cheat_Sheet.html) to defend against external scripts running in your app. * Pin [GitHub Action](https://x.com/paulmillr/status/1900948425325031448) versions to commits instead of tags. [Actions Up](https://github.com/azat-io/actions-up) is a good tool for using commits instead of tags. # Getting Started \[Get started with viem in just a few lines of code.] ## 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](/docs/typescript), comprehensive documentation, composable APIs. * **Stability** Test suite runs against forked Ethereum networks, complete [test coverage](https://app.codecov.io/gh/wevm/viem). * **Bundle size** Tree-shakable lightweight modules. * **Performance** Optimized encoding/parsing, async tasks only when necessary. You can learn more about the rationale behind the project in the [Why viem](/docs/introduction) section. ## Installation :::code-group ```bash [npm] npm i viem ``` ```bash [pnpm] pnpm i viem ``` ```bash [bun] bun i viem ``` ::: ## Quick Start ### 1. Set up your Client & Transport Firstly, set up your [Client](/docs/clients/intro) with a desired [Transport](/docs/clients/intro) & [Chain](/docs/chains/introduction). ```ts twoslash // @twoslash-cache: {"v":2,"hash":"4325e3129e7d1b0f49d2308dc7a17092c243488ac8b7f8bd4838f3c6086a42d2","data":"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"} import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ // [!code focus] chain: mainnet, // [!code focus] transport: http(), // [!code focus] }) // [!code focus] ``` :::info In a production app, it is highly recommended to pass through your authenticated RPC provider URL (Infura, thirdweb, etc). If no URL is provided, viem will default to a public RPC provider. [Read more](/docs/clients/transports/http#usage). ::: ### 2. Consume Actions Now that you have a Client set up, you can now interact with Ethereum and consume [Actions](/docs/actions/public/introduction)! ```ts twoslash // @twoslash-cache: {"v":2,"hash":"addfd6ec5172b8c69ec2c903ce942b998c110b07ae869d980662b44698569b61","data":"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"} import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const blockNumber = await client.getBlockNumber() // [!code focus] ``` ## Live example