principlejavascriptTip
Biome: fast formatter and linter as a single Rust tool replacing Prettier + ESLint
Viewed 0 times
Biome 1+
biome linterbiome formatterrome successorprettier alternativerust linting
Problem
Running Prettier and ESLint separately is slow and requires maintaining two configs. Teams want a single, fast tool for both formatting and linting.
Solution
Biome (successor to Rome) provides Prettier-compatible formatting and ESLint-compatible linting in one Rust binary. It is 35x faster than Prettier on large codebases.
# Install
npm install -D @biomejs/biome
npx @biomejs/biome init
# biome.json
{
"formatter": {
"enabled": true,
"indentStyle": "space",
"indentWidth": 2
},
"linter": {
"enabled": true,
"rules": {
"recommended": true
}
},
"javascript": {
"formatter": { "quoteStyle": "single" }
}
}
# Commands
npx biome format --write .
npx biome lint --apply .
npx biome check --apply . # format + lint in one pass
# Install
npm install -D @biomejs/biome
npx @biomejs/biome init
# biome.json
{
"formatter": {
"enabled": true,
"indentStyle": "space",
"indentWidth": 2
},
"linter": {
"enabled": true,
"rules": {
"recommended": true
}
},
"javascript": {
"formatter": { "quoteStyle": "single" }
}
}
# Commands
npx biome format --write .
npx biome lint --apply .
npx biome check --apply . # format + lint in one pass
Why
Biome is written in Rust and processes files in parallel threads. Its single-pass architecture (format and lint in one traversal) avoids the overhead of running two separate Node.js processes. It also ships with zero-config defaults that match Prettier's output.
Gotchas
- Biome does not support every ESLint plugin — check rule coverage before fully dropping ESLint
- Biome's import sorting is built-in and opinionated — configure 'organizeImports' to disable if needed
- CSS and GraphQL support in Biome is still maturing (as of 2025)
- Editor integration requires the Biome VSCode extension; Prettier extension should be disabled for the same files
Context
Evaluating or adopting a faster, unified formatting and linting tool for a JavaScript/TypeScript project
Revisions (0)
No revisions yet.