| created | "2025-12-16T00:00:00.000Z" |
| modified | "2026-07-28T00:00:00.000Z" |
| reviewed | "2025-12-16T00:00:00.000Z" |
| name | biome-tooling |
| description | Biome all-in-one JS/TS formatter and linter, 15-20x faster than ESLint/Prettier. Use when setting up formatting/linting or migrating from ESLint+Prettier. |
| user-invocable | false |
| allowed-tools | Glob, Grep, Read, Bash, Edit, Write, TodoWrite, WebFetch, WebSearch, BashOutput, KillShell |
Biome Tooling
Biome is a modern, performant toolchain for JavaScript, TypeScript, and related web languages. It combines formatting, linting, and import organization into a single tool that's 15-20x faster than ESLint/Prettier.
Keep ESLint alongside when the project needs plugin-only rules (React hooks, a11y), framework-specific rules (Next.js, Nuxt), or carries heavy custom ESLint configuration.
Hybrid approach: Use Biome for formatting, ESLint for specialized linting.
Core Expertise
What is Biome?
- All-in-one toolchain: Linter + formatter + import sorter
- Zero-config: Works out of the box with sensible defaults
- Fast: Written in Rust, processes files in parallel
- Compatible: Matches Prettier formatting 97%+
- Supports: JavaScript, TypeScript, JSX, TSX, JSON, CSS
Installation
bun add --dev @biomejs/biome
bunx biome --version
bunx biome init
Essential Commands
bunx biome format --write src/
bunx biome lint --write src/
bunx biome check --write src/
bunx biome check src/
bunx biome ci src/
bunx biome migrate eslint --write
bunx biome migrate prettier --write
bunx biome explain noUnusedVariables
Configuration (biome.json)
Minimal Setup (Zero Config)
Biome works without configuration. For basic customization:
{
"$schema": "https://biomejs.dev/schemas/1.9.4/schema.json",
"vcs": {
"enabled": true,
"clientKind": "git",
"useIgnoreFile": true
},
"files": {
"ignoreUnknown": false,
"ignore": ["dist", "build", "node_modules", ".next", "coverage"]
},
"formatter": {
"enabled": true,
"indentStyle": "space",
"indentWidth"
Rule Categories
| Category | Purpose | Example Rules |
|---|
recommended | Essential rules everyone should enable | Most rules marked "recommended" |
correctness | Prevent bugs and logic errors | noUnusedVariables, noUnreachable |
suspicious | Detect code that might be wrong | noExplicitAny, noDoubleEquals |
style | Enforce consistent style | useConst, noVar |
complexity | Reduce code complexity | noForEach, useFlatMap |
performance | Optimize performance | noAccumulatingSpread |
a11y | Accessibility best practices | noSvgWithoutTitle, useAltText |
security | Security vulnerabilities | noDangerouslySetInnerHtml |
Common Patterns
Ignore Files and Directories
Via biome.json:
{
"files": {
"ignore": [
"dist",
"build",
"node_modules",
"**/*.config.js",
"scripts/legacy/**"
]
}
}
Via .gitignore (automatic):
{
"vcs": {
"enabled": true,
"useIgnoreFile": true
}
}
Performance Comparison
| Tool | Time (1000 files) | Notes |
|---|
| Biome | 0.5s | Rust, parallel processing |
| ESLint | 8-10s | Node.js, single-threaded |
| Prettier | 3-5s | Node.js, formatting only |
| ESLint + Prettier | 11-15s | Sequential execution |
Agentic Optimizations
| Context | Command |
|---|
| Quick check | bunx biome check src/ |
| Fix all | bunx biome check --write src/ |
| Format only | bunx biome format --write src/ |
| Lint only | bunx biome lint --write src/ |
| CI mode | bunx biome ci src/ |
| Errors only | bunx biome check --diagnostic-level=error src/ |
| Limited output | bunx biome check --max-diagnostics=10 src/ |
| GitHub reporter | bunx biome check --reporter=github src/ |
| JSON output | bunx biome check --reporter=json src/ |
| Migrate ESLint | bunx biome migrate eslint --write |
| Migrate Prettier | bunx biome migrate prettier --write |
Quick Reference
| Flag | Description |
|---|
--write | Apply fixes/formatting |
--reporter=github | GitHub annotations format |
--reporter=json | JSON output |
--diagnostic-level=error | Errors only |
--max-diagnostics=N | Limit output count |
--verbose | Show detailed diagnostics |
--no-errors-on-unmatched | Ignore unmatched files |
ci | CI mode (check + exit code) |
For detailed examples, advanced patterns, and best practices, see REFERENCE.md.
References