DEV Community

Alex Spinov
Alex Spinov

Posted on

Biome Has a Free All-in-One Formatter and Linter — Replace Prettier + ESLint

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"
      }
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

That replaces:

  • .prettierrc + .prettierignore
  • .eslintrc + .eslintignore
  • @typescript-eslint/parser + @typescript-eslint/eslint-plugin
  • eslint-config-prettier
  • eslint-plugin-import

2. 35x Faster Than Prettier

# Format entire project
biome format --write ./src

# Benchmark (10K file project):
# Prettier:  8.2s
# Biome:     0.23s
Enter fullscreen mode Exit fullscreen mode

3. 200+ Lint Rules Built In

# Lint with auto-fix
biome lint --write ./src

# Check everything (format + lint)
biome check --write ./src
Enter fullscreen mode Exit fullscreen mode

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';
Enter fullscreen mode Exit fullscreen mode

No eslint-plugin-import or @trivago/prettier-plugin-sort-imports needed.

5. CSS and GraphQL Support

{
  "css": {
    "linter": { "enabled": true },
    "formatter": { "enabled": true }
  }
}
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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)