What if one tool replaced Prettier, ESLint, and their 50+ config packages? That's Biome.
What is Biome?
Biome is a fast formatter, linter, and code analyzer for JavaScript, TypeScript, JSX, JSON, CSS, and GraphQL. Written in Rust, it's a single binary that replaces multiple tools.
It started as Rome (from Sebastian McKenzie, creator of Babel), was forked as Biome, and is now the most active tool in this space.
Why Teams Are Switching
1. One Tool, One Config
// biome.json
{
"$schema": "https://biomejs.dev/schemas/1.9.0/schema.json",
"formatter": {
"indentStyle": "space",
"indentWidth": 2,
"lineWidth": 100
},
"linter": {
"rules": {
"recommended": true,
"complexity": {
"noForEach": "warn"
},
"suspicious": {
"noExplicitAny": "error"
}
}
}
}
That replaces:
-
.prettierrc+.prettierignore -
.eslintrc+.eslintignore -
@typescript-eslint/parser+@typescript-eslint/eslint-plugin eslint-config-prettiereslint-plugin-import
2. 35x Faster Than Prettier
# Format entire project
biome format --write ./src
# Benchmark (10K file project):
# Prettier: 8.2s
# Biome: 0.23s
3. 200+ Lint Rules Built In
# Lint with auto-fix
biome lint --write ./src
# Check everything (format + lint)
biome check --write ./src
Rules from ESLint, TypeScript ESLint, and more — no plugins needed.
4. Import Sorting
// Before
import { useState } from 'react';
import axios from 'axios';
import { Button } from './components';
import type { User } from './types';
import styles from './app.module.css';
// After (Biome sorts automatically)
import axios from 'axios';
import { useState } from 'react';
import { Button } from './components';
import styles from './app.module.css';
import type { User } from './types';
No eslint-plugin-import or @trivago/prettier-plugin-sort-imports needed.
5. CSS and GraphQL Support
{
"css": {
"linter": { "enabled": true },
"formatter": { "enabled": true }
}
}
Biome formats and lints CSS, JSON, and GraphQL natively.
Migration from Prettier + ESLint
# Install
npm install --save-dev --save-exact @biomejs/biome
# Auto-migrate from existing configs
npx @biomejs/biome migrate prettier --write
npx @biomejs/biome migrate eslint --write
# Remove old tools
npm uninstall prettier eslint @typescript-eslint/parser @typescript-eslint/eslint-plugin eslint-config-prettier
The migration command reads your existing configs and generates biome.json.
Biome vs Prettier + ESLint
| Biome | Prettier + ESLint | |
|---|---|---|
| Speed | 35x faster | Baseline |
| Config files | 1 (biome.json) | 2-5 files |
| Dependencies | 1 package | 10-20 packages |
| Import sorting | Built-in | Plugin |
| TypeScript | Built-in | Plugin + parser |
| CSS | Built-in | Separate tools |
| 97% Prettier compat | Yes | N/A |
CI Integration
# GitHub Actions
- name: Biome
run: npx @biomejs/biome ci ./src
One command checks format AND lint. Fails if anything needs fixing.
Editor Support
- VS Code: Official Biome extension
- IntelliJ/WebStorm: Official plugin
- Neovim: Via LSP
- Zed: Built-in support
The Bottom Line
Biome replaces your formatting and linting toolchain with one fast binary. Fewer configs, fewer dependencies, faster CI. If you're setting up a new project — start with Biome.
Need web scraping or data solutions? Check my Apify actors or email spinov001@gmail.com.
Top comments (0)