Ethers.js and Viem

Exploring Two Approaches to Interacting with Ethereum

Gabriella Mena Ogusuku
Blockful
6 min readSep 25, 2023

--

In the ever-evolving world of blockchain and cryptocurrency technologies, effective tools for interacting with networks are essential for developers and enthusiasts alike. In this context, the libraries Ethers.js and Viem are valuable resources for connecting decentralized applications (dApps) to smart contracts on the Ethereum network. While both share this central goal, their approaches and features differ. Let’s delve into the similarities and distinctions between these two libraries and understand how they can be applied in practice.

Ethers.js: Maturity and Comprehensive Features

Ethers.js has emerged as a powerful alternative to the once-dominant Web3.js, establishing itself as the primary library for connecting dApps to smart contracts on the Ethereum Virtual Machine (EVM). Its journey began as an effort to address the shortcomings of Web3.js, evolving into a comprehensive and reliable toolkit. With a full set of tools, Ethers.js offers a comprehensive approach to interactions with the Ethereum network.

One of the distinctive features of Ethers.js is its maturity and stability, accumulated over time. With a robust community of developers and users, the library provides extensive support and diverse resources, contributing to problem-solving and continuous improvement.

Viem: Efficiency and the Promise of Innovation

In contrast, we have the Viem library, which embraces a more minimalist and innovative approach. Viem is a TypeScript interface for Ethereum, offering low-level resources for network interactions. Its modular architecture and impressively small package size — just 35kB — stand out as striking advantages.

Viem takes an efficient approach by executing asynchronous tasks only when necessary, optimizing coding and analysis algorithms. Its concise API and type safety provide a more focused and error-free development experience.

Comparing the Two: Similarities and Differences

When considering Ethers.js and Viem, it is important to examine their similarities and distinctions, as these features can guide the choice between the two libraries.

Both libraries, in distinct ways, aim to provide powerful tools for Ethereum network interactions. While Ethers.js excels in its comprehensive approach and maturity, Viem shines for its efficiency and modularity.

However, Ethers.js has the upper hand in terms of experience and stability, given its long history and broad support community. Additionally, the library offers a broader set of features suitable for complex projects that require multiple functionalities.

Viem, on the other hand, faces the challenge of being a younger and less tested library in practice. Its minimalist approach may attract developers seeking efficiency but may lack some advanced features offered by Ethers.js. Viem’s documentation is better indexed when searches are performed and is also better exemplified with use cases and code sandboxes (testing areas).

Both libraries lack thorough error specification.

The major drawback of Viem lies in the youth of the library, which was recently released. Nonetheless, Viem was built by the mature team behind Wagmi, one of the most well-known and widely used React + Web3 libraries today, designed to abstract technical complexities in dApp development, and thus, it should grow in quality and community in the coming months.

Conclusion: Choosing the Best Tool for You

Ultimately, the choice between Ethers.js and Viem depends on personal preferences and the specific needs of the developer. Ethers.js is a solid choice for projects that value comprehensiveness and stability, while Viem promises efficiency and innovation for those seeking an alternative approach. You may notice some of the APIs in Viem are a little more verbose than Ethers. We prefer boring code, and we want to strongly embrace clarity and composability. We believe that verbose APIs are more flexible to move, change, and remove compared to code that is prematurely abstracted and hard to change.

Both libraries have their place in the Ethereum ecosystem, each uniquely contributing to the diverse needs of developers. Regardless of the choice, the constant evolution of these libraries and blockchain technology itself will continue to shape the future of decentralized development.

Ethers.js e Viem

No mundo em constante evolução das tecnologias de blockchain e criptomoedas, ferramentas eficazes para interagir com as redes são essenciais tanto para desenvolvedores quanto para entusiastas. Nesse contexto, as bibliotecas Ethers.js e Viem são recursos valiosos para conectar aplicativos descentralizados (dApps) a contratos inteligentes na rede Ethereum. Embora ambas compartilhem esse objetivo central, suas abordagens e características são diferentes. Vamos aprofundar nas semelhanças e diferenças entre essas duas bibliotecas e entender como elas podem ser aplicadas na prática.

Ethers.js: Maturidade e Recursos Abrangentes

