All news
productsaas

Vercel Labs' scriptc Compiles TypeScript to Native Binaries

28 Jul 2026

What happened

Vercel Labs has introduced scriptc, a TypeScript-to-native compiler that produces small, fast native executables without embedding Node, V8, or a JavaScript engine inside the binary. According to the report, the tool is installed via npm (npm install -g scriptc) and requires clang, which comes preinstalled with Xcode Command Line Tools.

The pitch is compatibility-first: documentation states that no code changes, annotations, or special dialect are needed. The same TypeScript that runs on Node is type-checked by the real TypeScript compiler and then compiled directly to a native binary.

The numbers

  • An example fib.ts file compiles to a self-contained native binary of approximately 178K.
  • That binary starts up in roughly 2 milliseconds.
  • In a coverage analysis example, scriptc statically compiled 4,451 of 4,481 statements (99%).
  • For the remaining statements, scriptc embeds quickjs-ng, a JavaScript engine that is approximately 620KB in size.
  • The project ships with a differential testing corpus of over 800 tests.

How it works

The timeline described in the report is straightforward: TypeScript source is type-checked by the standard TypeScript compiler, then compiled into a native binary. In benchmark examples, the vast majority of statements (99%) were compiled statically, with the small remainder handled separately — apparently via the embedded quickjs-ng engine.

macOS arm64 is the primary supported platform. Linux and Windows binaries are produced via cross-compilation, which the report flags as a potential risk: cross-compiled targets may be less mature or less tested than the native macOS arm64 path.

Open questions

Several gaps remain unaddressed in the current documentation, per the report:

  • It's unclear how the ~620KB quickjs-ng engine squares with the claim of "no JavaScript engine in the binary" — this may mean the claim applies fully only to statically-compiled programs, with quickjs-ng handling edge cases.
  • No release date, versioning, or roadmap information is available.
  • There are no published performance comparisons against other TypeScript compilation or bundling tools, such as Bun or Deno compile.
  • Licensing and long-term maintenance commitments are not specified.
  • It's not documented which TypeScript language features or Node APIs fall outside static compilation support.

Why founders should care

For founders building CLI tools, embedded systems, or latency-sensitive serverless functions, scriptc's small binary size and near-instant startup could plausibly make TypeScript more competitive with lighter-weight languages in these contexts — though this remains unproven at scale beyond the example benchmarks shown.

The claim that existing TypeScript code requires no modification is likely to lower switching costs for teams already invested in the language, assuming it holds up against real-world, more complex codebases than the report's examples. The 99% static compilation rate is encouraging, but the dependency on quickjs-ng for the remaining 1% suggests that the practical performance benefit may vary depending on how much of a given codebase falls into that non-statically-compiled category.

Teams considering scriptc for Linux or Windows deployment should likely validate stability on those platforms first, given that support there currently relies on cross-compilation from a macOS-first toolchain — a setup that may carry more edge-case risk than the primary target platform.

The bottom line

scriptc represents an early-stage attempt to bring native-binary performance to TypeScript without sacrificing compatibility with existing code. The benchmarks reported are promising, but the absence of comparative performance data, versioning details, and clarity on unsupported language features means founders should treat this as a tool to watch and test carefully rather than one ready for unqualified production reliance.

Sources