Back to comparisons
TS-to-native compiler

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

FeaturePerryStatic Hermes
StatusPre-1.0 (alpha) — production-trackResearch / experimental
Install path (macOS arm64)Homebrew, APT, npm (@perryts/perry)Not packaged for clean install at time of writing (per perry/benchmarks)
BackendLLVMCustom (Hermes-based codegen)
InputTypeScript (full)Typed JS/TS subset
Compilation targets10: macOS, iOS, iPadOS, Android, Linux, Windows, watchOS, tvOS, WASM, Web/JSPrimarily mobile (React Native context)
Native UI25+ widgets via AppKit, UIKit, GTK4, Win32, JNIVia React Native bridge (when integrated)
Standalone CLI app workflowYes — `perry compile main.ts` produces a binaryTied to React Native context
Public benchmark suiteYes — RUNS=11 against Node, Bun, Rust, C++, Go, Swift, JavaInternal / 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.

Try Perry

Compile your TypeScript to native today.

Get started