Bun 1.4.3 was released on October 10. It adds bun check, a type checker ported from typescript-go that Bun says reads tsconfig.json and reports the same errors as tsc.
Adding --check to run, test or build stops execution, testing or output when there is a type error. The checker itself emits no JavaScript or .d.ts files and has no language server, so editors keep using TypeScript.
Bun reports it is 3x to 6.4x faster than tsc 7.0.2 on a 16-core Apple silicon Mac. That is a vendor measurement.
Coverage of file-level --check versus a project check
The docs map a two-step setup such as tsc --noEmit && bun src/index.ts to a single bun --check src/index.ts. The gap between checking and running collapses into one command.
The coverage differs, though. bun check with no arguments checks the files selected by files, include and exclude in tsconfig.json, while --check on a file checks only that file and what it statically imports.
--check does not cover workers (new Worker), import() with a computed name, require() in a TypeScript file, processes the code starts or files loaded first through preload. bun check covers them if tsconfig.json includes them.
If package.json has a check script, bun check runs that script, and bun --check selects the built-in checker.
What a passing command actually checked
An entry point can pass while a separately launched worker still holds a type error. The entry check is useful, but it is not evidence that the worker was checked.
This is a coverage question before it is a speed question. Naming which invocation owns each source subtree, generated type dependency and separately launched process exposes the gaps.
100% conformance and the published mismatches
The release says bun check passes all 51,210 tests in TypeScript 7.0.2’s conformance suite.
It also publishes 1 mismatch across 72 deliberately misconfigured open-source projects, 12 in a rerun with strict off and 191 in offline fuzzing.
That is evidence of substantial compatibility work, not proof of identical diagnostics for every program. This article did not rerun any checker benchmark or compatibility suite.
Commands for comparing diagnostics on the same revision
A realistic trial keeps the existing whole-project CI check and adds --check only to a chosen development command. The docs and release notes give these commands.
bun check
bun --check src/index.ts
bun test --check
bun build --check ./src/index.ts --outdir outThe release notes also give a procedure for comparing tsc and bun check output on the same project.
bunx -p typescript@7.0.2 tsc --noEmit --pretty false > tsc.txt
bun check --no-pretty > bun.txt
diff tsc.txt bun.txtThe next step appears to be adding a deliberate type error on a disposable branch and confirming that the command stops, including for a separately loaded file. This is a proposed check, not a result obtained here.
Check script naming across mixed Bun versions
The docs warn that an older Bun without the type checker runs a "check": "bun check" script again and again without end. If not everyone has upgraded, the docs suggest naming the script typecheck.
Declaration-file generation remains tsc’s job, and editors keep running their own TypeScript.
The value of --check is that it stops the chosen execution path earlier, while coverage outside that path still rests on a whole-project check.
