Facebook Releases Hermes JavaScript Engine for React

Facebook Releases Hermes JavaScript Engine for React

A JavaScript engine designed to make native Android apps built using the React Native network load faster has been outdoor by Facebook. Hermes, which has been open sourced under a MIT license, is described as featuring ahead-of-time static optimization and compact bytecode.

Facebook says that for many apps, simply enabling Hermes will result in improved start-up time, decreased memory usage and smaller app size. At this time Hermes is an opt-in React Native feature.

Facebook developed React Native as a framework for developing apps simultaneously for Android, iOS and Universal Windows Platform (UWP) using JavaScript, the React library, and native platform components. One problem with React Native has been with app performance, particularly at load time, and Hermes is intended to overcome this.

Hermes makes use of bytecode precompilation, so that the code is processed using ahead-of-time (AOT) compilation when the app is built to maximize bytecode optimization.

The announcement of Hermes was made at this year’s Chain React 2019 conference. In a demo, Facebook’s Marc Horowitz showed that a React Native app with Hermes was fully loaded within half the time the same app without Hermes loaded, or about two seconds faster:

In the demo, Horowitz points out that Hermes reduces the size of the Android APK download size to around half that of an average React Native app, and also reduces the amount of memory used by a quarter. Horowitz says this is important on lower-end phones with limited memory:

“As developers we tend to carry the latest flagship devices. Most users around the world don’t”

Horowitz

While Hermes is largely ES6 JavaScript compatible, some more advanced language features has been excluded, such as with statements, reflections and realm.

Facebook says Hermes is intended only for React Native, with no plans to produce a version for Node.js, for example.

More Information