If you're still running ESLint and Prettier as separate tools in your JavaScript project, you're doing unnecessary work. Biome v2.4 — the Rust-powered linter and formatter that started as a Rome fork in 2023 — has quietly become the default choice for new projects in 2026. And with its latest release, it's making a strong case for existing projects to migrate too.
Here's why 24,000+ GitHub stars worth of developers agree.
What Biome Actually Does
Biome is a single binary that replaces your entire JavaScript/TypeScript toolchain for code quality. Instead of juggling separate configs for ESLint, Prettier, and potentially other tools, you get one tool with one config file:
- Formatting — Prettier-compatible output for JS, TS, JSX, TSX, JSON, HTML, CSS, and GraphQL
- Linting — 465 rules sourced from ESLint, typescript-eslint, and other established rule sets
- Import sorting — Built-in, no plugin needed
- All in one command —
npx @biomejs/biome checkruns everything at once
TL;DR: One tool. One config. Seven languages. 35x faster than Prettier alone.
The Speed Difference Is Not Subtle
This is where Biome's Rust foundation pays off in a way that's impossible to ignore. Real-world numbers from production codebases:
| Operation | ESLint + Prettier | Biome | Speedup |
|---|---|---|---|
| Format 171K lines | ~12 seconds | ~340ms | ~35x |
| Lint full monorepo | ~12 seconds | <200ms | ~60x |
| CI pipeline check | Minutes | Seconds | Significant |
On a large monorepo, Biome formatted and linted an entire codebase in under 200ms while the ESLint + Prettier stack took nearly 12 seconds. That's not a marginal improvement — it's the difference between a tool you notice and one you don't.
For CI pipelines, this translates directly to faster builds and shorter feedback loops. If your linting step takes 2-3 minutes today, Biome can likely cut that to under 10 seconds.
Getting Started in 60 Seconds
Installation is deliberately simple:
# Install as a dev dependency
npm i -D --save-exact @biomejs/biome
# Initialize config
npx @biomejs/biome init
# Format your source directory
npx @biomejs/biome format --write ./src
# Run everything (format + lint)
npx @biomejs/biome check --write ./src
The init command creates a biome.json config file. Here's what a minimal one looks like:
{
"$schema": "https://biomejs.dev/schemas/2.4.0/schema.json",
"organizeImports": { "enabled": true },
"linter": {
"enabled": true,
"rules": { "recommended": true }
},
"formatter": {
"enabled": true,
"indentStyle": "space",
"indentWidth": 2
}
}
That single file replaces your .eslintrc.js, .prettierrc, .eslintignore, and .prettierignore. Less config drift, fewer merge conflicts, one source of truth.
Prettier Compatibility: 97% and Counting
Biome aims for formatting output that's identical to Prettier, and it hits 97% compatibility. The remaining 3% are edge cases where Biome made deliberate aesthetic choices that differ — mostly around line-breaking heuristics in deeply nested expressions.
For most teams, the output is indistinguishable. If you run biome format on a Prettier-formatted codebase, the diff will be minimal to nonexistent.
465 Lint Rules — But Smarter Diagnostics
Biome doesn't just port ESLint rules — it improves the developer experience around them. Every diagnostic includes:
- Contextualized error messages that explain why something is wrong, not just what
- Safe auto-fixes that Biome can apply automatically without changing behavior
- Unsafe fixes that are flagged separately so you can review them
The rule set covers the most common ESLint plugins out of the box: eslint-plugin-import, eslint-plugin-unicorn, @typescript-eslint, and accessibility rules from eslint-plugin-jsx-a11y.
Who's Using It
Biome's adoption list reads like a who's-who of tech:
- AWS — Internal tooling
- Google — Select frontend projects
- Microsoft — VS Code extension ecosystem
- Discord — Production frontend
- Vercel — Next.js adjacent tooling
- Cloudflare — Workers ecosystem
When Discord and Cloudflare are running your tool in production, the "is it ready?" question has been answered.
What Biome Can't Do (Yet)
No tool is perfect, and Biome has clear gaps you should know about before migrating:
- Type-aware lint rules — Rules that need TypeScript's type checker (like
no-floating-promisesorno-misused-promises) aren't supported. This requires integrating the TypeScript language service, which is architecturally complex. - Framework-specific plugins —
eslint-plugin-react-hooks,eslint-plugin-next, and similar framework-specific rules don't have Biome equivalents yet. - Custom ESLint rules — If your team has written custom ESLint rules, there's no migration path. You'd need to rewrite them or keep ESLint running alongside Biome for those specific rules.
- Plugin ecosystem — ESLint's massive plugin ecosystem is its biggest moat. Biome's rule set is growing fast, but it can't match ESLint's long tail of niche plugins.
Migration Strategy: Hybrid First
For existing projects, the pragmatic approach is a hybrid migration:
- Replace Prettier with Biome's formatter — This is the lowest-risk swap with the highest speed payoff
- Enable Biome's recommended lint rules alongside your existing ESLint config
- Gradually disable ESLint rules that Biome covers
- Keep ESLint only for type-aware rules and framework-specific plugins you can't replace
This lets you capture 80% of the speed benefit immediately while migrating the remaining rules over time.
Biome vs. OXC: The Other Rust Contender
Biome isn't the only Rust-based linting tool gaining traction. OXC (Oxidation Compiler) is a newer project focused purely on linting speed, and it's even faster than Biome in raw linting benchmarks.
The difference: Biome is a complete toolchain (formatter + linter + import sorter), while OXC is focused primarily on linting. If you want one tool to replace everything, Biome is the answer. If you only need a linter and want maximum speed, OXC is worth watching.
The Bottom Line
Biome v2.4 has crossed the threshold from "promising alternative" to "default choice." For new projects, there's no compelling reason to start with ESLint + Prettier anymore — Biome gives you equivalent capability at a fraction of the speed cost and config complexity.
For existing projects, the hybrid migration path means you don't have to rip everything out at once. Start with the formatter, add the linter, and migrate at your own pace.
The JavaScript ecosystem has been waiting for its Rust-powered tooling revolution since esbuild proved it was possible. With 24K+ stars and adoption by AWS, Google, Discord, and Cloudflare, Biome is delivering on that promise — one blazing-fast lint check at a time.

