Picking an Ethereum client library is a real constraint: bundle size, TypeScript types, and how you talk to the chain from React. Ethers.js and Viem (with Wagmi) are the two I keep comparing. Here's how they differ, and how we use Viem at Bitlauncher.

Using Viem at Bitlauncher
At bitlauncher.ai, we use Viem for performance and modularity in a few places:
- EVM Data Indexer: Viem is used with Node.js to efficiently index data from the Ethereum Virtual Machine (EVM) in backend systems.
- Development Faucet and Wallet Interfaces: Wagmi, integrated with Viem, powers the development faucet and main wallet for talking to Ethereum.
- Auction Interfaces: Wagmi's React hooks simplify the management of auction interfaces, ensuring a smooth user experience.
Despite these advancements, Ethers.js is still used in the smart contracts Hardhat project, primarily because it is a fork of the Gnosis auction system, which predates Viem/Wagmi.
Viem vs. Ethers.js
Performance and Bundle Size
- Viem: With a bundle size of around 27 KB, Viem is significantly lighter than Ethers.js, which is approximately 130 KB. This smaller size translates to faster load times and improved performance in web applications, making Viem an excellent choice for performance-sensitive projects.
- Ethers.js: While larger in size, Ethers.js offers a comprehensive suite of features, which still matters for more complex applications.
Modularity and Developer Experience
- Viem: Viem's modular architecture allows developers to import only the necessary parts, optimizing application performance and reducing overhead. The concept of "actions" in Viem promotes clarity and efficiency, helping developers manage tasks on the Ethereum network more effectively. Additionally, Viem provides automatic type safety, which is particularly beneficial for TypeScript developers.
- Ethers.js: Ethers.js is known for its extensive documentation and community support. It offers a wide range of utilities for interacting with Ethereum, making it a versatile tool for various use cases.
Integration with React Applications
- Wagmi: Designed specifically for React applications, Wagmi is built around Viem. It provides hooks to simplify the process of connecting to providers and managing state in React apps.
- Ethers.js: Although not specifically designed for React, Ethers.js can still be integrated into React projects, but it may require more boilerplate code compared to Wagmi.
Stability and Reliability
- Viem: The Viem team emphasizes stability by ensuring comprehensive test coverage against a forked Ethereum node. This approach aims to provide a reliable foundation for developers, which is crucial in production environments.
- Ethers.js: As a mature library, Ethers.js has a proven track record of stability and reliability, supported by a large and active community.
Both Ethers.js and Viem/Wagmi have a place. The choice depends on the project: Viem is smaller, more modular, and pairs cleanly with React; Ethers.js is older, well documented, and still the default in some Hardhat/smart-contract toolchains. That's a technical leadership call in Web3, not a fashion one.
At bitlauncher.ai we picked Viem and Wagmi where they actually help—indexer, faucet, wallet, auctions—and kept Ethers.js where the Gnosis auction fork already depended on it. The goal is maintainable apps, not a stack for its own sake.