Perry is a native TypeScript/JavaScript compiler written in Rust that compiles TypeScript and JavaScript directly to machine-code executables for multiple platforms including macOS, Windows, Linux, iOS, Android, watchOS, and TV.
The problem Perry solves is the overhead inherent in shipping TypeScript and JavaScript applications. Traditionally, deploying TypeScript means bundling a JavaScript engine—whether Node.js on servers, an embedded runtime in CLIs, or a browser engine in desktop applications. Perry eliminates this by using SWC to parse code and LLVM to compile it to native machine code, producing self-contained binaries with instant cold starts, minimal file sizes, and genuine multithreading without a runtime layer. The same codebase can also target the web as JavaScript or WebAssembly.
Developers should consider Perry if they want to ship TypeScript as native applications without runtime overhead. It suits projects targeting mobile platforms, desktop applications, command-line tools, or any scenario where binary size, startup time, or native UI integration matters. The tool is particularly valuable for teams already writing TypeScript who want to reach iOS, Android, and watchOS from a single codebase—capabilities that Node.js, Bun, and Electron do not offer. Perry's ahead-of-time compilation model delivers performance characteristics that can match or exceed native Rust on compute-intensive workloads while using substantially less memory than JavaScript runtimes.
The project maintains active development with regular updates to its compiler infrastructure and platform support. Documentation is comprehensive with examples and a showcase of applications built with the tool. The maintainers continue expanding native UI capabilities across platforms and refining the compilation pipeline to improve both binary size and runtime performance.