Skip to content

Conversation

@camd
Copy link
Collaborator

@camd camd commented Dec 28, 2025

Summary

This PR migrates from ESLint + Prettier to Biome, a fast, unified linter and formatter.

Why Biome?

pnpm Compatibility Issues with ESLint:

  • ESLint's plugin ecosystem has poor compatibility with pnpm's strict node_modules structure
  • eslint-config-airbnb doesn't support ESLint 9's flat config, requiring the FlatCompat compatibility layer
  • Multiple unmet peer dependency warnings due to phantom dependencies

Biome Benefits:

  • ~100x faster - lints 383 files in ~50ms vs several seconds with ESLint
  • Single dependency - replaces 12 ESLint/Prettier packages (164 total packages removed)
  • No plugin ecosystem - all rules are built-in, eliminating peer dependency issues
  • Unified tool - linting and formatting in one tool with consistent configuration
  • pnpm-friendly - no compatibility layer or plugin resolution issues

What Changed

Removed:

  • eslint and all eslint-* plugins/configs (12 packages)
  • prettier
  • @babel/eslint-parser
  • globals
  • eslint.config.mjs

Added:

  • @biomejs/biome
  • biome.json configuration

Updated Scripts:

Old New
eslint ... biome lint
prettier --write biome format --write
prettier --check biome format
- biome check (lint + format)

Auto-fixed by Biome:

  • Removed unused import React from 'react' statements (151 files) - React 17+ doesn't require explicit React imports for JSX

Test Plan

  • pnpm lint passes (0 errors, 9 warnings)
  • pnpm format:check works
  • pnpm test passes (existing InfraCompare test failure is unrelated)

@camd camd self-assigned this Dec 28, 2025
@camd camd changed the title Upgrade / migrate from Eslint to biome 3.5: Upgrade / migrate from Eslint to biome Dec 28, 2025
@camd camd requested review from Archaeopteryx and jmaher and removed request for beatrice-acasandrei and esanuandra December 28, 2025 18:23
@camd camd force-pushed the camd/eslint-to-biome branch from b8d780d to ea4679d Compare December 28, 2025 19:51
@codecov-commenter
Copy link

codecov-commenter commented Dec 28, 2025

Codecov Report

❌ Patch coverage is 67.42909% with 356 lines in your changes missing coverage. Please review.
✅ Project coverage is 81.16%. Comparing base (a82c683) to head (5a4b9eb).

Files with missing lines Patch % Lines
ui/job-view/pushes/Push.jsx 65.31% 77 Missing ⚠️
ui/job-view/pushes/FuzzyJobFinder.jsx 52.94% 31 Missing and 1 partial ⚠️
ui/hooks/useDebounce.js 0.00% 22 Missing and 2 partials ⚠️
ui/job-view/pushes/PushJobs.jsx 70.73% 12 Missing ⚠️
ui/intermittent-failures/DateRangePicker.jsx 0.00% 10 Missing ⚠️
ui/intermittent-failures/Layout.jsx 0.00% 10 Missing ⚠️
ui/shared/RevisionInformation.jsx 0.00% 9 Missing ⚠️
ui/job-view/pushes/PushHeader.jsx 76.47% 7 Missing and 1 partial ⚠️
ui/job-view/details/summary/SummaryPanel.jsx 0.00% 7 Missing ⚠️
ui/intermittent-failures/BugDetailsView.jsx 0.00% 5 Missing ⚠️
... and 69 more
Additional details and impacted files
@@            Coverage Diff             @@
##           master    #9138      +/-   ##
==========================================
+ Coverage   80.01%   81.16%   +1.15%     
==========================================
  Files         601      604       +3     
  Lines       32715    33822    +1107     
  Branches     3314     3240      -74     
==========================================
+ Hits        26178    27453    +1275     
+ Misses       6371     6215     -156     
+ Partials      166      154      -12     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@camd camd force-pushed the camd/eslint-to-biome branch from ea4679d to 70922f0 Compare December 28, 2025 21:11
@camd camd force-pushed the camd/eslint-to-biome branch from 70922f0 to 5a4b9eb Compare December 28, 2025 21:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants