Replacing ESLint+Prettier with Biome: A Practical Migration Guide
Replace ESLint+Prettier with Biome: a step‑by‑step migration guide for large legacy JavaScript/TypeScript projects. Learn how to unify linting and formatting, benchmark performance, and handle trade‑offs.
01 May 2026, 00:39 UTC

Problem Statement
In many large JavaScript/TypeScript codebases the linter and formatter are split across two tools: ESLint for linting and Prettier for formatting. This split forces developers to install, configure, and maintain two executables, two configuration files, and two separate startup phases during CI runs. When a repository contains 10,000+ files, the combined runtime can exceed a minute, slowing developer feedback loops.
Thesis
Biome, a unified linter and formatter, consolidates these responsibilities into a single binary. By replacing ESLint + Prettier with Biome, teams can reduce dependency count, startup overhead, and configuration complexity while retaining comparable rule coverage and auto‑fix capabilities.
Feature Overview
Unified Rule Set
Biome ships with a curated set of rules derived from community‑approved best practices. The rule set covers syntax, style, and potential bugs for both JavaScript and TypeScript. Auto‑fix is available for every rule, and the formatter is tightly coupled to the linter, ensuring consistent output.
Fast Execution
Because the linter and formatter run in a single pass, Biome eliminates the double‑scan overhead of ESLint + Prettier. Official benchmarks show that a 10,000‑file repository is processed in roughly ten seconds, compared to 30–45 seconds for the combined tools.
IDE Integration
The Biome language server provides real‑time diagnostics in VS Code, IntelliJ, and other editors, mirroring the experience of the ESLint extension but with fewer background processes.
Migration Support
Biome offers a biome migrate command that reads existing .eslintrc and .prettierrc files and generates a biome.json configuration that approximates the original linting and formatting rules.
Worked Example: Migrating a Legacy Repo
Assume a legacy project my‑app with the following structure:
my-app/
├─ src/
│ ├─ components/
│ └─ utils/
├─ tests/
└─ package.json
- Back up the current configuration:
git checkout -b backup/eslint-prettier - Install Biome (Node 18+ required):
npm install -D @biomejs/biome - Run the migration command to generate a starting config:
npx biome migrate # Output: biome.json - Review
biome.jsonand adjust rule overrides if necessary. For example, to relax the rule that forbids console.log in production:{ "rules": { "style/no-console": "off" } } - Run Biome on the entire repo and compare results:
npx biome check src tests # Expected output: list of linting and formatting issues - Add Biome to the CI pipeline by replacing the ESLint and Prettier steps:
npx biome check .
To verify performance, run:
time npx biome check .
# Compare with:
time (npx eslint .; npx prettier --check .)
Check that the numeric output for biome is lower than the combined time of ESLint and Prettier.
Trade‑Offs and Limitations
- Plugin Coverage: Biome currently supports a core rule set. Custom ESLint plugins (e.g.,
eslint-plugin-react,eslint-plugin-vue) have no direct equivalents, so projects relying on them may need to re‑implement logic or accept missing checks. - Legacy Style: The default configuration is stricter than many legacy codebases. Expect a surge of warnings; use
rulesoverrides to whitelist historical patterns. - Active Development: Biome is still evolving. New releases may introduce breaking changes in rule names or command syntax. Pin the package version in
package.jsonand test locally before upgrading.
Actionable Next Steps
- Run
npx biome migratein a feature branch and inspect the generatedbiome.json. - Compare the linting output with the current ESLint/Prettier results using the
timecommand. - Adjust rule overrides to match legacy style guidelines.
- Replace the ESLint and Prettier steps in your CI configuration with
npx biome check .. - Install the Biome language server in your IDE to get real‑time diagnostics.
- Monitor the CI run time and issue count over the next sprint; if the number of warnings is too high, refine the rule set.
By following this workflow, teams can evaluate whether Biome’s unified approach delivers tangible benefits in their specific environment.
0 replies
A thoughtful contribution can make all the difference. Be the first to share one.