O Ethers.js surgiu como uma poderosa alternativa à outrora dominante Web3.js, estabelecendo-se como a principal biblioteca para conectar dApps a contratos inteligentes na Ethereum Virtual Machine (EVM). Sua jornada começou como um esforço para abordar as deficiências do Web3.js, evoluindo para um conjunto abrangente e confiável de ferramentas. Com um conjunto completo de recursos, o Ethers.js oferece uma abordagem completa para interações com a rede Ethereum.

Uma das características distintivas do Ethers.js é sua maturidade e estabilidade, acumuladas ao longo do tempo. Com uma comunidade robusta de desenvolvedores e usuários, a biblioteca oferece amplo suporte e diversos recursos, contribuindo para a resolução de problemas e a melhoria contínua.

Viem: Eficiência e a Promessa da Inovação

Por outro lado, temos a biblioteca Viem, que adota uma abordagem mais minimalista e inovadora. O Viem é uma interface TypeScript para o Ethereum, oferecendo recursos de baixo nível para interações na rede. Sua arquitetura modular e tamanho de pacote impressionantemente pequeno — apenas 35kB — destacam-se como vantagens notáveis.

O Viem adota uma abordagem eficiente, executando tarefas assíncronas apenas quando necessário, otimizando algoritmos de codificação e análise. Sua API concisa e segurança de tipos proporcionam uma experiência de desenvolvimento mais focada e livre de erros.

Comparando os Dois: Semelhanças e Diferenças

Ao considerar o Ethers.js e o Viem, é importante examinar suas semelhanças e diferenças, pois essas características podem orientar a escolha entre as duas bibliotecas.

Ambas as bibliotecas, de maneiras distintas, buscam oferecer ferramentas poderosas para interações na rede Ethereum. Enquanto o Ethers.js se destaca por sua abordagem completa e maturidade, o Viem brilha por sua eficiência e modularidade.

No entanto, o Ethers.js tem a vantagem em termos de experiência e estabilidade, devido à sua longa história e à ampla comunidade de suporte. Além disso, a biblioteca oferece um conjunto mais amplo de recursos adequados para projetos complexos que exigem múltiplas funcionalidades.

O Viem, por sua vez, enfrenta o desafio de ser uma biblioteca mais jovem e menos testada na prática. Sua abordagem minimalista pode atrair desenvolvedores em busca de eficiência, mas pode carecer de algumas funcionalidades avançadas oferecidas pelo Ethers.js. A documentação do Viem é melhor indexada em pesquisas e também é melhor exemplificada com casos de uso e ambientes de teste (code sandboxes).

Ambas as bibliotecas carecem de especificações detalhadas para lidar com erros.

A principal desvantagem do Viem reside na juventude da biblioteca, que foi lançada recentemente. No entanto, o Viem foi desenvolvido pela experiente equipe por trás da Wagmi, uma das bibliotecas React + Web3 mais conhecidas e amplamente utilizadas atualmente, projetada para abstrair complexidades técnicas no desenvolvimento de dApps. Portanto, é de se esperar que cresça em qualidade e comunidade nos próximos meses.

Conclusão: Escolhendo a Melhor Ferramenta para Você

Em última análise, a escolha entre o Ethers.js e o Viem depende das preferências pessoais e das necessidades específicas do desenvolvedor. O Ethers.js é uma escolha sólida para projetos que valorizam a abrangência e a estabilidade, enquanto o Viem promete eficiência e inovação para aqueles que buscam uma abordagem alternativa. É possível notar que algumas APIs no Viem são um pouco mais verbosas do que as do Ethers. Preferimos um código claro e buscamos fortemente a clareza e a composição. Acreditamos que APIs mais verbosas são mais flexíveis para mover, alterar e remover em comparação com código que é prematuramente abstraído e difícil de alterar.

Ambas as bibliotecas têm seu lugar no ecossistema Ethereum, contribuindo de maneira única para as diversas necessidades dos desenvolvedores. Independentemente da escolha, a evolução constante dessas bibliotecas e da própria tecnologia blockchain continuará a moldar o futuro do desenvolvimento descentralizado.

Stay Connected 🌐

Follow us on social media for more updates and content:

Join our community on:

For more insights and discussions about blockchain and technology, visit Blockful 📚🔗.

Together, let’s explore and build web3 🚀

--

--

Gabriella Mena Ogusuku
Blockful

✨ Venturing into the web3 with a touch of pop culture