Hey all!

We are excited to announce the release of version 4.0 of the ethers.js library.

The ethers.js library is a alternative to both web3.js and EthereumJS, and aims to be highly maintained, flexible, complete and compact library for all your Ethereum needs, 100% MIT licensed.

If you are currently using version 3.0, you may need to make some small changes to upgrade, so make sure you check out the migration guide.

New Features

Completely re-written in TypeScript which compiles to JavaScript, adding internal compile-time analysis and providing external type definitions

Multi-langauge support for BIP39 (Simplified and Traditional Chinese, Italian, Japanese, and Korean; Coming soon: Spanish and French)

Modern Event Emitter model for all events; no more 1990’s DOM-style events (e.g. contract.ontransfer = func vs contract.on("Transfer", callback) )

vs ) Much more advanced Event Filters, allowing node-side filtering, and wildcard Event Listeners

Better ENS support; anywhere you can use an address you can use an ENS name (such as ricmoo.firefly.eth)

you can use an ENS name (such as ricmoo.firefly.eth) More logical and practical paradigm to deploy a Smart Contract, and easier to work with the result

Many internal improvements to the API, exposing more useful low-level functionality for framework developers and analysis tools

Performance improvements, especially for developers in node environments

Much stronger security guarantees with a deterministic build-process, the continuous integration and publishing to npm

Future Plans

The ethers.js library has also been approved for another round of funding from the Ethereum Foundation, which means we can continue spending a substantial portion of time assisting developers with issues, adding new features, improving developer experiences and adding tutorials.

The plan for the fairly immediate future:

Add remaining languages (French and Spanish) support for BIP39; it’s almost done, it just needs a little more testing

Add an Ethereum Virtual Machine implementation; we have a prototype, but it needs a little TLC before it is ready for public consumption, but this will allow a standards-compliant alternative to Ganache/TestRPC

More complex event filters (allowing OR in the log bloom filters)

in the log bloom filters) Easy-to-use One-Time Keyless Transactions (which is why Transaction was refactored into utils in version 4.0) and some articles on how to use this powerful and mostly unknown technique

Quick-and-dirty in-browser sandbox and development toolbox

Additional Providers (i.e. WebSocketProvider and MulticastProvider)

Other News

We are pleased to have worked with Web3.js to help them add support for ABIv2 by using the ethers.js ABI Coder and fully encourage any other libraries, frameworks and tools to import whatever components make your life easier.

Please don’t hesitate to reach out to us for assistance or to show off your awesome use of ethers.js.

We Love Feedback

This is the first release with TypeScript support, so if there are any issues with the way it is organized, or tools you are having problems with the TypeScript configuration, please let us know.

All feedback is quite welcome. Open issues on GitHub, chat with us on Gitter or e-mail us with any questions, comments or feedback.

For the latest updates and news, please watch us on GitHub and follow us on Twitter.

Thanks! Happy Hacking!