Perry vs Static Hermes
Static Hermes (`shermes`) is Meta's research-stage effort to ahead-of-time compile a strongly-typed subset of JavaScript/TypeScript through the Hermes engine, primarily aimed at React Native. Perry is a different bet on the same general idea — TypeScript compiled to native — but built independently in Rust on LLVM, with a working compiler, 25+ native UI widgets, and 10 compilation targets shipping today. As of April 2026, Perry's own benchmark suite reports that Static Hermes was tried as a peer and was not installable cleanly via the standard package managers it tested.
What is Static Hermes?
Hermes is the JavaScript engine Meta built for React Native — bytecode-based, AOT-precompiled, optimized for mobile startup time. Static Hermes is the research effort to extend Hermes with ahead-of-time native compilation of a typed JavaScript subset, intended to give React Native a path to true native code. It's primarily a compiler R&D project; per Perry's benchmark notes, it isn't packaged for routine installation on macOS arm64 yet (`shermes` was skipped from the polyglot bench with a note that it 'is not available on Homebrew or npm in a way that installs cleanly on macOS arm64' — see perry/benchmarks/README.md).
What is Perry?
Perry is a native TypeScript compiler written in Rust, using SWC for parsing and LLVM for code generation. It ships a working CLI (`perry compile`, `perry run`, `perry publish`), 25+ native UI widgets, 10 compilation targets, a self-hosted runtime, and a benchmark suite measured under transparent conditions (M1 Max, RUNS=11). Perry is pre-1.0 but production-track: people are shipping apps built with it (Bloom Engine, Mango, Hone, Pry, dB Meter — see perryts.com).
Side by side
| Feature | Perry | Static Hermes |
|---|---|---|
| Status | Pre-1.0 (alpha) — production-track | Research / experimental |
| Install path (macOS arm64) | Homebrew, APT, npm (@perryts/perry) | Not packaged for clean install at time of writing (per perry/benchmarks) |
| Backend | LLVM | Custom (Hermes-based codegen) |
| Input | TypeScript (full) | Typed JS/TS subset |
| Compilation targets | 10: macOS, iOS, iPadOS, Android, Linux, Windows, watchOS, tvOS, WASM, Web/JS | Primarily mobile (React Native context) |
| Native UI | 25+ widgets via AppKit, UIKit, GTK4, Win32, JNI | Via React Native bridge (when integrated) |
| Standalone CLI app workflow | Yes — `perry compile main.ts` produces a binary | Tied to React Native context |
| Public benchmark suite | Yes — RUNS=11 against Node, Bun, Rust, C++, Go, Swift, Java | Internal / research papers |
Where Perry wins
- +It exists as a usable tool. Perry can be installed today via Homebrew, APT, or `npm install @perryts/perry`, and `perry compile main.ts` produces a binary on the first try.
- +Broader scope. Perry compiles standalone CLI apps, native desktop apps, mobile apps, watch apps, TV apps, WASM, and the web from one TypeScript codebase. Static Hermes is focused on React Native's native-code path.
- +Native UI built in. Perry's perry/ui module is a working SwiftUI-style declarative UI layer that compiles to AppKit/UIKit/GTK4/Win32/JNI widgets. Static Hermes leaves UI to its host (React Native).
- +Public, reproducible benchmark suite with documented methodology — perry/benchmarks shows median + p95 + σ across RUNS=11 against named compilers and runtimes.
- +LLVM backend means Perry inherits decades of mature optimization passes (autovectorization, IndVarSimplify, scalar replacement) and supports every platform LLVM targets.
Where Static Hermes wins
- +Backed by Meta — significant engineering resources and a clear strategic anchor in React Native.
- +Hermes is already shipping in production React Native apps as a bytecode engine; Static Hermes inherits that ecosystem and tooling.
- +Research-grade work on AOT typing rules and JS-subset semantics that is genuinely novel.
- +If you're already on React Native, Static Hermes (when available) is a more incremental path than rewriting against a different compiler.
When to choose Perry
Choose Perry if you need a TS-to-native compiler that works today, you want one TypeScript codebase to target desktop, mobile, watch, TV, WASM, and the web, or you want native UI widgets without React Native's bridge.
When to choose Static Hermes
Choose Static Hermes (when available) if you're committed to React Native and want a path from JavaScript/TypeScript to ahead-of-time-compiled native code on mobile, and you're comfortable working at the research-tooling edge.
Verdict
Static Hermes is interesting research from a credible team. Perry is a working product on the same general idea, scoped much more broadly than mobile and shipping today. If you need a TS-to-native compiler in your hands now, Perry is the choice. If you're on React Native and willing to track a research project, watch Static Hermes.