Skip to content

adrian/oxlint-2026-04-17#5110

Open
adrians5j wants to merge 5 commits intonextfrom
adrian/oxlint-2026-04-17
Open

adrian/oxlint-2026-04-17#5110
adrians5j wants to merge 5 commits intonextfrom
adrian/oxlint-2026-04-17

Conversation

@adrians5j
Copy link
Copy Markdown
Member

@adrians5j adrians5j commented Apr 17, 2026

What changed

The project linter has been migrated from ESLint to Oxlint, a high-performance Rust-based linter. A new .oxlintrc.json config is introduced, and all CI steps, scripts, and developer tooling references are updated to use `yarn lint` (oxlint) instead of `yarn eslint`.

Why

Oxlint is significantly faster than ESLint (10,222 files linted in ~1–4 seconds vs. several seconds to minutes with ESLint). It implements the vast majority of the rules used in this project natively in Rust, with no configuration changes needed for developers. The project already had `oxlint` installed and a `lint` script wired up — this PR completes the migration.

How

  • Ran `npx @oxlint/migrate` against `eslint.config.mjs` to generate `.oxlintrc.json` with 37 rules.
  • Mapped ESLint plugins to oxlint equivalents: `@typescript-eslint` → native `typescript` plugin, `eslint-plugin-react` → native `react` plugin; `eslint-plugin-lodash` and `@vitest/eslint-plugin` remain as `jsPlugins` (lodash has no native equivalent; vitest rules were all `off` so the JS plugin was dropped entirely).
  • Resolved two oxlint-specific findings: moved an `eslint-disable-next-line` comment in `packages/wcp/src/types.ts` to the correct line (oxlint reports duplicate enum values at the first occurrence, not the second), and added a `react/display-name` disable comment in a test HOC in `packages/react-composition`.
  • Updated `system:verify`, CI workflows (`push.yml`, `pullRequests.yml`), WAC source files, and `CLAUDE.md` to reference `yarn lint` / `yarn lint:fix`.

Changelog

Migrated Linter from ESLint to Oxlint

The project now uses Oxlint as its primary linter. Linting across the full codebase (~10,000 files) completes in under 5 seconds. All existing lint rules are preserved; the `yarn lint` and `yarn lint:fix` commands replace `yarn eslint` in CI and local workflows.

Squash Merge Commit

```
chore: migrate linter from ESLint to Oxlint
```

@adrians5j adrians5j added this to the 5.3.0 milestone Apr 17, 2026
# Conflicts:
#	.github/workflows/pullRequests.yml
#	.github/workflows/wac/pullRequests.wac.ts
@adrians5j adrians5j modified the milestones: 5.3.0, 6.3.0 Apr 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant