Biome Adoption Guide

A comprehensive guide to adopting Biome, the high-performance Rust-based JavaScript toolchain that unifies linting, formatting, and import sorting into one fast, simple tool.

Why Biome Matters for Modern Development

Modern JavaScript development has evolved dramatically, but tooling fragmentation remains a persistent challenge. Most projects juggle ESLint for linting, Prettier for formatting, and various plugins for framework-specific rules. This setup introduces configuration complexity, performance overhead, and potential conflicts between tools.

Biome emerges as a unified, Rust-based toolchain that consolidates linting, formatting, and import organization into a single high-performance solution. Built with speed and simplicity in mind, Biome delivers 10-20x faster performance than traditional ESLint+Prettier setups while reducing configuration complexity from multiple files to a single biome.json.

This guide explores how Biome can streamline your development workflow, covering installation, configuration, migration strategies, and best practices for teams adopting this modern toolchain. Whether you're starting a new project or looking to optimize an existing codebase, understanding Biome's capabilities helps you make informed decisions about your JavaScript development stack.

Biome by the Numbers

20x

Faster than ESLint+Prettier

1

Configuration file

180+

Built-in lint rules

~1.2M

Weekly npm downloads

Understanding Biome and Its Architecture

What Is Biome?

Biome is a fast toolchain for web development that combines linting, formatting, and import sorting capabilities into a single binary. Originally developed as Rome in 2020, the project was forked and rebranded as Biome in 2023 after its original maintainers shifted focus. The toolchain is written entirely in Rust, leveraging the language's performance characteristics to deliver exceptional speed while maintaining comprehensive rule coverage for modern JavaScript and TypeScript projects.

The architecture behind Biome reflects a deliberate design philosophy: provide sensible defaults that work out of the box while offering flexible configuration for teams with specific requirements. Unlike ESLint's plugin-heavy ecosystem that requires extensive setup, Biome ships with approximately 180 lint rules inspired by popular ESLint configurations, covering everything from code quality to style consistency.

Biome's formatter is compatible with Prettier's output, meaning projects already using Prettier can migrate without changing their codebase formatting. This compatibility extends to configuration options, with Biome supporting similar rules for line width, trailing commas, and other formatting preferences.

The Rust Advantage

The decision to build Biome in Rust fundamentally shapes its performance characteristics. Rust's zero-cost abstractions and memory safety guarantees enable Biome to process large codebases significantly faster than Node.js-based alternatives. Benchmarks from real-world projects demonstrate linting times dropping from 28 seconds with ESLint to under 2 seconds with Biome, representing a 20x performance improvement on equivalent workloads.

This performance gain translates directly to developer productivity:

  • Shorter feedback loops during development
  • Quicker CI/CD pipelines that complete in seconds
  • Reduced wait times for pre-commit hooks
  • Consistent performance regardless of operating system

The Rust implementation also eliminates Node.js version conflicts and dependency resolution issues that can affect ESLint's behavior across different environments, making it an excellent choice for teams prioritizing code quality and developer experience.

Why Migrate to Biome

Simplifying Toolchain Complexity

Traditional JavaScript projects typically require multiple tools for code quality assurance:

ToolPurposeTypical Dependencies
ESLintCode analysis10-30 packages
PrettierCode formatting1-2 packages
Import sortersOrganize imports2-5 packages

Biome addresses this complexity by consolidating these capabilities into a single tool with one configuration file. A typical Biome configuration might span 50 lines, replacing hundreds of lines of ESLint configuration, Prettier settings, and plugin configurations.

The unified approach also eliminates configuration conflicts between tools. ESLint and Prettier have historically disagreed on formatting rules, requiring eslint-config-prettier to suppress conflicting ESLint rules. With Biome handling both linting and formatting, these conflicts become impossible by design.

Performance Impact on Development Workflow

Fast tooling enables developers to run linting and formatting as part of their save cycle without interrupting flow state. When linting takes 20-30 seconds, developers often disable real-time checks or skip running tools altogether, undermining the code quality benefits these tools provide.

Biome's performance profile enables new workflow patterns:

  • Watch mode during active development provides immediate feedback
  • Pre-commit hooks complete quickly, encouraging frequent commits
  • CI/CD pipelines that previously waited minutes now complete in seconds

For teams working with large monorepos or maintaining extensive codebases, the cumulative time savings become substantial over weeks and months of development. Our devops consulting services can help you integrate Biome into your existing CI/CD infrastructure for optimal performance.

Installation and Initial Setup

Getting Started with Biome

Installing Biome requires only a single command in Node.js environments:

# Install as a development dependency
npm install --save-dev @biomejs/biome

# Or install globally
npm install --global @biomejs/biome

Once installed, Biome provides several subcommands:

CommandPurpose
biome lintAnalyze code for issues
biome formatFormat code
biome checkRun both linting and formatting
biome ciOptimized for CI environments
biome initGenerate initial configuration
biome migrate eslintImport ESLint configuration

Configuration Structure

Biome's configuration file organizes settings into logical sections:

{
 "$schema": "https://biomejs.dev/schemas/1.9.0/schema.json",
 "linter": {
 "enabled": true,
 "rules": {
 "recommended": true
 }
 },
 "formatter": {
 "enabled": true,
 "lineWidth": 120,
 "indentStyle": "space",
 "indentSize": 2
 },
 "organizeImports": {
 "enabled": true
 },
 "javascript": {
 "formatter": {
 "quoteStyle": "single",
 "trailingComma": "es5"
 }
 }
}

