Skip to main content

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.

✓ Linter + Formatter in one ✓ Rust-based (blazing fast) ✓ 200+ lint rules ✓ Prettier-compatible output ✓ Single biome.json config ✓ Zero dependencies

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

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 tools1 (unified)2+ (separate)
Config files1 (biome.json).eslintrc + .prettierrc + ignore files
npm dependencies1 (@biomejs/biome)10–50+ (plugins, configs, compat)
PerformanceRust — extremely fastNode.js — slower
Plugin ecosystemLimited (built-in rules only)Thousands of plugins
Rule–format conflictsNone (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.

Share this tool: X / Twitter LinkedIn
✓ 60,000+ developers use DevPlaybook ★★★★★ 4.8 / 5 on Gumroad ✓ MIT licensed · Instant download ✓ No login required

Related Products

on Gumroad

You Might Also Need

More Free Tools

Enjoying this tool? Get more like it.

Weekly developer tool guides, productivity playbooks & AI tricks. Free. No spam.

DevPlaybook Pro 7 days free

Unlock AI-Powered Dev Tools

  • ⚡ AI Code Review, Doc Generator & SQL Builder
  • ⚡ All premium templates & early access
  • ⚡ Member discounts on Gumroad products
Start Free Trial →

$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.

$79
$241 separately Save $162 (67% off)
Get DevPlaybook Pro — $79 →

MIT licensed · Instant download · No subscription

See what's included → Browse all deals →