ethers vs wagmi vs @web3-react/core vs @walletconnect/client vs @web3modal/core
Web3 and Blockchain Libraries Comparison
1 Year
etherswagmi@web3-react/core@walletconnect/client@web3modal/coreSimilar Packages:
What's Web3 and Blockchain Libraries?

These libraries facilitate the integration of blockchain technology into web applications, providing developers with tools to connect to wallets, manage blockchain interactions, and build decentralized applications (dApps). They simplify the process of interacting with various blockchain networks and enhance user experience by enabling seamless wallet connections and transactions.

Package Weekly Downloads Trend
Github Stars Ranking
Stat Detail
Package
Downloads
Stars
Size
Issues
Publish
License
ethers1,856,7218,23612.9 MB587a day agoMIT
wagmi276,7756,2911.07 MB136 days agoMIT
@web3-react/core75,9965,63867.6 kB1742 years agoGPL-3.0-or-later
@walletconnect/client65,7291,535188 kB52-Apache-2.0
@web3modal/core49,4900725 kB07 months agoApache-2.0
Feature Comparison: ethers vs wagmi vs @web3-react/core vs @walletconnect/client vs @web3modal/core

Wallet Connection

  • ethers:

    ethers does not focus on wallet connection but rather on interacting with the Ethereum blockchain. It allows developers to create transactions, interact with smart contracts, and manage Ethereum accounts, making it essential for building Ethereum-based applications.

  • wagmi:

    wagmi integrates wallet connection management with React Hooks, making it easy to connect to wallets and manage state in a React application. It streamlines the process of connecting to wallets and interacting with the Ethereum blockchain.

  • @web3-react/core:

    @web3-react/core offers a straightforward way to manage wallet connections within React applications. It allows developers to easily integrate wallet providers and handle connection states, making it easier to build user interfaces that respond to wallet interactions.

  • @walletconnect/client:

    @walletconnect/client provides a versatile wallet connection solution that supports multiple wallet types, including mobile wallets and browser extensions. It enables users to connect their wallets securely and interact with dApps without compromising their private keys.

  • @web3modal/core:

    @web3modal/core excels in providing a customizable wallet connection modal that allows users to select from various wallet options. It enhances user experience by simplifying the wallet connection process and providing a consistent interface across different wallets.

Blockchain Interaction

  • ethers:

    ethers is specifically designed for interacting with the Ethereum blockchain. It provides a wide array of utilities for sending transactions, interacting with smart contracts, and querying blockchain data, making it an essential tool for Ethereum developers.

  • wagmi:

    wagmi provides hooks that simplify blockchain interactions, allowing developers to easily call smart contracts, send transactions, and manage blockchain state in a React application. It abstracts away much of the complexity involved in Web3 interactions.

  • @web3-react/core:

    @web3-react/core simplifies blockchain interaction by providing hooks and context for managing wallet state and transactions. It allows developers to easily send transactions and call smart contract methods while maintaining a clean and organized codebase.

  • @walletconnect/client:

    @walletconnect/client facilitates seamless interaction with various blockchain networks by allowing users to connect their wallets and authorize transactions. It abstracts the complexities of blockchain communication, enabling developers to focus on building their applications.

  • @web3modal/core:

    @web3modal/core does not directly handle blockchain interactions but provides a user-friendly interface for selecting wallets that can interact with the blockchain. It enhances the user experience by making wallet selection intuitive and straightforward.

Learning Curve

  • ethers:

    ethers has a steeper learning curve due to its comprehensive feature set and focus on Ethereum-specific interactions. However, its extensive documentation and community support help ease the learning process for new developers.

  • wagmi:

    wagmi is designed to be intuitive for React developers, leveraging familiar hooks and patterns. Its learning curve is gentle, especially for those already accustomed to React, making it a great choice for building dApps.

  • @web3-react/core:

    @web3-react/core is designed for React developers, making it relatively easy to learn for those already familiar with React. Its API is straightforward, allowing developers to quickly integrate wallet functionality into their applications.

  • @walletconnect/client:

    @walletconnect/client has a moderate learning curve, especially for developers unfamiliar with wallet connection protocols. However, its documentation and examples make it accessible for those willing to invest time in understanding wallet interactions.

  • @web3modal/core:

    @web3modal/core is user-friendly and easy to implement, especially for developers looking to enhance user experience. Its modular approach allows for quick setup and customization, making it accessible for developers of all skill levels.

Extensibility

  • ethers:

    ethers is extensible in terms of its utility functions and contract interactions. Developers can create custom utilities and extend the library's capabilities to suit their specific use cases, particularly when working with Ethereum contracts.

  • wagmi:

    wagmi is built with extensibility in mind, allowing developers to create custom hooks and utilities that enhance their dApp's functionality. This makes it easy to adapt the library to fit the unique requirements of a project.

  • @web3-react/core:

    @web3-react/core offers a modular architecture that allows developers to easily extend its functionality by adding new wallet connectors or customizing existing ones. This extensibility makes it adaptable to various project requirements.

  • @walletconnect/client:

    @walletconnect/client is highly extensible, allowing developers to integrate additional wallet providers and customize the connection process. This flexibility makes it suitable for applications that aim to support a diverse range of wallets and blockchain networks.

  • @web3modal/core:

    @web3modal/core is designed for extensibility, allowing developers to add new wallet providers and customize the user interface. This flexibility enables applications to cater to specific user needs and preferences.

