Native Rewrites Spread Through JavaScript Tooling, With Reporting Pointing to Speed Gains and Trade-offs in Binary Size and Compatibility
Reporting on TypeScript 7, Vite 8, pnpm 12 and a Rust React Compiler shows native rewrites with large reported speedups, mostly from project benchmarks, and costs in size and compatibility.
Editor's Note ·
- Clarification:
- The article states that 'Socket added that a Rust-based plugin outperforms Babel but remains up to 50% slower than direct Oxc integration because of data passing and AST cloning overhead.' Socket's post attributes this to Evan You's argument ('Evan You argued that React Compiler exposes a performance tradeoff in Oxc'); it is a maintainer's claim reported by Socket, not a measurement by Socket.
Background
Over 2026, several widely used JavaScript and TypeScript tools have moved their core implementations to native languages. This analysis compares reporting on four of them (the Herald’s own count): the TypeScript compiler, the Vite bundler, the pnpm package manager and the React Compiler. It separates what the sources report from what follows from them.
In March, The Register reported that Vite 8.0 uses the Rust-built Rolldown as its single bundler, replacing both esbuild and Rollup. According to the same article, Rolldown is intended to be compatible with existing plugins because it supports the same plugin API, although the Rolldown project itself still had release-candidate status at the time. The outlet also listed Turbopack and Rspack as other build tools rewritten in Rust, and said the TypeScript project was turning to native code, written in Go, for the compiler in the forthcoming TypeScript 7.0. The Herald covered the release in an earlier article.
In July, The Register reported that TypeScript 7.0 is the first stable release to include the Go-based compiler. It quoted Microsoft Principal Product Manager Daniel Rosenwasser: “TypeScript 7 brings native code speed, shared memory multithreading, and a number of new optimizations that typically yield speedups between 8x and 12x on full builds.” The same article quoted Anders Hejlsberg as saying the team “quickly realized we could get 10x, half of it from being native code, and the other half from being able to take advantage of shared memory concurrency.” In Microsoft benchmarks cited by the outlet, compiling VS Code took TypeScript 6 125 seconds and TypeScript 7 10.6 seconds. The release was also covered in an earlier Herald article.
Current situation
Package management. InfoQ reported on September 3 that pnpm 12 replaces its TypeScript and Node.js implementation with a Rust rewrite while retaining pnpm 11’s commands, flags, settings, lockfile format and node_modules layout. In pnpm’s own benchmarks, as described by InfoQ, a warm repeated install fell from 472 milliseconds to 15 milliseconds, and a clean install of a file-heavy fixture fell from 8.2 seconds to 5 seconds. InfoQ also relayed testing by Socket on a 21-project Vercel Turborepo workspace of 1,670 packages, which recorded median install-time reductions of 64.4% to 90.5%. In the same testing, the larger native Corepack artifact made first uncached startup 11.1% slower, while cached startup was 74.7% faster. The Herald covered the release earlier.
Compilers in the bundler. InfoQ reported in July that a Rust port of the React Compiler was merged into React’s main repository, with the pull request describing it as “an experimental, work-in-progress port.” According to InfoQ, the port runs around 3x faster than the TypeScript original as a drop-in Babel plugin, and Vercel engineer Andrew Imm reported over 40% faster compilation on v0 when the compiler was linked directly into Turbopack. The official Next.js account, InfoQ wrote, put the range at 20 to 50% faster route compilation across its test apps. An earlier Herald article covers the merge.
Costs surfaced in the same period. Socket, in an article dated June 26, reported that Rolldown and Vite withdrew their Rust React Compiler integration. Socket quoted maintainer Boshen as saying it increased the binary size from 28.7MB to 33.8MB, a 17% increase. Socket also reported Evan You’s objection that “Vite is framework agnostic, vendor agnostic, and we can’t go down that slippery slope,” and that other developers argued a roughly 5MB increase was a small cost for a development dependency. Socket added that a Rust-based plugin outperforms Babel but remains up to 50% slower than direct Oxc integration because of data passing and AST cloning overhead. InfoQ separately noted that Boshen said the team withdrew the integration to “de-slopify” it first, despite early results showing up to a 2x improvement.
Compatibility changes. InfoQ’s pnpm 12 report said teams should review the compatibility guide. It identified the most likely CI-breaking change as the removal of pnpm install --resolution-only, replaced by pnpm peers check. It also said Git dependencies hosted on GitHub, GitLab or Bitbucket now resolve through canonical HTTPS URLs, and that unknown keys in pnpm-workspace.yaml are now reported instead of silently ignored. At launch, InfoQ wrote, the latest npm tag still pointed to pnpm 11.
Disagreement over the language itself. According to InfoQ, in a discussion covered by Socket, former npm CLI maintainer Darcy Clarke argued that keeping package managers in JavaScript makes shared internals easier to improve, while pnpm maintainer Zoltan Kochan responded: “It was faster to rewrite pnpm in Rust than to migrate to ESM.” The Register reported that the TypeScript team chose Go partly because its syntax most resembles JavaScript’s, and that the old JavaScript server code “will need to be maintained for several more years at least.” In its Vite 8 article, The Register described as an “awkward question” whether developers should reconsider an interpreted language for project code outside the browser if native tools bring such large gains.
Use of language models. InfoQ reported that the React Compiler port leaned heavily on large language models for mechanical work, with humans retained for architecture and review, and quoted a Hacker News commenter warning about the maintenance burden of such ports. That quote is reader commentary, not a finding.
Implications
The points below follow from the reporting above; they are not predictions.
Where the numbers come from. Most headline figures in these reports originate with the projects or their partners: Microsoft’s benchmarks for TypeScript 7, pnpm’s own benchmarks, and statements by a Vercel engineer and the Next.js account for the React Compiler. The pnpm 12 report is the one case in these sources where outside testing was cited, from Socket, and it covered one workspace. No source reviewed here compares the tools across several independent codebases.
Gains depend on the scenario. The pnpm figures differ sharply between warm and cold runs (472 milliseconds to 15 milliseconds in one benchmark, an 11.1% slower uncached start in another test). TypeScript’s reported speedup is described as “typically” 8x to 12x on full builds, and The Register noted the speedup applies to development time rather than deployment.
Costs move to other places. The reporting identifies several: larger native artifacts (the Corepack artifact for pnpm, the Rolldown and Oxc binaries), changed behaviors that can break CI (pnpm 12), and an integration-design question in Vite about which framework-specific code belongs in a framework-agnostic default binary. Socket also reported a proposal for compressed native addons that would reduce the Vite 8.1.0 addon on darwin-arm64 from 25.74MB to 8.15MB.
Compatibility strategy differs by project. pnpm kept its workflows and settings while swapping the engine; Rolldown, per The Register, supports the same plugin API as existing plugins; the React Compiler port keeps a Babel-like public API, which InfoQ said is intended to make upgrading a drop-in swap. Each reduces migration work for users but, as the pnpm changes show, does not remove it.
Language choice is not uniform. The sources describe Go for TypeScript and Rust for pnpm, Rolldown and the React Compiler. The Register wrote that Go was a surprise given Microsoft’s access to C# and the industry’s fondness for Rust, and quoted Hejlsberg describing Go as “the lowest level language we can get to that gives us full native-code support on all platforms.”
Open questions in the sources. The Clarke and Kochan exchange leaves unresolved whether contributor access to shared internals matters more than build speed; none of the cited reports measures contributor activity before and after a rewrite. The maintainability of LLM-assisted ports is raised only by commenters and by Boshen’s stated plan to “de-slopify” the integration, and no source reports a result.