EOSJS Stable Version 20.0.0: Toward Seamless and Secure JavaScript Development for EOSIO™

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.


Disclaimer: Block.one makes its contribution on a voluntary basis as a member of the EOSIO community and is not responsible for ensuring the overall performance of the software or any related applications. We make no representation, warranty, guarantee or undertaking in respect of the releases described here, the related GitHub release, the EOSIO software or any related documentation, whether expressed or implied, including but not limited to the warranties or merchantability, fitness for a particular purpose and noninfringement. In no event shall we be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with the software or documentation or the use or other dealings in the software or documentation. Any test results or performance figures are indicative and will not reflect performance under all conditions. Any reference to any third party or third-party product, resource or service is not an endorsement or recommendation by Block.one. We are not responsible, and disclaim any and all responsibility and liability, for your use of or reliance on any of these resources. Third-party resources may be updated, changed or terminated at any time, so the information here may be out of date or inaccurate. Any person using or offering this software in connection with providing software, goods or services to third parties shall advise such third parties of these license terms, disclaimers and exclusions of liability.