Skip to content

chore(lint): drop the unused react eslint plugins - #27

Merged
frantuma merged 1 commit into
mainfrom
frantuma/drop-unused-eslint-plugins
Sep 11, 2026
Merged

frantuma merged 1 commit into
mainfrom
frantuma/drop-unused-eslint-plugins

Conversation

@frantuma

Copy link
Copy Markdown
Member

Removes two ESLint plugins that were imported but never used. Small on its own, and it is what unblocks the eslint 10 upgrade that the open deps-dev PR (#4) cannot currently install.

They were dead

eslint.config.js imported both plugins at the top and never referenced either again:

import eslintPluginReact from 'eslint-plugin-react';
import eslintPluginJsxA11y from 'eslint-plugin-jsx-a11y';

Neither identifier appears anywhere else in the file, no react/ or jsx-a11y/ rule is configured in any config block, and the repository contains zero .tsx/.jsx files. They cost 37 packages in the tree and 569 lines of lockfile.

They block eslint 10

Both cap their eslint peer range at 9, which is the ERESOLVE that makes every installing job on #4 fail:

peer eslint@"^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9" from eslint-plugin-jsx-a11y@6.10.2

Everything we keep already accepts eslint 10 — typescript-eslint and eslint-plugin-import-x are both ^8.57.0 || ^9.0.0 || ^10.0.0, @eslint/js@10 is ^10.0.0, eslint-config-prettier is >=7, eslint-plugin-prettier is >=8. eslint-plugin-mocha@12 goes further and requires eslint >=10.2.0, so mocha 12 and eslint 10 have to move together.

Verification

A/B dry run on this branch, which resolves the full tree without writing anything:

command result
npm i --dry-run --no-save eslint@^10.10.0 @eslint/js@^10.0.1 eslint-plugin-mocha@^12.0.2 exit 0, resolves
the same plus eslint-plugin-jsx-a11y@^6.10.2 exit 1, ERESOLVE

That isolates the two removed plugins as the sole blocker rather than inferring it from the CI log.

Lint output is unchanged — 14 problems, 0 errors, 14 warnings, the same findings as main, all @typescript-eslint/no-explicit-any. That is the expected result for removing plugins that were never registered in any config block: had they been contributing rules, the count would move.

No behaviour change, no rule configuration touched. The actual eslint 10 bump follows in a separate PR.

eslint.config.js imported eslint-plugin-react and eslint-plugin-jsx-a11y
and then never referenced either one. No react/ or jsx-a11y/ rule is
configured anywhere in the flat config, and the repository contains no
.tsx or .jsx files at all, so the two plugins have only ever been
inert weight: 37 packages of it.

They are also what blocks eslint 10. Both cap their eslint peer at 9,
which is the ERESOLVE that makes every installing job on the open
deps-dev pull request fail. Every plugin left behind already accepts
eslint 10, and eslint-plugin-mocha 12 in fact requires it.

Lint output is byte-identical before and after, 14 warnings and no
errors, which is the expected result for removing plugins that were
never registered.
@frantuma
frantuma merged commit 34748af into main Sep 11, 2026
9 checks passed
@frantuma
frantuma deleted the frantuma/drop-unused-eslint-plugins branch September 11, 2026 13:58
frantuma added a commit that referenced this pull request Sep 12, 2026
Replaces the Dependabot deps-dev pull request, which cannot install at
all: eslint 10 conflicts with eslint-plugin-jsx-a11y, whose peer range
stops at eslint 9. Those plugins were unused and went in #27, so the
tree resolves again.

Takes everything that request proposed except two packages.

typescript stays at 5.9.3. Dependabot offers 7.0.2, which is genuinely
latest, but typescript-eslint declares `>=4.8.4 <6.1.0` on every
release including its canary, so linting cannot accept it yet.

eslint-plugin-mocha stays on 11, moving 11.2.0 to 11.3.0 rather than
to 12. Version 12 drops no-sibling-hooks with no successor among its
33 rules and renames two more that are configured here, and buys
nothing: the 11 line accepts eslint >=9, so eslint 10 does not require
it.

The rest move as proposed: eslint and @eslint/js to 10, lerna to 10,
webpack-cli to 7, lint-staged to 17, commitlint to 21, globals to 17,
and patch bumps for babel-cli, core-js, dedent, rimraf, webpack and
the emscripten types.

Three of those majors are not covered by the test suite and were
exercised directly. commitlint 21 still loads the inline-plugin config
and enforces every rule in it. lint-staged 17 still runs eslint from
the pre-commit hook. lerna 10 pulls nx 23, which pins the same
vulnerable smol-toml as nx 22, so the override still applies and the
audit stays clean.
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