Hermes

Also called Hermes engine

Also known as
Hermes engine
Updated

What is Hermes in React Native?

Hermes is the JavaScript engine Meta built for React Native. Default since version 0.70, it precompiles code to bytecode for faster startup and lower memory use.

hermes
The card being worked onPunched card: bytecodePrinted card: JavaScript sourceBoth engines turn source into bytecode before running it; the difference is when. Hermes compiles the bundle with hermesc at build time and ships the bytecode in the app, so the launch dial only times the reader. JavaScriptCore receives source text and parses it on every launch, so the press runs while the dial turns. Hermes has no JIT: the reader interprets bytecode, trading peak speed for fast, predictable startup. The dial is in figure seconds; the gap, not the unit, is the point.

Hermes is an open-source JavaScript engine Meta built specifically for running React Native on mobile. It has been the default engine since React Native 0.70, replacing JavaScriptCore.

It is optimised for constraints a browser engine does not have:

  • Ahead-of-time bytecode. Instead of parsing JavaScript on every launch, Hermes compiles the bundle to bytecode at build time. That removes parse cost from startup, which is the single biggest win on low-end Android devices.
  • Smaller memory footprint, from a garbage collector tuned for mobile.
  • No JIT. Hermes trades peak throughput for start-up speed and predictability — the right trade for UI code, less so for heavy computation.

Two practical notes. Debugging targets React Native DevTools rather than a Chrome tab, because Hermes is not Chrome's V8. And engine gaps are real: an Intl or regex feature that works in a browser may be absent, so test on device rather than trusting a web preview.

See Hermes.