Felipe Moacir

Biome vs ESLint: A Revolução do Linting em 2025

JavaScriptToolingLintingPerformance
Biome vs ESLint: A Revolução do Linting em 2025

O ecossistema JavaScript tradicional exige ESLint para lint e Prettier para format — dois tools, dois configs, duas fontes de conflito. O Biome (ex-Rome) propõe uma alternativa: um único binário em Rust que faz lint e format em um só lugar.

Com base em análises como as da Better Stack e no Biome v2 (Biotype) (junho/2025), este artigo resume quando faz sentido migrar.

1. Biome em Poucas Palavras

  • Lint + Format em uma ferramenta só
  • Rust — performance 10-20x maior que ESLint/Prettier em Node
  • Single config — um biome.json no lugar de .eslintrc + .prettierrc
  • Compatível com Prettier — saída de formatação muito próxima, facilitando migração

2. Performance

Em projetos com ~500 arquivos:

  • Biome: 2-3 segundos
  • ESLint + Prettier: 30+ segundos

Para CI e hooks de pre-commit, essa diferença é relevante.

3. Biome v2 (2025): Type-Aware Linting

O Biome v2 introduz regras type-aware sem depender do compilador TypeScript. Exemplo: a regra noFloatingPromises identifica promises não tratadas — em testes iniciais, com desempenho melhor que typescript-eslint em boa parte dos casos.

4. Onde ESLint ainda Leva Vantagem

  • Ecossistema maduro — plugins para frameworks, convenções e regras específicas
  • Customização profunda — regras e configs muito granulares
  • Time já estabelecido — workflows e pipelines baseados em ESLint

5. Veredito

  • Novo projeto ou projeto pequeno/médio: Biome é uma opção forte — menos config, mais velocidade.
  • Projeto grande com muitas regras custom ESLint: Avalie o esforço de migração; o ecossistema do ESLint pode ainda compensar.
  • CI lento por causa de lint: Vale testar Biome em paralelo para medir ganho de tempo.

6. Migração Gradual

É possível rodar Biome e ESLint em paralelo durante a transição. Comece usando o Biome apenas como formatter (desative o Prettier) e mantenha o ESLint para lint. Depois, vá habilitando regras do Biome e desativando as equivalentes do ESLint, até migrar completamente.

7. biome.json Mínimo

{
  "linter": { "enabled": true },
  "formatter": { "enabled": true }
}

Só isso já formata e aplica regras sensatas. Personalize depois conforme o projeto.