Hermes V1: What It Is, What It Isn’t, and What’s Next

Featuring
Łukasz Chludziński
Engineering Manager
@
Callstack
Matt Hargett
Founder
@
Rebecker Specialties
Szymon Chmal
Software Developer
@
Callstack

Understanding Hermes V1

This Callstack live stream brought together Łukasz Chludziński, Szymon Chmal, and Matt Hargett to discuss the long-awaited Hermes V1 release. While the name might sound like a major rewrite, Hermes V1 isn’t “static Hermes.” Instead, it represents a significant improvement to the existing engine, bringing stronger language support, performance optimizations, and experimental JIT compilation capabilities.

The evolution of Hermes

Matt shared his early experience integrating Hermes at PlayStation years before it became open source. Designed to improve startup times and efficiency, Hermes focused on executing precompiled bytecode rather than interpreting JavaScript text at runtime. This shift, comparable to .NET’s early optimizations, meant faster app startup and smaller memory footprints, which became critical for React Native apps on constrained devices.

What’s new in V1

Hermes V1 introduces native support for more modern JavaScript features (let, const, async, ES classes, maps, and sets), reducing the need for polyfills and leading to smaller, faster apps. It also removes property count limits on objects and adds an experimental JIT engine. While JIT can boost performance, the team discussed how it’s not universally beneficial, particularly for battery-sensitive or lower-end devices.

Performance, JIT, and real-world trade-offs

Matt outlined the nuanced reality of runtime performance. While JIT can accelerate computation-heavy workloads, it may harm startup times and energy efficiency on mobile and TV platforms. Hermes’ design allows developers to balance speed, memory, and energy, turning features like JIT on or off depending on device class. This approach reflects the engine’s adaptability across a global ecosystem where users’ hardware varies widely, from flagship phones to low-power Fire TV sticks.

The road ahead

Static Hermes remains in development, but V1 lays the groundwork for it. With the community already benefiting from ongoing improvements in interpreter performance and memory efficiency, the team anticipates Hermes’ next phase to further unify developer experience across devices.

‍

Insights

Learn more about Hermes

cover

Dec 18Article

Why You Don’t Have to Minify JavaScript Code in React Native Apps

React Native skips JavaScript minification in production because Hermes handles dead code elimination at the bytecode level. Here’s how and why it works.

cover

Dec 4Podcast

From Static Hermes to Hermes V1: The Road to Default

Nicola Corti (Meta) explains the evolution of Static Hermes into Hermes V1, the performance boosts it ships, and the (experimental) path to making it the new default engine.

cover

Dec 4Article

How to Optimize Your Android App Startup Time With Hermes

Learn how to achieve better performance and optimize Android app startup time with Hermes.

cover

Jun 14Article

Technical Guide, Part 2: Integrating Hermes With React Native

Interested in the Hermes engine? Check the second part of our expert guide to find out how to integrate Hermes with React Native.

cover

May 26Article

Technical Guide, Part 1: Compiling Hermes for Apple Platforms

Want to use Hermes in your React Native app on iOS? Find out how to compile Hermes for Apple platforms. Check the first part of our expert technical guide.

cover

May 11Podcast

React Native 0.64 With Hermes for iOS

Discover how Hermes boosts React Native performance on iOS and macOS, with insights into AOT, bytecode precompilation, and the future of Hermes support.

cover

Apr 21Article

Hermes Performance on iOS

Wondering how the Hermes engine performs on iOS? We tested it on a React Native mobile app. Check the results and see how it compares to JSC.

cover

Apr 14Article

Bringing Hermes to iOS in React Native 0.64

Hermes is now available for iOS as well. Find out more about this JS engine - check the first part of our series on bringing Hermes to iOS.

cover

Mar 19Tutorial

The Hard Way vs. The React Native AI SDK Way: Stop Writing Custom Modules for Every Model

Learn how React Native AI uses a unified provider model to switch between cloud and on-device LLMs without rewriting application logic, enabling reliable AI experiences online and offline.

cover

Mar 12Tutorial

Build Smarter Apps: Tool Calling & AI Orchestration Explained

Learn how on-device models in React Native can call tools, interact with external APIs, and return structured outputs you can use directly in application logic.

cover

Mar 5Tutorial

MLC LLM + React Native: On-Device AI Without the Pain

Learn how to run third-party on-device LLMs in React Native using MLC LLM. Choose your models, run them efficiently across platforms, and keep a unified JavaScript API with React Native AI.

cover

Feb 24Tutorial

Intelligent Fallbacks with Apple Intelligence in React Native

Learn how to use Apple’s built-in Foundation Models in React Native apps, reduce memory usage, and enable fast, fully on-device AI with React Native AI Apple.

cover

Feb 10Tutorial

What Is the React Native AI SDK? A Complete Intro & Quickstart

Learn why on-device AI matters for React Native apps, how local LLMs behave offline, and what problems React Native AI is designed to solve from day one.

cover

Jan 29Tutorial

Implementing an Android TurboModule with Kotlin

Learn how to implement a React Native TurboModule on Android, from the TypeScript spec and Codegen to the Kotlin implementation and package registration.

cover

Jan 19Tutorial

Working with Different Threads in Swift TurboModules

Learn how JavaScript, native module, background, and main threads interact in React Native TurboModules, and how to use GCD queues to run async work safely in Swift.

cover

Jan 9Tutorial

How to Add Type-Safe Constants to Swift TurboModules

Learn how to expose typed, immutable constants from a Swift TurboModule using Codegen, and get full end-to-end type safety between native and JavaScript.

cover

Dec 30Tutorial

Adding Event Emitters to Your TurboModule in Swift

Learn how to emit native events from a Swift TurboModule and subscribe to them in JavaScript, including proper memory management and Codegen integration.

cover

Dec 22Tutorial

Writing Your First TurboModule in Swift

Learn how to build a fully working TurboModule in Swift, integrate it with Codegen, and bridge it through Objective‑C inside an Expo app.