ReScript is a strongly typed programming language that compiles to clean, efficient, human-readable JavaScript. It provides a sound static type system derived from OCaml but refined for JavaScript usage, two-way interoperability with the JavaScript ecosystem (including automatic TypeScript type generation), and first-class React support with JSX, distributed through npm as the rescript package.
The toolchain centers on what the project describes as the fastest build system on the web, a builtin pretty printer, memory-friendly VSCode and Vim plugins, and a stable compiler requiring minimal configuration. ReScript 12 (November 2025) added a rewritten build system, a modular runtime, unified operators, dictionary literals with pattern matching, JSX preserve mode, regex literals, and ESM-first platform-specific binaries; version 12.3.1 shipped in August 2026.
ReScript's type system is sound — the compiler guarantees types are never wrong at runtime — contrasting with TypeScript's unsound, best-effort static checking, and its OCaml-based compiler is among the fastest in the JavaScript ecosystem, avoiding long production build times. Generated output is clean JavaScript that rivals hand-written code, so teams can adopt gradually and even walk away without lock-in by keeping the compiled output.
The language keeps developers inside the familiar JavaScript ecosystem: it consumes any JavaScript library, exports ReScript libraries back to JavaScript, and automatically generates TypeScript type definitions, with first-class JSX and React bindings used in production worldwide. Industrial users listed on the official site include companies such as Juspay, Draftbit, Greenlabs, Band Protocol, Envio, and Tiny.
ReScript carries a small-community risk: it is maintained by a handful of core contributors and a non-profit association funded by industrial partners and donors rather than a large corporation, and independent coverage notes that community discussion around major releases has been limited. Its syntax and standard library diverge from both JavaScript and OCaml, so newcomers face a learning curve and a smaller hiring pool.
Interoperability cuts both ways: while ReScript compiles to readable JavaScript, major version transitions impose real migration work — ReScript 12 removed JSX v3, moved the runtime into @rescript/runtime, renamed Exn-suffixed APIs, and deprecated OCaml-compatibility helpers, requiring teams to budget migration time. Ecosystem breadth (libraries, Stack Overflow coverage, third-party tooling) remains far smaller than TypeScript's.