• Alpha

Compatibility and status

What ts-r matches today against tsc 7, esbuild and ESLint, and how the top 1,000 npm packages fare. Generated from ecosystem/STATUS.md and the crates' notes.

ts-r measures correctness against the tools it replaces: tsc 7.0.2 for parsing, resolution, emit and type errors, esbuild 0.28.2 for bundling, and ESLint with typescript-eslint for lint. This page is generated when the site is built. The ecosystem section comes from ecosystem/STATUS.md, and the conformance table from numbers recorded in the crates' AGENTS.md files and design records (the build fails if a quoted number disappears from its source, so the table can't silently go stale).

Summary

ToolWorks todayMain gaps
ts-r-runRuns TypeScript on Node 22.15+; passes 100 of 100 compared tests of tsx's own suite and 36 of 36 of Node's type-stripping testsOnly the entry's tsconfig is used; Windows untested
ts-r-devHot reload, Vite's import.meta.hot API, React Fast Refresh, dependency pre-bundlingNo CSS preprocessors; some vite.config options and plugin APIs; HTTP/1.1 only
ts-r-buildesbuild's CLI flags, ESM/CJS/IIFE, splitting, minify, source maps, --watchNo plugins, no CSS bundling, lowering down to ES2015 (not ES5)
ts-r-checktsc's codes and messages; 97.3% of conformance tests exact; 3 of 6 public bench projects match exactlyNo "Did you mean" suggestions on regular expression errors (TS1369); some inference and narrowing; emits like tsc unless --noEmit
ts-r-lint292 rules (51 type-aware) matching 25,042 of 25,060 of ESLint's own tests; ESLint flat config, oxlint and Biome configsType-aware rules only where ts-r-check matches your tsc; plugins other than typescript-eslint unsupported (40 eslint-plugin-jsdoc and 23 eslint-plugin-unicorn rules aside)
ts-r-lspShared server per workspace; lint; our checker or your TypeScript as the type backendSlower than TypeScript 7's LSP to first diagnostics; most projects fall back to your TypeScript for diagnostics

Conformance

AreaCompared againstResultSource
Parserevery JavaScript and TypeScript file of the top 1,000 npm packages (39,101 files in 989 packages)989 of 989 packages with no false errors: the parser reports no grammar error that Node and tsc don'tecosystem/STATUS.md, commit 865f781
Print, then parse againTypeScript's tests/cases17,741 files ok, 0 mismatches (1,471 skipped: syntax errors)ts_r_codegen/AGENTS.md, commit 773fed9
tsconfig loadingtsc 7.0.2 --showConfig and config diagnostics on the five public bench repos (114 tsconfig files)114 of 114 --showConfig outputs match; 114 of 114 with the same diagnosticsts_r_config/AGENTS.md, commit b5938d0
Module resolutiontsc 7.0.2 --traceResolution on the five public bench repos (114 configs)158,174 resolutions, 0 mismatchests_r_resolver/AGENTS.md, commit d5e3943
JavaScript emittsc 7.0.2's emit baselines (below ES2022, outFile, AMD/System/UMD and syntax errors skipped)1,718 match, 9 differts_r_transform/AGENTS.md, commit f9c47aa
Binder diagnosticstsc 7.0.2 baselines for the binder's codes (12,783 variants)418 of 464 tests exact; 1,720 of 1,839 diagnostics foundts_r_binder/AGENTS.md, commit 4224610
Type checkertsc 7.0.2 conformance baselines, 12,750 compared test variants97.3% exact (all diagnostics and chains); 173 variants with a diagnostic tsc does not report, 6 of them in tests where tsc reports nothingts_r_checker/AGENTS.md, commit fb99a81
Type checkertsc 7.0.2 on six public projects: tRPC, date-fns, TypeORM, Playwright, RxJS and the React Compiler4 of 6 match exactly (tRPC, date-fns, TypeORM, Playwright); RxJS 0 extra and 5 missing of 21,908; React Compiler 71 extra, 0 missing of 156bench/README.md, commit 687b025
Lint rulesevery case of the published ESLint, typescript-eslint, eslint-plugin-jsdoc and eslint-plugin-unicorn tests for its rules (292 rules, 51 type-aware)25,042 of 25,060 cases match (18,140 of 18,140 without types; 6,902 of 6,920 type-aware)ts_r_lint/AGENTS.md, commit fb99a81
Lint on a real projectESLint on TypeORM without type information (ts-r-lint --no-type-check), every configured rule, 2026-10-267,378 of ESLint's 7,750 problems match, 0 only ts-r-lint; all 372 missed come from type-aware rules, which --no-type-check does not runbench/README.md, commit 63808e8
Bundleresbuild 0.28.2's end-to-end bundler tests858 of 885 compared cases pass (96.9%); 185 skippedesbuild-oracle/README.md, commit 8a3356f
Dev serverVite 8.3.4's playground e2e specs, run in headless Chrome against both servers (tests that pass on Vite are compared)322 of 322 compared tests pass (100.0%); 77 skippeddev-oracle/README.md, commit 2bd07f1
Runnertsx 4.23.15's own test suite, run with ts-r-run in place of tsx100 of 100 compared cases pass (100%); 35 skippedrun-oracle/README.md, commit 30863e8
RunnerNode 24.21.0's TypeScript (type stripping) tests36 of 36 compared cases pass (100%); 53 skippedrun-oracle/README.md, commit 23aedd7
Editor featurestsc 7.0.2 --lsp on TypeScript's fourslash tests (hover, completion, definition, references, rename, signature help, highlights)1706 of 2517 compared tests pass (67.8%); 6940 of 8972 queries agreelsp-oracle/README.md, commit 1960c24
Launcherthe standalone ts-r-<tool> binaries (ts-r <tool> args vs ts-r-<tool> args)37 of 37 passthrough cases and 13 of 13 launcher cases passcli-oracle/README.md, commit 8c14f29

Ecosystem: the top 1,000 npm packages

cargo xtask ecosystem downloads the most-downloaded npm packages and runs each stage that applies: parse every file, transform TypeScript sources, bundle the package and run it, check its .d.ts files against tsc 7, and run its own test suite with tsc, tsx, ts-node and esbuild swapped for ts-r. See ecosystem/README.md for how each stage compares.

Run on 2026-10-26 at commit 7076732 over the top 1000 npm packages (633 s). Reference tools: esbuild 0.28.2, node v24.21.0, tsc 7.0.2.. Pass rate = pass / (pass + fail + error); skips have nothing to compare.

StagePassFailErrorSkipPass rate
parse9890011100.0%
transform4800952100.0%
bundle9150085100.0%
check70900291100.0%
tests400996100.0%
StageItems comparedItems failing
parse391010
transform11560
bundle12170
check13840
tests40

Bundle size versus esbuild (minified): 914 packages with both bundles: ts-r-build 98041.1 KiB total, esbuild 101020.8 KiB (-2.9%). Median ratio 0.993; 641 of 914 packages are the same size or smaller. Worst ratios:

No package fails any stage, so there are no failure causes.

The full list of failing packages and a repro for each top cause are in ecosystem/STATUS.md.

What "works today" means

A feature is listed as working when it runs from source on a branch that passed its gates (cargo test, cargo clippy -D warnings, cargo xtask agents-check) and its numbers are recorded in the repo. Alpha releases are on npm under the next dist-tag; see Getting started.