The configuration provides sensible defaults while allowing customization for team preferences. Run biome init to generate a starting configuration that you can then customize based on your project requirements. For teams using TypeScript development, Biome offers comprehensive type-aware linting and formatting support out of the box.

Migrating from ESLint + Prettier

If you're currently using ESLint and Prettier, Biome includes a migration command that analyzes your existing configuration:

# Analyze ESLint config and generate Biome settings
biome migrate eslint

This command examines your .eslintrc files and produces equivalent Biome configuration, significantly reducing setup time when migrating from legacy tooling.

Migration Strategies

Gradual Adoption Approach

Migrating from ESLint+Prettier to Biome can follow several strategies depending on project requirements:

Phase 1: Assessment

  1. Run biome migrate eslint to convert existing configuration
  2. Execute biome check against your codebase
  3. Identify rule gaps and formatting differences

Phase 2: Parallel Running

  1. Add Biome alongside existing ESLint/Prettier
  2. Validate Biome's behavior on your codebase
  3. Address configuration differences

Phase 3: Full Migration

  1. Update npm scripts to use Biome commands
  2. Configure editor to use Biome's language server
  3. Remove ESLint and Prettier dependencies

Complete Migration Steps

For teams ready to fully migrate:

  1. Replace dependencies: Remove ESLint and Prettier packages
  2. Consolidate configuration: Convert ESLint and Prettier configs to biome.json
  3. Update scripts: Change npm scripts from eslint/prettier to biome commands
  4. Configure editor: Install Biome VS Code extension, disable ESLint/Prettier extensions
  5. Update CI/CD: Use biome ci for faster pipeline execution

Pro tip: Use Biome's --changed flag in pre-commit hooks to operate only on modified files, reducing execution time. Our software development services include tooling optimization to help you seamlessly transition to Biome.

Common Migration Challenges

Teams often encounter a few common challenges when migrating:

  • Rule coverage gaps: Some ESLint plugins may not have Biome equivalents
  • Custom configurations: Heavily customized ESLint configs require manual translation
  • Team adoption: Gradual rollout helps teams adjust to new tooling

Addressing these challenges early in your migration plan ensures a smoother transition to Biome's unified approach.

IDE Integration and Developer Experience

Setting Up Editor Support

Biome's developer experience centers on tight editor integration that provides immediate feedback during coding.

VS Code Setup:

  1. Install the official Biome extension from the marketplace
  2. Configure settings for format on save and linting behavior
  3. Biome's language server activates automatically for JS/TS files

Key Settings:

{
 "editor.formatOnSave": true,
 "editor.defaultFormatter": "biomejs.biome",
 "editor.codeActionsOnSave": {
 "source.organizeImports.biome": "explicit"
 },
 "biome.enabled": true
}

Command Line Workflow

The CLI serves CI/CD pipelines, pre-commit hooks, and developers preferring terminal workflows:

# Check all files (lint + format)
biome check ./src

# Format files
biome format ./src

# Lint files only
biome lint ./src

# Apply fixes automatically
biome check ./src --apply

# Check only changed files (for pre-commit)
biome check --changed

Pre-commit hook example:

- name: Run Biome
 run: biome check --changed --unsafe
 language: node
 stages: [commit]

Effective IDE integration is crucial for maintaining consistent code quality standards across your development team. Biome's language server protocol implementation ensures consistent behavior across different editors, from VS Code to Neovim and beyond.

Editor Compatibility

Biome supports integration with various editors beyond VS Code:

  • Neovim: Via LSP client configuration
  • Emacs: Through eglot or lsp-mode
  • Visual Studio: Using the Biome extension
  • JetBrains IDEs: Available through the Biome plugin

This broad editor support makes Biome an excellent choice for diverse development teams where developers may have different editor preferences.

Biome vs ESLint: When to Choose Each Tool

Biome's Strengths

ScenarioRecommendation
New projectsUse Biome - sensible defaults, no config required
Performance-critical workflowsUse Biome - 10-20x faster
Reducing tooling overheadUse Biome - single config, single dependency
React/TypeScript projectsUse Biome - excellent built-in support

ESLint's Continuing Relevance

ScenarioConsider ESLint
Extensive plugin ecosystem needsESLint may be required
Hundreds of custom rulesMigration effort may exceed benefits
Specialized framework patternsVerify Biome coverage first
Established ESLint expertiseIncremental improvements may suffice

Key consideration: Biome's ecosystem continues growing. The 2.0 release introduces plugin capabilities that address ecosystem gaps. Most projects can benefit from at least evaluating Biome's suitability.

Performance Comparison

MetricBiomeESLint + Prettier
Execution speed1-2 seconds20-30+ seconds
Configuration files13+ files
Dependencies1 package10-50 packages
Formatter compatibilityPrettier-equivalentStandard
Learning curveLowMedium-High

Choosing the right tooling depends on your project's specific needs. Our technology consulting services can help you evaluate whether Biome is the right choice for your JavaScript tech stack.

Frequently Asked Questions

Ready to Modernize Your JavaScript Toolchain?

Streamline your development workflow with Biome's unified, high-performance tooling. Our team can help you evaluate and implement Biome for your projects.

Sources

  1. Biome.js Official - Primary source for toolchain documentation
  2. Biome 2025 Roadmap - Future feature roadmap and development plans
  3. Biome v2.3 Release - Recent feature additions and improvements
  4. LogRocket - Biome Adoption Guide - Comprehensive adoption guide with setup examples
  5. Better Stack - Biome vs ESLint - Practical comparison based on real-world usage
  6. DEV Community - Why I Chose Biome - Migration case study with benchmarks