Biome
A unified linter and formatter for JavaScript and TypeScript — written in Rust. Replaces both Prettier and ESLint with a single tool, a single config file, zero npm dependencies, and over 200 built-in lint rules. The direct successor to the Rome project.
What is Biome?
Biome is an open-source, Rust-based toolchain for JavaScript, TypeScript, JSX, and JSON. It combines a formatter (replacing Prettier), a linter (replacing ESLint), and an import organizer into a single binary with zero npm dependencies. One biome.json file replaces .eslintrc, .prettierrc, and all the associated config overhead.
Biome is the direct continuation of the Rome project, which was forked and rebranded as Biome in late 2023 after the original Rome organization went inactive. It reached v1.0 in 2023 and is in active production use. The official website is biomejs.dev.
Key Features
- Unified tool — linting, formatting, and import organizing in one binary; no more Prettier vs ESLint conflicts
- Rust performance — formats and lints large codebases in milliseconds; much faster than Node.js-based tools
- 200+ lint rules — covers correctness, style, performance, accessibility, and security categories out of the box
- Prettier-compatible formatting — same default line width (80), similar quote handling; migration diff is minimal
- Single config file —
biome.jsonwith a published JSON schema for IDE auto-completion - Zero dependencies — no transitive npm package risks; one dependency entry in package.json
- LSP support — full Language Server Protocol implementation for VS Code, Neovim, and other editors
- ESLint migration command —
biome migrate eslintreads your ESLint config and enables equivalent Biome rules
Installation
# Add Biome as a dev dependency npm add -D @biomejs/biome # Initialize a biome.json config file npx @biomejs/biome init # Format all files in the project npx @biomejs/biome format --write . # Lint all files npx @biomejs/biome lint . # Check (lint + format check) and auto-fix everything npx @biomejs/biome check --write . # Check a specific file npx @biomejs/biome check --write src/index.ts
Configuration (biome.json)
Running biome init generates a biome.json with sensible defaults. Customize indent style, line width, quote style, and which lint rule categories to enable.
// biome.json — generated by "biome init", customise as needed
{
"$schema": "https://biomejs.dev/schemas/1.6.0/schema.json",
"organizeImports": {
"enabled": true
},
"linter": {
"enabled": true,
"rules": {
"recommended": true
}
},
"formatter": {
"enabled": true,
"indentStyle": "space",
"indentWidth": 2,
"lineWidth": 100
},
"javascript": {
"formatter": {
"quoteStyle": "double",
"trailingCommas": "es5"
}
}
} Migrating from Prettier and ESLint
Migration is straightforward. Biome provides a built-in migrate command that reads your existing ESLint config and maps rules to Biome equivalents automatically.
# Remove Prettier and ESLint npm remove prettier eslint eslint-config-* eslint-plugin-* @typescript-eslint/* # Remove config files rm .eslintrc.* .eslintignore .prettierrc .prettierignore # Install Biome npm add -D @biomejs/biome npx @biomejs/biome init # Migrate your ESLint rules — Biome has a migration command npx @biomejs/biome migrate eslint --write # Run the formatter to match Biome's style npx @biomejs/biome format --write .
VS Code Integration
Install the Biome VS Code extension (biomejs.biome) and configure it as the default formatter. Disable the Prettier extension for the workspace to avoid conflicts.
// .vscode/settings.json — configure Biome as default formatter
{
"editor.defaultFormatter": "biomejs.biome",
"editor.formatOnSave": true,
"[javascript]": {
"editor.defaultFormatter": "biomejs.biome"
},
"[typescript]": {
"editor.defaultFormatter": "biomejs.biome"
},
"[json]": {
"editor.defaultFormatter": "biomejs.biome"
}
} GitHub Actions CI Integration
Use biome ci (not biome check) in CI — it is identical to check but never writes files and exits with a non-zero code on any issue.
# .github/workflows/biome.yml
name: Biome Check
on: [push, pull_request]
jobs:
biome:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- run: npm ci
- run: npx @biomejs/biome ci . Biome vs Prettier + ESLint
| Feature | Biome | Prettier + ESLint |
|---|---|---|
| Number of tools | 1 (unified) | 2+ (separate) |
| Config files | 1 (biome.json) | .eslintrc + .prettierrc + ignore files |
| npm dependencies | 1 (@biomejs/biome) | 10–50+ (plugins, configs, compat) |
| Performance | Rust — extremely fast | Node.js — slower |
| Plugin ecosystem | Limited (built-in rules only) | Thousands of plugins |
| Rule–format conflicts | None (single tool) | Common (requires eslint-config-prettier) |
Pros and Cons
Pros
- ✓ One tool replaces both Prettier and ESLint completely
- ✓ Zero npm dependencies — no plugin supply chain risks
- ✓ Rust speed makes it near-instant even on large codebases
- ✓ No formatting vs linting rule conflicts by design
- ✓ Built-in ESLint migration command simplifies adoption
- ✓ 200+ rules covering correctness, accessibility, and performance
Cons
- ✗ No support for ESLint plugins (no eslint-plugin-* packages)
- ✗ Opinionated formatting — less configurable than Prettier
- ✗ Smaller community than ESLint/Prettier's established ecosystems
- ✗ Some niche ESLint rules have no Biome equivalent yet
- ✗ TypeScript type-aware lint rules (requiring type info) are limited
Frequently Asked Questions
What is Biome?▼
Biome is a unified toolchain for JavaScript and TypeScript that combines a linter, formatter, and import organizer in a single fast tool. It is written in Rust, requires zero dependencies, and replaces both Prettier (for formatting) and ESLint (for linting) with a single binary and a single config file (biome.json). It is the direct successor to the Rome project, which was forked and rebranded as Biome in 2023.
How does Biome differ from using Prettier and ESLint together?▼
Prettier and ESLint are two separate tools with separate config files, separate dependencies, and separate CI steps. They can conflict with each other (especially around formatting rules) and require eslint-config-prettier to disable ESLint rules that overlap. Biome replaces both with a single tool, single config file, zero npm dependencies, and dramatically faster execution thanks to Rust. The tradeoff is that Biome does not support ESLint plugins (only its own 200+ built-in rules).
Is Biome compatible with ESLint rules?▼
Biome ships its own implementation of over 200 lint rules, many of which correspond to popular ESLint rules (including some from eslint-plugin-react, eslint-plugin-typescript, and others). It is not plugin-compatible with ESLint — you cannot install an eslint-plugin-* and have it work in Biome. However, Biome provides a migration command (biome migrate eslint) that reads your ESLint config and enables the equivalent Biome rules automatically.
How do I migrate from Prettier to Biome?▼
Run npx @biomejs/biome init to create a biome.json, then run npx @biomejs/biome format --write . to reformat all files with Biome's formatter. Biome's formatting is designed to be highly compatible with Prettier's output (same line width defaults, similar quote handling) so the diff should be small. After verifying the output, remove Prettier and its config files. Update your VS Code settings to use the Biome extension as the default formatter.
What is biome.json?▼
biome.json is Biome's single configuration file. It controls the formatter (indent style, line width, quote style, trailing commas), linter (which rule categories and specific rules to enable), import organizer, and language-specific overrides. Unlike ESLint's config which can be complex and hierarchical, biome.json is flat and JSON-typed with a published JSON schema for IDE auto-completion.
Is Biome production-ready?▼
Yes. Biome reached v1.0 in 2023 and is in active production use at large companies. It is maintained by a team of contributors and follows semantic versioning. The formatter is considered stable and Prettier-compatible. The linter is stable with 200+ rules. The import organizer is stable. Biome is a safe choice for new projects and a well-supported migration target for projects currently using Prettier and ESLint.
Related Products
on GumroadTypeScript Quick Reference Toolkit
5 practical reference files for TypeScript developers: cheatsheet, TS vs JS comparison, 20 utility types with real examples, tsconfig best practices template, and 15 common mistakes guide. Print it. Keep it on your desk.
Buy on Gumroad →Premium Workflow Pack
Production-grade workflows, architecture guides, and deployment scripts for teams that ship. 10 advanced CI/CD workflows (blue-green, canary, E2E, security), 5 architecture deep-dives, code review checklist, PR process guide, and 5 battle-tested Bash deployment scripts.
Buy on Gumroad →DevPlaybook Interview Vault
210+ real technical interview questions with model answers, asked at Google, Meta, Amazon, Microsoft, Stripe, and Shopify. Covers Frontend (55), Backend (55), System Design (50), and DSA (50). Available in English and Traditional Chinese.
Buy on Gumroad →You Might Also Need
SQL to TypeScript Types
Convert SQL CREATE TABLE statements to TypeScript interfaces and Zod schemas. Maps SQL column types to TypeScript with nullability.
Open free tool →
TypeScript Discriminated Union Builder
Build TypeScript discriminated unions visually. Add variants with fields and get type-safe switch statements, type guards, and exhaustive checking code.
Open free tool →
TypeScript Playground
Write TypeScript and instantly see compiled JavaScript output. Strip interfaces, types, generics, enums, and decorators. Share code via URL. No install needed.
Open free tool →
More Free Tools
Related Articles
Biome: Replace ESLint + Prettier with One Lightning-Fast Tool (2026)
Biome unifies linting and formatting into one blazing-fast tool. Learn how to set up Biome, migrate from ESLint + Prettier, integrate with CI, and use the VS Code extension.
Biome vs ESLint + Prettier 2026: The Complete Comparison
Speed benchmarks, rule coverage, VS Code integration, CI setup, and a step-by-step migration guide from ESLint + Prettier to Biome in 2026. Make the right choice for your project.
Biome vs ESLint vs Prettier: Zero-Config JavaScript Tooling in 2026
A comprehensive 2026 comparison of Biome, ESLint, and Prettier — covering setup complexity, performance benchmarks, rule coverage, IDE integration, and a complete migration guide from ESLint+Prettier to Biome.
Playwright vs Cypress vs Puppeteer 2026: Which Testing Tool Should You Choose?
Playwright vs Cypress vs Puppeteer 2026 — compare feature sets, performance, developer experience, parallel testing, CI costs, and browser support. Find the right E2E testing tool for your stack.
Modern JavaScript Stack 2026: Next.js 15, Bun, Vite, TypeScript & Beyond
Explore the modern JavaScript stack for 2026: Next.js 15, Bun, Vite, TypeScript 5.4, React Server Components, and the best tooling choices for full-stack developers.
Enjoying this tool? Get more like it.
Weekly developer tool guides, productivity playbooks & AI tricks. Free. No spam.
Unlock AI-Powered Dev Tools
- ⚡ AI Code Review, Doc Generator & SQL Builder
- ⚡ All premium templates & early access
- ⚡ Member discounts on Gumroad products
$9/mo after trial · Cancel anytime
Want the full toolkit?
Get DevPlaybook Pro
Every template, guide, boilerplate, and automation script in one bundle. 13 premium products — grab them all at once and save big.
MIT licensed · Instant download · No subscription
See what's included → Browse all deals →