Skip to content

build(lint) replace xo with biome#16

Merged
indexzero merged 2 commits into
mainfrom
biome
Apr 1, 2026
Merged

build(lint) replace xo with biome#16
indexzero merged 2 commits into
mainfrom
biome

Conversation

@indexzero

@indexzero indexzero commented Apr 1, 2026

Copy link
Copy Markdown
Owner

What

Replace xo (ESLint wrapper, 340+ transitive deps) with Biome as the project linter and formatter.

Why

xo required eslint-disable comments throughout the codebase for spec-mandated snake_case fields and intentional await-in-loop patterns. Biome provides equivalent lint and formatting coverage as a single native binary with faster check times and no suppression comments needed.

Changes

  • Add biome.json (adapted from ecosystems-rebuilder.js config: single quotes, spaces, no trailing commas, 100-char line width)

  • Remove xo devDependency and xo.config.js

  • Strip all eslint-disable / eslint-enable comments from src/ and test/

  • Auto-fix formatting across 30 files (spacing, template literals, React hook dependencies, import organization)

  • Update pnpm lint / pnpm lint:fix scripts to use biome check

  • pnpm test — all 90 tests pass

  • pnpm lint — 0 errors, 3 warnings (idiomatic while ((match = regex.exec())) assign-in-expression)

  • Verify CI passes

indexzero and others added 2 commits April 1, 2026 02:55
xo pulls in 340+ transitive deps and fights the codebase on camelCase
and await-in-loop. Biome gives the same formatting and lint coverage
with a single native binary, no eslint-disable comments, and faster
check times.

- Add biome.json adapted from ecosystems-rebuilder.js config
- Remove xo devDependency and xo.config.js
- Strip all eslint-disable comments from src/ and test/
- Auto-fix formatting (spacing, template literals, hook deps)
- Update CLAUDE.md linting section
- All 90 tests pass, 0 lint errors

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Separate linting from the test matrix so format and lint failures
surface as their own check badge instead of running redundantly on
both Node 20 and 22. Tests no longer block on lint and vice versa.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@indexzero
indexzero merged commit c65d27b into main Apr 1, 2026
3 checks passed
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.

1 participant