On Oct 12 Bun merged PR #44805, adding native bun lint (1,021 built-in rules, reads ESLint and oxlint configs, type-aware rules included) and bun format/bun fmt (matches Prettier/oxfmt output across JS/TS/CSS/HTML/Vue/YAML/Markdown and more). On vscode's source, Bun reports a format check taking 2.9s of CPU time versus 295s for Prettier 3.9.9. It is in main and the docs, but not yet in the v1.4.3 stable release.

Key Takeaways

  • ✓bun lint ships 1,021 rules: 69,640 ESLint rule-test cases with 0 failures and 27,702 oxlint cases with 0 failures (PR #44805, vendor-reported)
  • ✓bun format on Prettier 3.9.9's tests/format: 9,728 pass, 5 fail; across 330 real repos it matches oxfmt 0.72 byte-for-byte in 95% of runs (227/240) and Prettier in 77% (57/74)
  • ✓vscode src/ (10,149 files, 8 cores): format check CPU time 2.9s for bun vs 5.5s oxfmt, 20s Biome 2.5, 295s Prettier 3.9.9; lint recommended 0.25s vs oxlint 0.51s wall
  • ✓With vscode's own ESLint config (8 plugins, 13,069 files): 15.8s vs ESLint 10's 404s, about 26x (earlier build, being re-measured); with heavy JS plugins the median gain is only 1.7x
  • ✓Cost: the linux-x64 binary grows from 85.18MB to 100.09MB (+14.91MB); the latest stable v1.4.3 (Oct 10) does not include it yet
🧭

Turn your technical choice into a development budget

Compare 40 dev plans & simulate token costs vs $20/mo subscriptions

🔬

In-Depth Technical Analysis

Bun merged PR #44805 on Oct 12, adding two native commands. bun lint implements 1,021 rules from ESLint, typescript-eslint, React, import, unicorn, jsx-a11y and more, reads existing ESLint or oxlint configs, runs type-aware rules without the typescript package, and supports --fix. bun format (alias bun fmt) reads Prettier or oxfmt configs and aims for byte-identical output across JS/TS/JSX, CSS/SCSS/Less, HTML, Vue, Angular, JSON, YAML, TOML, Markdown, MDX and GraphQL, and sorts imports, Tailwind classes and package.json. Both use every core, need no packages, and are configured in bunfig.toml; an existing lint or format script keeps its old meaning.

Vendor-reported results: 69,640 ESLint rule-test cases and 27,702 oxlint cases with zero failures; 9,728 of Prettier's format tests pass with 5 failures; across 330 real repositories, output matches oxfmt in 95% of runs and Prettier in 77%. On vscode's src (10,149 files), a format check takes 2.9s of CPU time versus 5.5s for oxfmt, 20s for Biome and 295s for Prettier 3.9.9; linting with vscode's own ESLint config took 15.8s versus 404s (measured on an earlier build). With heavy third-party JS plugins the median gain over ESLint drops to 1.7x, and the binary grows by about 15MB.

The commands are in main and documented at bun.com/docs/format and bun.com/docs/lint, but the latest stable release, v1.4.3, does not include them yet. Use bun fmt --check in CI (exit codes 0/1/2), bun fmt --init to create config, and diff against your current Prettier/ESLint output before switching.

Action HubReady to adopt this in production?

Benchmark side-by-side against alternatives, or calculate monthly token cost vs subscription break-even.

Up NextTheo open-sources tsc-rs: Opus 5.5 ported the TypeScript 7 compiler to Rust in two weeks for ~$24K, type-checking ~1.6x faster than the Go version
Read Now→