Community and Support

  • ethers:

    ethers has a large and active community, with extensive documentation, tutorials, and examples available. This strong support network helps developers troubleshoot issues and learn best practices for Ethereum development.

  • wagmi:

    wagmi is backed by a vibrant community of React developers, providing resources, examples, and support. Its popularity ensures that developers can find help and share knowledge easily.

  • @web3-react/core:

    @web3-react/core benefits from a supportive community of React developers, offering ample resources, tutorials, and examples. This community-driven support helps new developers quickly find solutions to common challenges.

  • @walletconnect/client:

    @walletconnect/client has a growing community and active support channels, providing developers with resources and assistance as they integrate wallet connectivity into their applications. The community contributes to continuous improvement and updates.

  • @web3modal/core:

    @web3modal/core has a supportive community and comprehensive documentation, making it easy for developers to find help and resources. Its popularity among developers ensures ongoing updates and improvements.

How to Choose: ethers vs wagmi vs @web3-react/core vs @walletconnect/client vs @web3modal/core
  • ethers:

    Choose ethers if you need a comprehensive library for interacting with the Ethereum blockchain. It offers a wide range of features, including contract interaction, transaction management, and utility functions for working with Ethereum addresses and transactions. It is ideal for developers looking for a powerful and flexible Ethereum library.

  • wagmi:

    Select wagmi if you want a React Hooks library that simplifies the process of building dApps with Ethereum. It provides a set of hooks for managing state and interactions with the Ethereum blockchain, making it easier to build responsive and efficient dApps without dealing with the complexities of Web3 directly.

  • @web3-react/core:

    Select @web3-react/core if you are looking for a React-specific solution that provides a simple way to manage wallet connections and state. It is best suited for developers who want to leverage React's component-based architecture while integrating blockchain functionality into their applications.

  • @walletconnect/client:

    Choose @walletconnect/client if you need a robust solution for connecting to multiple wallets and supporting various blockchain networks. It is ideal for applications that require a flexible wallet connection strategy and want to cater to a wide range of users across different wallets.

  • @web3modal/core:

    Opt for @web3modal/core when you want to provide users with a customizable wallet selection interface. This package is perfect for applications that require a user-friendly way to connect to different wallets and want to enhance the onboarding experience for users unfamiliar with blockchain technology.

README for ethers

The Ethers Project

npm (tag) CI Tests npm bundle size (version) npm (downloads) GitPOAP Badge Twitter Follow


A complete, compact and simple library for Ethereum and ilk, written in TypeScript.

Features

  • Keep your private keys in your client, safe and sound
  • Import and export JSON wallets (Geth, Parity and crowdsale)
  • Import and export BIP 39 mnemonic phrases (12 word backup phrases) and HD Wallets (English as well as Czech, French, Italian, Japanese, Korean, Simplified Chinese, Spanish, Traditional Chinese)
  • Meta-classes create JavaScript objects from any contract ABI, including ABIv2 and Human-Readable ABI
  • Connect to Ethereum nodes over JSON-RPC, INFURA, Etherscan, Alchemy, Ankr or MetaMask
  • ENS names are first-class citizens; they can be used anywhere an Ethereum addresses can be used
  • Small (~144kb compressed; 460kb uncompressed)
  • Tree-shaking focused; include only what you need during bundling
  • Complete functionality for all your Ethereum desires
  • Extensive documentation
  • Large collection of test cases which are maintained and added to
  • Fully written in TypeScript, with strict types for security and safety
  • MIT License (including ALL dependencies); completely open source to do with as you please

Keep Updated

For advisories and important notices, follow @ethersproject on Twitter (low-traffic, non-marketing, important information only) as well as watch this GitHub project.

For more general news, discussions, and feedback, follow or DM me, @ricmoo on Twitter or on the Ethers Discord.

For the latest changes, see the CHANGELOG.

Summaries

Installing

NodeJS

/home/ricmoo/some_project> npm install ethers

Browser (ESM)

The bundled library is available in the ./dist/ folder in this repo.

<script type="module">
    import { ethers } from "./dist/ethers.min.js";
</script>

Documentation

Browse the documentation online:

Providers

Ethers works closely with an ever-growing list of third-party providers to ensure getting started is quick and easy, by providing default keys to each service.

These built-in keys mean you can use ethers.getDefaultProvider() and start developing right away.

However, the API keys provided to ethers are also shared and are intentionally throttled to encourage developers to eventually get their own keys, which unlock many other features, such as faster responses, more capacity, analytics and other features like archival data.

When you are ready to sign up and start using for your own keys, please check out the Provider API Keys in the documentation.

A special thanks to these services for providing community resources:

Extension Packages

The ethers package only includes the most common and most core functionality to interact with Ethereum. There are many other packages designed to further enhance the functionality and experience.

  • MulticallProvider - A Provider which bundles multiple call requests into a single call to reduce latency and backend request capacity
  • MulticoinPlugin - A Provider plugin to expand the support of ENS coin types
  • GanaceProvider - A Provider for in-memory node instances, for fast debugging, testing and simulating blockchain operations
  • Optimism Utilities - A collection of Optimism utilities
  • LedgerSigner - A Signer to interact directly with Ledger Hardware Wallets

License

MIT License (including all dependencies).