Skip to content

Ethers.js

Ethers.js is a JavaScript/TypeScript library for EVM networks. It separates providers, signers and contracts for queries, authorisation and transaction tracking in web applications and backend services. Providers read network data and signers add signing authority. Applications keep addresses, ABIs and asset units aligned and distinguish pending, confirmed and reverted operations.

Written by Isaac GonzálezUpdated October 11, 2026

Key takeaways

  • Ethers.js provides clients for reading contracts, signing and submitting EVM transactions.
  • Providers and signers separate network access from operation authorization.
  • Version migrations require reviews of types, responses and error handling.

What is Ethers.js?

Ethers.js is a JavaScript and TypeScript library for interacting with EVM networks. It organises queries, signing and contracts through abstractions usable in web interfaces and backend services. It connects to network providers and accounts rather than operating blockchain infrastructure by itself.

Separating providers from signers distinguishes reading from authorisation. A service can query balances without holding signing keys, while state-changing operations require an account or wallet with the relevant permissions. This separation helps define which components need access to sensitive capabilities.

How it works

A provider retrieves network data and a signer authorises operations. A Contract object combines address and ABI with available reading or signing capabilities. In browsers, BrowserProvider adapts an EIP-1193 provider; HTTP node access uses a different configuration and should not be confused with wallet authorisation.

Ethers v6 uses native bigint instead of v5's familiar BigNumber. Migration requires checking imports, responses and conversions, particularly JSON serialization. Token amounts need decimal-aware handling rather than indiscriminate conversion to floating-point numbers that can lose precision for valid on-chain quantities.

What Ethers.js offers

A distribution backend can prepare transactions, request authorisation and track receipts. It retains nonce, hash, network and intended finality, distinguishing pending operations from reverts. Receiving a hash does not establish that the business process completed or the recipient received the asset.

Keeping Ethers in an existing application can avoid a migration without sufficient benefit. Tests should cover errors, network changes and formats consumed by other components. Library migration should compare behaviour at those boundaries rather than only the syntax of a successful read call.

Limitations and selection criteria

Library types do not establish that the ABI matches deployed implementation. Configuration should connect network, address and contract version. Simulations can detect reverts at a particular state, but that state may change before a transaction executes on the destination network.

Selection against Viem depends on existing integrations, ergonomics and team needs. Frontend size should be measured with actual imports and bundler settings. Generic kilobyte claims or style preferences do not replace evidence about application behaviour, integration compatibility and maintenance effort.

Also known as

  • Ethers
  • Ethers v5
  • Ethers v6
Development at Metlabs

How we approach a project with Ethers.js

Development capabilities and use cases to assess how Ethers.js fits your product.

What we build with Ethers.js at Metlabs

  • Node backend integration

    Services that sign and send transactions programmatically with managed accounts.

  • Legacy frontends

    dApps already using Ethers that need maintenance or new features without rewriting.

  • Assisted migration to Viem

    When it pays off, we migrate from Ethers to Viem in phases, rewriting the calls and leveraging ABI-derived types.

  • Use case

    Automated trading bot

    Node backend monitoring prices and executing trades with a managed wallet using Ethers.

  • Use case

    Secure backend signing

    Service that signs and sends transactions with Ethers using keys held in a KMS, without exposing the private key in code.

Related content

Go deeper on Ethers.js

Other Metlabs pages that expand on this entry.

Building with Ethers.js?

We analyze your case, pick the right stack and ship a production-ready solution.

Tell us about your project

As featured in

CointelegraphInvesting.comEl EspañolEmprendedoresEl ObservadorCriptoNoticias