Today, we are excited to announce the promotion of EOSJS v20.0.0 out of beta to a stable release. The changes in the release mark a further step towards more secure and user-friendly JavaScript development for applications built on EOSIO. To create a seamless secure user experience, we believe blockchain applications should almost never need to access a user’s private keys. We have been updating EOSJS to support applications that propose transactions to secure signature providers, such as authenticators that are able to focus their efforts on storing keys in the most secure way possible, as well as to provide a consistent user experience when signing transactions. More on our work with authenticators can be seen in our recent EOSIO Labs™ release: The Universal Authenticator Library.

Since this release promotes breaking changes from EOSJS v20.0.0-beta3 to v20.0.0 (stable), using the @latest tag or the “^” will now automatically cause an upgrade from v16.0.x to v20.0.0. Developers who are still using EOSJS v16.0.x are recommended to also review the updated README, as this release is a complete rewrite which started from our initial EOSJS Major Version Update last October.

A full list of issues for EOSJS v20.0.0 can be found in the GitHub repository.

Highlights in EOSJS v20.0.0

BREAKING CHANGE: Removal of default exports (#490)

Using default exports causes inconsistencies depending on the module system used and makes refactoring code harder; therefore, they have been removed entirely from the EOSJS code. Developers using the JsSignatureProvider on v20.0.0-beta3 will need to update their syntax as follows: import JsSignatureProvider from ‘eosjs/dist/eosjs-jssig’ to import { JsSignatureProvider } from ‘eosjs/dist/eosjs-jssig’

Reduced bundle size significantly (#504)

Loading node modules from third parties is often the largest operation in a page load for end users. In order to minimize the loading time required for consumers of EOSJS, we have adjusted our distribution bundling process to exclude some unnecessary files. The EOSJS bundle size had been optimized since the v16.0.x release from 550kb to 130kb in v20.0.0-beta3. This change further reduces the bundle size from 130kb to 50kb.

Export Numeric module functions (#511)

The functions from the Numeric module can be useful for consuming applications. As such, we have decided to export them as part of our bundle for NPM and for the web build.

Security Updates

Update and lock dependency versions in package.json (#504)

By using the “^” in package.json, the consuming package has control over when EOSJS dependencies update, which could lead to bugs upon updating automatically. To prevent this, we have locked all versions to a specific version, so we can have discretion over when dependencies update. We also updated some dependency versions to mitigate certain security vulnerabilities.

Update and lock versions in EOSJS-ECC dependency (#49)

EOSJS-ECC dependencies have been locked in order to mitigate low priority security vulnerabilities.

Community Developer Support

In addition to our growing team at Block.one, we would like to send special thanks to a few community contributors who have submitted patches for this release. We are grateful for your contributions and commitment to the growth of the EOSIO software:

@Mc01

@channprj

@jnordberg

@wuyahuang

Stay Connected

If you are interested in providing feedback and working more closely with our team to improve the EOSJS repository for developers, you can send our developer relations team an email at developers@block.one.

You can also keep up to date with future updates by subscribing to our mailing list on the EOSIO Developer Portal. We are excited to be continually improving the usability of the software for EOSIO developers as we continue laying a foundation for the mass adoption of blockchain technology.