feat!: migrate to ESLint 10, TypeScript 6.0, and new plugin ecosystem (v7.0.0)#1
Merged
Conversation
Wave 1 of dependency updates - all safe minor and patch bumps: - @eslint-community/eslint-plugin-eslint-comments: 4.6.0 -> 4.7.2 - @stylistic/eslint-plugin: 5.9.0 -> 5.10.0 - eslint-plugin-promise: 7.2.1 -> 7.3.0 (adds ESLint 10 peer dep support) - eslint-plugin-react-hooks: 7.0.1 -> 7.1.1 (adds ESLint 10 peer dep support) - eslint-plugin-sonarjs: 4.0.0 -> 4.0.3 - typescript-eslint: 8.56.1 -> 8.60.1 (extends TS support to <6.1.0) - globals: 17.3.0 -> 17.6.0 - react (dev): 19.2.4 -> 19.2.7 - @types/node (dev): 25.3.3 -> 25.9.2 - @types/react (dev): 19.2.14 -> 19.2.17 All updates verified passing lint.
BREAKING CHANGE: ESLint 10+, Node >=20.19.0, new plugin ecosystem
Wave 2 of dependency updates - major version bump to 7.0.0:
- ESLint: ^9.39.3 -> ^10.4.1 (dev and @eslint/js dep)
- eslint-plugin-import -> eslint-plugin-import-x@^4.16.2
- eslint-plugin-react -> @eslint-react/eslint-plugin@^5.8.13
- eslint-plugin-jsx-a11y -> eslint-plugin-jsx-a11y-x@^0.2.0
- eslint-plugin-react-you-might-not-need-an-effect: ^0.9.1 -> ^1.0.0
- engines: Node >=20.19.0 (dropped 18 and 20.x support)
- peerDependencies.eslint: >=10
Config changes:
- es6/index.js: switched to import-x plugin with flatConfigs.recommended
- es6/rules.js: all import/ -> import-x/ rule prefixes
- react/index.js: @eslint-react recommended config + jsx-a11y-x + hooks
- react/rules.js: @eslint-react/ rule prefixes, @stylistic/jsx-self-closing-comp, jsx-a11y-x/ prefixes
- typescript/index.js: added import-x plugin registration
- typescript/rules.js: import/ -> import-x/ rule prefix
- test/test.js: added { cause: error } for ESLint 10 preserve-caught-error rule
Wave 3 of dependency updates: - eslint-plugin-jsdoc: ^62.7.1 -> ^63.0.2 - eslint-plugin-unicorn: ^63.0.0 -> ^64.0.0 - typescript (dev): ^5.9.3 -> ^6.0.3
Node 20 reached EOL on April 30, 2026. Package engine now requires >=20.19.0, so remove 20.x from test matrix and update dependency-check and publish jobs to Node 22 LTS.
Node 26.0.0 was released May 5, 2026 as the Current release. Adding to the test matrix ensures compatibility is caught early before it enters Active LTS in October 2026.
- Add comprehensive rule prefix migration guide to CHANGELOG - Backfill missing 6.x version history - Add Requirements section to README (Node >=20.19.0, ESLint >=10) - Update install command from eslint@9 to eslint@10
- actions/checkout: v5 → v6.0.3 (9f69817) - actions/setup-node: v5 → v6.4.0 (48b55a0) - github/codeql-action: v4 → v4.36.2 (1a818fd) All actions now pinned by immutable commit SHA with version comments for supply chain security.
- Bump version from 5.0.0 to 7.0.0 - ESLint 9+ → 10+ references - Replace old plugin names with new ones (import-x, @eslint-react, jsx-a11y-x) - Update CI matrix to 22.x/24.x/26.x - Mention SHA-pinned actions - Replace inline version history with CHANGELOG link - Add plugin rename note to Common Tasks
Uses softprops/action-gh-release@v3.0.0 to create a GitHub Release automatically when a new version is published to NPM. Release tag and name are derived from package.json version. Release notes auto-generated from merged PRs.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Complete dependency overhaul bringing
eslint-config-shaunburdickto v7.0.0 with ESLint 10, TypeScript 6.0, and a fully replaced plugin ecosystem.Breaking Changes
react/→@eslint-react/,import/→import-x/,jsx-a11y/→jsx-a11y-x/Plugin Replacements
eslint-plugin-importeslint-plugin-import-x@4.16.2eslint-plugin-react@eslint-react/eslint-plugin@5.8.13eslint-plugin-jsx-a11yeslint-plugin-jsx-a11y-x@0.2.0Major Updates
@eslint/jstypescript-eslinteslint-plugin-jsdoceslint-plugin-unicorneslint-plugin-react-hookseslint-plugin-react-you-might-not-need-an-effectConfig Migration Details
flatConfigs.recommended, allimport/→import-x/rule prefixesreact/self-closing-comp→@stylistic/jsx-self-closing-compconsistent-type-specifier-stylerule{ cause: error }for ESLint 10's newpreserve-caught-errorruleTesting
All changes verified passing lint (zero errors, zero warnings).