Bun 1.4.3 adds bun check, a faster TypeScript type checker
Bun 1.4.3 adds bun check, a built-in TypeScript type checker that Bun says runs 3x to 6.4x faster than tsc 7.0.2 and passes all 51,210 conformance tests.
5 min read

By the numbers
- of 51,210 TypeScript 7.0.2 conformance tests passed
- 51,210
- less memory than tsc 7.0.2, per Bun
- 2.2x-4.9x
- less CPU use while a server sits idle
- 67-89%
- Next.js packages/next
- 6.4x
- mikro-orm
- 5x
- VS Code src
- 4.8x
- Playwright
- 4.2x
- Storybook scripts
- 3.5x
- Next.js root
- 3.1x
- Nuxt
- 3x
Bun 1.4.3 was released on October 10, 2026, and it adds bun check, a TypeScript type checker built into the runtime. Bun says it runs 3x to 6.4x faster than tsc 7.0.2, Microsoft's own checker, while using 2.2x to 4.9x less memory. A type checker reads your code and reports type errors without running it. For large projects, that check is often one of the slowest steps in a CI pipeline, the automated build that runs on every pull request.
Bun is a JavaScript runtime that also bundles a package manager, a bundler and a test runner. The 1.4 line is the version that moved Bun's code from Zig to Rust in August.
What bun check does
According to the Bun 1.4.3 release post, bun check is a port of typescript-go. That is the Go-based TypeScript 7 compiler, which ships as tsc 7. Bun's documentation says the command reads tsconfig.json, reports the same errors as tsc from TypeScript 7 and uses every CPU core.
It only checks. It never writes JavaScript, .d.ts type files, source maps or .tsbuildinfo files. It also has no language server, so your editor keeps running its own copy of TypeScript. The command exits with code 1 when it finds an error and 0 when it finds none.
Bun reports two accuracy tests:
- It passes 51,210 of 51,210 tests in TypeScript 7.0.2's conformance suite.
- Across 72 open-source projects, 1,102 of 1,103 configurations gave identical results. Bun compared 286,267 errors and found one mismatch, in vuejs/core.
The same check also runs inside other commands. bun --check, bun test --check, bun build --check and bun run --check type-check first and then do their normal job.
Bun's benchmark numbers
Bun ran its comparison on a 16-core Apple silicon Mac against tsc 7.0.2:
| Project | Files | bun check | tsc 7.0.2 | Speedup |
|---|---|---|---|---|
| VS Code src | 9,795 | 1.24 s | 5.98 s | 4.8x |
| mikro-orm | 2,883 | 1.20 s | 5.97 s | 5.0x |
| Next.js packages/next | 2,881 | 0.28 s | 1.82 s | 6.4x |
| Next.js root | 3,547 | 0.42 s | 1.28 s | 3.1x |
| Storybook scripts | 1,039 | 0.27 s | 0.96 s | 3.5x |
| Nuxt | 839 | 0.27 s | 0.80 s | 3.0x |
| Playwright | 706 | 0.15 s | 0.64 s | 4.2x |
Memory use fell too. On the VS Code source, Bun measured 2.14 GB for bun check against 7.97 GB for tsc 7.0.2. The post is not fully consistent about the top of the range. Its text says "3x to 6.4x faster," while the alt text on its chart says 3x to 7x.
An outside benchmark
An independent project offers a second set of numbers. tsrs is a Rust port of the TypeScript 7 checker by developer Max Schwenk. Its README says it was "written largely by AI coding agents, directed and reviewed by Max Schwenk." It competes with bun check, so its claims deserve the same caution as Bun's.
On the VS Code codebase, run on a 64-core Linux machine, tsrs reports these times:
| Checker | Time | Peak memory |
|---|---|---|
| tsc 7 (tsgo 7.0.2) | 9.79 s | 7.52 GiB |
| bun check (Bun 1.4.3 canary) | 0.87 s | 2.86 GiB |
| tsrs | 0.53 s | 2.64 GiB |
The tsrs README adds an important caveat. By default, tsgo uses 4 checker threads, while bun check uses every core. When tsrs gave all three tools 16 threads on VS Code, tsgo took 4.54 s and bun check took 1.49 s. The gap is real, but it is smaller than default settings suggest.
The rest of the release
Bun 1.4.3 also changes the runtime itself:
- Idle CPU. Servers use 67% to 89% less CPU while they sit idle. Bun traced the waste to a one-second garbage-collection timer that stayed on. Over two idle minutes, an Express server dropped from 282 to 57 CPU milliseconds.
- Bun.FetchSession. A new API gives a group of requests its own TLS, proxy and keep-alive settings and its own connection pool.
- Bun.ModuleGraph. An experimental API runs many copies of one app in one process. The post warns that
graph.dispose()"is not a security sandbox." - node:http. Large responses are up to 2.7x faster.
- bun install. It now skips tarballs it will not install. Installing npm@10.9.2 went from 196 tarballs to 1.
- Security. The release fixes CVE-2026-48618 in TLS host name matching. It also rate-limits HTTP/2 stream resets for CVE-2023-44487 and CVE-2025-8671.
What this means for developers
For most projects, the swap is one line. Bun's docs map tsc --noEmit to bun check and tsc -b to bun check -b. Run bun upgrade first, then time both commands on your own repository. Hardware, thread count and project shape all move the result.
Check five things before you change CI:
- Keep tsc if you publish types.
bun checknever writes.d.tsfiles, so library authors still needtscfor that step. - Look for blocked options. The check stops on older settings, including
moduleResolution: node10,baseUrl,target: es5andoutFile. - Yarn PnP is not supported. Set
nodeLinker: node-modulesif you use Yarn. - Watch for a script named check. If
package.jsondefines acheckscript,bun checkruns that script instead. Usebun --checkin that case. - Pin threads on shared runners. The docs suggest
--threads 4on shared CI machines.
Your editor may still disagree with bun check, because it runs its own TypeScript. The docs suggest installing the matching version with bun add -d typescript@$(bun -p process.versions.typescript).
TypeScript tooling keeps moving to native code. Microsoft ported the checker to Go, Bun ported that port, and tsrs ports it again to Rust. Last month, tsgolint brought type-aware lint rules to Go as well. Teams that type-check on every commit now have several fast checkers to measure against each other on their own code.
Sources
- Bun v1.4.3 - Bun Blog
- tsrs: Rust port of the TypeScript 7 type checker - GitHub
- Type checking - Bun Docs
Related articles

Zod 4.6.6 malware alarm: the bad commit never reached npm
Zod 4.6.6 shipped October 11 with malicious September 21 commits in its history. They were reverted that day, and none of them reached npm.

Deno joins Cloudflare; Deno Deploy shuts in six months
The Deno team is joining Cloudflare. Deno Deploy shuts down in six months, the runtime gets a final year of monthly fixes, and JSR moves to Cloudflare.

MALFEX npm malware ran undetected for 14 months
MALFEX, a one-person npm malware campaign, published 12 packages since 2023 and drew 40,767 downloads. Some packages are still live with no advisory.
The weekly digest
One email every Friday with the week's top stories from all six desks: AI, dev tools, coding, the tech industry, startups and what's next. Free, no spam.