• 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 98 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.0% 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-lint154 rules (51 type-aware) matching 15,495 of 15,517 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
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)959 of 989 packages with no false errors; 56 files in 30 packages get grammar errors that Node and tsc don't report (TS1313, TS1108, TS1052)ecosystem/STATUS.md, commit ea41eac
Print, then parse againTypeScript's tests/cases17,740 files ok, 0 mismatches (1,472 skipped: syntax errors)ts_r_codegen/AGENTS.md, commit ea41eac
tsconfig loadingtsc 7.0.2 --showConfig and config diagnostics on the five public bench repos (114 tsconfig files)114 of 114 --showConfig outputs match; 111 of 114 with the same diagnostics (3 differ in a message's text)ts_r_config/AGENTS.md, commit ea41eac
Module resolutiontsc 7.0.2 --traceResolution on the five public bench repos (114 configs)158,174 resolutions, 10 mismatches (one require of vitest, in two tRPC configs)ts_r_resolver/AGENTS.md, commit ea41eac
JavaScript emittsc 7.0.2's emit baselines (below ES2022, outFile, AMD/System/UMD and syntax errors skipped)1,673 match, 61 differts_r_transform/AGENTS.md, commit 493fc13
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.0% exact (all diagnostics and chains); 191 variants with a diagnostic tsc does not report, 10 of them in tests where tsc reports nothingts_r_checker/AGENTS.md, commit 9b5f8f2
Type checkertsc 7.0.2 on six public projects: tRPC, date-fns, TypeORM, Playwright, RxJS and the React Compiler3 of 6 match exactly (tRPC, date-fns, TypeORM); Playwright 2 extra; RxJS 6 extra and 5 missing of 21,908; React Compiler 71 extra, 0 missing of 156bench/README.md, commit ea41eac
Lint rulesevery case of the published ESLint and typescript-eslint rule tests (154 rules, 51 type-aware)15,495 of 15,517 cases match (8,597 of 8,597 without types; 6,898 of 6,920 type-aware)ts_r_lint/AGENTS.md, commit 087afc9
Lint on a real projectESLint on TypeORM without type information (ts-r-lint --no-type-check), every configured rule, 2026-10-162,174 of ESLint's 7,392 problems match, 2 only ts-r-lint; most of the 5,218 missed (4,928) come from jsdoc plugin rules ts-r-lint doesn't havebench/README.md
Bundleresbuild 0.28.2's end-to-end bundler tests832 of 872 compared cases pass (95.4%); 198 skippedesbuild-oracle/README.md, commit 07d2cdd
Dev serverVite 8.3.4's playground e2e specs, run in headless Chrome against both servers (tests that pass on Vite are compared)274 of 322 compared tests pass (85.1%); 77 skippeddev-oracle/README.md, commit e07eafa
Runnertsx 4.23.15's own test suite, run with ts-r-run in place of tsx98 of 100 compared cases pass (98.0%); 35 skippedrun-oracle/README.md, commit 23aedd7
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)795 of 2549 compared tests pass (31.2%); 4050 of 9094 queries agreelsp-oracle/README.md, commit 4eda074
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-24 at commit ea41eac over the top 1000 npm packages (776 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
parse9593001197.0%
transform4800952100.0%
bundle9150085100.0%
check65257029192.0%
tests22099650.0%
StageItems comparedItems failing
parse3910156
transform11560
bundle12170
check1460121
tests42

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

Top 10 failure causes (all extra causes are diagnostics ts-r reports and tsc doesn't):

#StageCausePackagesItemsOwner
1parseTS1313: The body of an '…' statement cannot be the empty statement.2549ts_r_parser
2checkextra TS2536: Type '…' cannot be used to index type '…'.2121ts_r_checker
3checkextra TS2716: Type parameter '…' has a circular default.1818ts_r_checker
4checkextra TS2344: Type '…' does not satisfy the constraint '…'.1326ts_r_checker
5checkextra TS2739: Type '…' is missing the following properties from type '…': RuleOptions, MessageId…710ts_r_checker
6checkextra TS2417: Class static side '…' incorrectly extends base class static side '…'.420ts_r_checker
7parseTS1108: A '…' statement can only be used within a function body.35ts_r_parser
8checkextra TS2322: Type '…' is not assignable to type '…'.22ts_r_checker
9checkextra TS2415: Class '…' incorrectly extends base class '…'.22ts_r_checker
10parseTS1052: A '…' accessor parameter cannot have an initializer.22ts_r_parser

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.