• 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+; output matches tsc 7 on 339 of 339 private-app filesOnly the entry's tsconfig is used; Windows untested
ts-r-devHot reload, Vite's import.meta.hot API, React Fast Refresh, dependency pre-bundlingNo vite.config, no HTTPS, no --open
ts-r-buildesbuild's CLI flags, ESM/CJS/IIFE, splitting, minify, source maps, --watchNo plugins, no CSS bundling, no lowering below ES2022
ts-r-checktsc's codes and messages; 66.1% of conformance tests exact; all 25 private-app projects matchJSX types, some inference; never writes output
ts-r-lint103 rules matching ESLint's own tests; ESLint flat config, oxlint and Biome configsNo type-aware rules; plugins other than typescript-eslint unsupported
ts-r-lspShared server per workspace; lint; our checker or your TypeScript as the type backend587 MB with every file open against a 500 MB target; most projects fall back to tsserver for diagnostics

Conformance

AreaCompared againstResultSource
Parserprivate-app including node_modules: 12,711 files, 214.6 MB0 files with false errorsts_r_parser/AGENTS.md
Print, then parse againTypeScript's tests/cases18,079 files ok, 0 mismatches (1,133 skipped: syntax errors)ts_r_codegen/AGENTS.md, commit f3c5476
tsconfig loadingtsc --showConfig on private-app49 of 49 configs matchcommit 856e43d
Module resolutiontsc --traceResolution, 24 private-app configs63,958 resolutions, 0 mismatchests_r_resolver/AGENTS.md
JavaScript emittsc 7.0.2 on private-app apps and packages (15 tsconfigs)339 of 339 files matchts_r_transform/AGENTS.md
JavaScript emittsc 7.0.2's emit baselines (below ES2022, outFile, AMD/System/UMD and syntax errors skipped)1,672 match, 100 differts_r_transform/AGENTS.md, commit 61da9b4
Binder diagnosticstsc 7.0.2 baselines for the binder's codes (12,783 variants)399 of 445 tests exact; 1,684 of 1,792 diagnostics foundts_r_binder/AGENTS.md
Type checkertsc 7.0.2 conformance baselines, 12,769 compared test variants66.1% exact (all diagnostics and chains); 1,698 variants with a diagnostic tsc does not report, 320 of them in tests where tsc reports nothingts_r_checker/AGENTS.md, commit 6b15792
Type checkertsc 7.0.2 on all 25 private-app tsconfig projects25 of 25 projects match exactly; 0 missing, 0 extrats_r_checker/AGENTS.md, commit ecb5f21
Editor parity checktsc 6.0.3 on 24 private-app projects2 of 24 projects match (22 fall back to tsserver); 3,530 of 3,844 diagnostics same code and positionts_r_lsp/AGENTS.md, commit 59268bf
Lint rulesevery case of the published ESLint and typescript-eslint rule tests (103 rules)8,597 of 8,597 cases matchdesign/0006-lint.md
Lint on a real projectESLint with every ts-r-lint rule on private-app (690 files)1,458 match, 0 missed, 0 extradesign/0006-lint.md
Bundleresbuild 0.28.2's end-to-end bundler tests651 of 746 compared cases pass (87.3%); 324 skippedesbuild-oracle/README.md, commit 292b5bc

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-14 at commit cfbbe41 over the top 1000 npm packages (546 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
parse988101199.9%
transform426095287.5%
bundle8447108592.2%
check550159029177.6%
tests0409960.0%
StageItems comparedItems failing
parse391011
transform11566
bundle121777
check83397540
tests44

Bundle size versus esbuild (minified): 909 packages with both bundles: ts-r-build 102531.6 KiB total, esbuild 99466.0 KiB (+3.1%). Median ratio 1.048; 132 of 909 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
1checkextra TS2344: Type '…' does not satisfy the constraint '…'.1242866ts_r_checker
2checkextra TS2305: Module '…' has no exported member '…'.56503ts_r_checker
3bundleminified: runtime error: SyntaxError: Unexpected string5560ts_r_bundler
4checkextra TS2694: Namespace '…' has no exported member '…'.333483ts_r_checker
5checkextra TS2304: Cannot find name '…'.19101ts_r_checker
6checkextra TS2339: Property '…' does not exist on type '…'.1089ts_r_checker
7bundleminified: runtime error: SyntaxError: Identifier '…' has already been declared1011ts_r_minify
8checkextra TS7006: Parameter '…' implicitly has an '…' type.66ts_r_checker
9checkextra TS2300: Duplicate identifier '…'.532ts_r_checker
10bundleruntime error: Error: Cannot find module '…'55ts_r_bundler

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. Nothing is released yet; see Getting started.