• 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.5% 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-lint650 rules (51 type-aware) matching 73,072 of 73,093 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 (48 eslint-plugin-jsdoc, 352 eslint-plugin-unicorn and 21 eslint-plugin-import 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,723 match, 4 differts_r_transform/AGENTS.md, commit 925a4a0
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.5% exact (all diagnostics and chains); 150 variants with a diagnostic tsc does not report, 5 of them in tests where tsc reports nothingts_r_checker/AGENTS.md, commit d5a9934
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, eslint-plugin-unicorn and eslint-plugin-import tests for its rules (650 rules, 51 type-aware)73,072 of 73,093 cases match (66,170 of 66,173 without types; 6,902 of 6,920 type-aware)ts_r_lint/AGENTS.md, commit c6bcae5
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 tests1,002 of 1,028 compared cases pass (97.5%); 42 skippedesbuild-oracle/README.md, commit c0449fb
Dev serverVite 8.3.4's playground e2e specs, run in headless Chrome against both servers (tests that pass on Vite are compared)512 of 512 compared tests pass (100.0%); 97 skippeddev-oracle/README.md, commit c0449fb
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)1967 of 2516 compared tests pass (78.2%); 7761 of 8968 queries agreelsp-oracle/README.md, commit 5628954
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.