chore: bump eslint-plugin-react-hooks from 4.6.2 to 7.0.0 (#1744)

Bumps [eslint-plugin-react-hooks](https://github.com/facebook/react/tree/HEAD/packages/eslint-plugin-react-hooks) from 4.6.2 to 7.0.0. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/facebook/react/releases">eslint-plugin-react-hooks's releases</a>.</em></p> <blockquote> <h2>eslint-plugin-react-hooks@5.0.0 (Oct 11, 2024)</h2> <p>This release only contains <code>eslint-plugin-react-hooks</code>. Notably, new violations and support for ESLint v9 were added.</p> <h2><code>eslint-plugin-react-hooks</code></h2> <ul> <li><strong>New Violations:</strong> Component names now need to start with an uppercase letter instead of a non-lowercase letter. This means <code>_Button</code> or <code>_component</code> are no longer valid. (<a href="https://github.com/kassens"><code>@​kassens</code></a>) in <a href="https://redirect.github.com/facebook/react/pull/25162">#25162</a> For example, in <pre lang="tsx"><code>function _Component() { useState() ^^^^^^^^ A React Hook &quot;useState&quot; is called in function &quot;_Component&quot; which is neither a Component nor a custom React Hook function. } </code></pre> <code>_Component</code> should be renamed to <code>Component</code>.</li> </ul> <ul> <li>Add support for ESLint v9. (<a href="https://github.com/eps1lon"><code>@​eps1lon</code></a> in <a href="https://redirect.github.com/facebook/react/pull/28773">#28773</a>)</li> <li>Consider dispatch from <code>useActionState</code> stable. (<a href="https://github.com/eps1lon"><code>@​eps1lon</code></a> in <a href="https://redirect.github.com/facebook/react/pull/29665">#29665</a>)</li> <li>Accept <code>as</code> expression in callback. (<a href="https://github.com/StyleShit"><code>@​StyleShit</code></a> in <a href="https://redirect.github.com/facebook/react/pull/28202">#28202</a>)</li> <li>Accept <code>as</code> expressions in deps array. (<a href="https://github.com/StyleShit"><code>@​StyleShit</code></a> in <a href="https://redirect.github.com/facebook/react/pull/28189">#28189</a>)</li> <li>Treat <code>React.use()</code> the same as <code>use()</code>. (<a href="https://github.com/kassens"><code>@​kassens</code></a> in <a href="https://redirect.github.com/facebook/react/pull/27769">#27769</a>)</li> <li>Move <code>use()</code> lint to non-experimental. (<a href="https://github.com/kassens"><code>@​kassens</code></a> in <a href="https://redirect.github.com/facebook/react/pull/27768">#27768</a>)</li> <li>Support Flow <code>as</code> expressions. (<a href="https://github.com/cpojer"><code>@​cpojer</code></a> in <a href="https://redirect.github.com/facebook/react/pull/27590">#27590</a>)</li> <li>Allow <code>useEffect(fn, undefined)</code>. (<a href="https://github.com/kassens"><code>@​kassens</code></a> in <a href="https://redirect.github.com/facebook/react/pull/27525">#27525</a>)</li> <li>Disallow hooks in async functions. (<a href="https://github.com/acdlite"><code>@​acdlite</code></a> in <a href="https://redirect.github.com/facebook/react/pull/27045">#27045</a>)</li> <li>Rename experimental <code>useEvent</code> to <code>useEffectEvent</code>. (<a href="https://github.com/sebmarkbage"><code>@​sebmarkbage</code></a> in <a href="https://redirect.github.com/facebook/react/pull/25881">#25881</a>)</li> <li>Lint for presence of <code>useEvent</code> functions in dependency lists. (<a href="https://github.com/poteto"><code>@​poteto</code></a> in <a href="https://redirect.github.com/facebook/react/pull/25512">#25512</a>)</li> <li>Check <code>useEvent</code> references instead. (<a href="https://github.com/poteto"><code>@​poteto</code></a> in <a href="https://redirect.github.com/facebook/react/pull/25319">#25319</a>)</li> <li>Update <code>RulesOfHooks</code> with <code>useEvent</code> rules. (<a href="https://github.com/poteto"><code>@​poteto</code></a> in <a href="https://redirect.github.com/facebook/react/pull/25285">#25285</a>)</li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/facebook/react/blob/main/packages/eslint-plugin-react-hooks/CHANGELOG.md">eslint-plugin-react-hooks's changelog</a>.</em></p> <blockquote> <h2>7.0.0</h2> <p>This release slims down presets to just 2 configurations (<code>recommended</code> and <code>recommended-latest</code>), and all compiler rules are enabled by default.</p> <ul> <li><strong>Breaking:</strong> Removed <code>recommended-latest-legacy</code> and <code>flat/recommended</code> configs. The plugin now provides <code>recommended</code> (legacy and flat configs with all recommended rules), and <code>recommended-latest</code> (legacy and flat configs with all recommended rules plus new bleeding edge experimental compiler rules). (<a href="https://github.com/poteto"><code>@​poteto</code></a> in <a href="https://redirect.github.com/facebook/react/pull/34757">#34757</a>)</li> </ul> <h2>6.1.1</h2> <p><strong>Note:</strong> 6.1.0 accidentally allowed use of <code>recommended</code> without flat config, causing errors when used with ESLint v9's <code>defineConfig()</code> helper. This has been fixed in 6.1.1.</p> <ul> <li>Fix <code>recommended</code> config for flat config compatibility. The <code>recommended</code> config has been converted to flat config format. Non-flat config users should use <code>recommended-legacy</code> instead. (<a href="https://github.com/poteto"><code>@​poteto</code></a> in <a href="https://redirect.github.com/facebook/react/pull/34700">#34700</a>)</li> <li>Add <code>recommended-latest</code> and <code>recommended-latest-legacy</code> configs that include React Compiler rules. (<a href="https://github.com/poteto"><code>@​poteto</code></a> in <a href="https://redirect.github.com/facebook/react/pull/34675">#34675</a>)</li> <li>Remove unused <code>NoUnusedOptOutDirectives</code> rule. (<a href="https://github.com/poteto"><code>@​poteto</code></a> in <a href="https://redirect.github.com/facebook/react/pull/34703">#34703</a>)</li> <li>Remove <code>hermes-parser</code> and dependency. (<a href="https://github.com/poteto"><code>@​poteto</code></a> in <a href="https://redirect.github.com/facebook/react/pull/34719">#34719</a>)</li> <li>Remove <code>@babel/plugin-proposal-private-methods</code> dependency. (<a href="https://github.com/ArnaudBarre"><code>@​ArnaudBarre</code></a> and <a href="https://github.com/josephsavona"><code>@​josephsavona</code></a> in <a href="https://redirect.github.com/facebook/react/pull/34715">#34715</a>)</li> <li>Update for Zod v3/v4 compatibility. (<a href="https://github.com/kolvian"><code>@​kolian</code></a> and <a href="https://github.com/josephsavona"><code>@​josephsavona</code></a> in <a href="https://redirect.github.com/facebook/react/pull/34717">#34717</a>)</li> </ul> <h2>6.1.0</h2> <p><strong>Note:</strong> Version 6.0.0 was mistakenly released and immediately deprecated and untagged on npm. This is the first official 6.x major release and includes breaking changes.</p> <ul> <li><strong>Breaking:</strong> Require Node.js 18 or newer. (<a href="https://github.com/michaelfaith"><code>@​michaelfaith</code></a> in <a href="https://redirect.github.com/facebook/react/pull/32458">#32458</a>)</li> <li><strong>Breaking:</strong> Flat config is now the default <code>recommended</code> preset. Legacy config moved to <code>recommended-legacy</code>. (<a href="https://github.com/michaelfaith"><code>@​michaelfaith</code></a> in <a href="https://redirect.github.com/facebook/react/pull/32457">#32457</a>)</li> <li><strong>New Violations:</strong> Disallow calling <code>use</code> within try/catch blocks. (<a href="https://github.com/poteto"><code>@​poteto</code></a> in <a href="https://redirect.github.com/facebook/react/pull/34040">#34040</a>)</li> <li><strong>New Violations:</strong> Disallow calling <code>useEffectEvent</code> functions in arbitrary closures. (<a href="https://github.com/jbrown215"><code>@​jbrown215</code></a> in <a href="https://redirect.github.com/facebook/react/pull/33544">#33544</a>)</li> <li>Handle <code>React.useEffect</code> in addition to <code>useEffect</code> in rules-of-hooks. (<a href="https://github.com/Ayc0"><code>@​Ayc0</code></a> in <a href="https://redirect.github.com/facebook/react/pull/34076">#34076</a>)</li> <li>Added <code>react-hooks</code> settings config option that to accept <code>additionalEffectHooks</code> that are used across exhaustive-deps and rules-of-hooks rules. (<a href="https://github.com/jbrown215"><code>@​jbrown215</code></a>) in <a href="https://redirect.github.com/facebook/react/pull/34497">#34497</a></li> </ul> <h2>6.0.0</h2> <p>Accidentally released. See 6.1.0 for the actual changes.</p> <h2>5.2.0</h2> <ul> <li>Support flat config (<a href="https://github.com/michaelfaith"><code>@​michaelfaith</code></a> in <a href="https://redirect.github.com/facebook/react/pull/30774">#30774</a>)</li> <li>Convert the plugin to TypeScript and provide package type declarations (<a href="https://github.com/michaelfaith"><code>@​michaelfaith</code></a> in <a href="https://redirect.github.com/facebook/react/pull/32279">#32279</a>, <a href="https://redirect.github.com/facebook/react/pull/32283">#32283</a>, <a href="https://redirect.github.com/facebook/react/pull/32240">#32240</a>, <a href="https://redirect.github.com/facebook/react/pull/32400">#32400</a> and <a href="https://github.com/poteto"><code>@​poteto</code></a> in <a href="https://redirect.github.com/facebook/react/pull/32420">#32420</a>)</li> <li>Fix false positive error in components with <code>do</code>/<code>while</code> loops (<a href="https://github.com/tyxla"><code>@​tyxla</code></a> in <a href="https://redirect.github.com/facebook/react/pull/31720">#31720</a>)</li> <li>Detect issues in class properties (<a href="https://github.com/mjesun"><code>@​mjesun</code></a> &amp; <a href="https://github.com/ecraig12345"><code>@​ecraig12345</code></a> in <a href="https://redirect.github.com/facebook/react/pull/31823">#31823</a>)</li> </ul> <h2>5.1.0</h2> <ul> <li>Add support for <code>do</code>/<code>while</code> loops (<a href="https://github.com/tyxla"><code>@​tyxla</code></a> in <a href="https://redirect.github.com/facebook/react/pull/28714">#28714</a>)</li> <li>Fix error when callback argument is an identifier with an <code>as</code> expression (<a href="https://github.com/mskelton"><code>@​mskelton</code></a> in <a href="https://redirect.github.com/facebook/react/pull/31119">#31119</a>)</li> </ul> <h2>5.0.0</h2> <ul> <li><strong>New Violations:</strong> Component names now need to start with an uppercase letter instead of a non-lowercase letter. This means <code>_Button</code> or <code>_component</code> are no longer valid. (<a href="https://github.com/kassens"><code>@​kassens</code></a>) in <a href="https://redirect.github.com/facebook/react/pull/25162">#25162</a></li> </ul> <ul> <li>Consider dispatch from <code>useActionState</code> stable. (<a href="https://github.com/eps1lon"><code>@​eps1lon</code></a> in <a href="https://redirect.github.com/facebook/react/pull/29665">#29665</a>)</li> <li>Add support for ESLint v9. (<a href="https://github.com/eps1lon"><code>@​eps1lon</code></a> in <a href="https://redirect.github.com/facebook/react/pull/28773">#28773</a>)</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li>See full diff in <a href="https://github.com/facebook/react/commits/HEAD/packages/eslint-plugin-react-hooks">compare view</a></li> </ul> </details> <br /> [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=eslint-plugin-react-hooks&package-manager=npm_and_yarn&previous-version=4.6.2&new-version=7.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Gar <gar+gh@danger.computer>

dependabot[bot] committed Oct 14, 2025 at 10:13 UTC 3c27bfb4a4afc0dda06b3ed01b98de54dde38a4f
3 files changed +81 -16
.eslintrc.js
+1 -9
@@ -4,15 +4,7 @@ module.exports = {
4 root: true,
5 ignorePatterns: ['.cache/', 'public/'],
6 plugins: ['primer-react'], // github plugin now comes from flat config
7 - extends: [
8 - '@npmcli',
9 - 'react-app',
10 - 'eslint:recommended',
11 - 'plugin:react/recommended',
12 - // 'plugin:github/react', // REMOVED: now handled by flat config
13 - 'plugin:react-hooks/recommended',
14 - 'prettier',
15 - ],
7 + extends: ['@npmcli', 'react-app', 'eslint:recommended', 'plugin:react/recommended', 'prettier'],
8 rules: {
9 'max-len': 'off',
10 'react/prop-types': 'off',
package-lock.json
+79 -6
@@ -74,7 +74,7 @@
74 "eslint-plugin-primer-react": "^8.0.0",
75 "eslint-plugin-promise": "^7.0.0",
76 "eslint-plugin-react": "^7.33.2",
77 - "eslint-plugin-react-hooks": "^4.6.0",
77 + "eslint-plugin-react-hooks": "^7.0.0",
78 "identity-obj-proxy": "^3.0.0",
79 "jest": "^30.0.0",
80 "jest-environment-jsdom": "^30.0.0",
@@ -17952,6 +17952,19 @@
17952 "eslint": "^8.0.0"
17953 }
17954 },
17955 + "node_modules/eslint-config-react-app/node_modules/eslint-plugin-react-hooks": {
17956 + "version": "4.6.2",
17957 + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz",
17958 + "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==",
17959 + "dev": true,
17960 + "license": "MIT",
17961 + "engines": {
17962 + "node": ">=10"
17963 + },
17964 + "peerDependencies": {
17965 + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0"
17966 + }
17967 + },
17968 "node_modules/eslint-import-context": {
17969 "version": "0.1.8",
17970 "resolved": "https://registry.npmjs.org/eslint-import-context/-/eslint-import-context-0.1.8.tgz",
@@ -19404,15 +19417,23 @@
19417 }
19418 },
19419 "node_modules/eslint-plugin-react-hooks": {
19407 - "version": "4.6.2",
19408 - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz",
19409 - "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==",
19420 + "version": "7.0.0",
19421 + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-7.0.0.tgz",
19422 + "integrity": "sha512-fNXaOwvKwq2+pXiRpXc825Vd63+KM4DLL40Rtlycb8m7fYpp6efrTp1sa6ZbP/Ap58K2bEKFXRmhURE+CJAQWw==",
19423 + "dev": true,
19424 "license": "MIT",
19425 + "dependencies": {
19426 + "@babel/core": "^7.24.4",
19427 + "@babel/parser": "^7.24.4",
19428 + "hermes-parser": "^0.25.1",
19429 + "zod": "^3.22.4 || ^4.0.0",
19430 + "zod-validation-error": "^3.0.3 || ^4.0.0"
19431 + },
19432 "engines": {
19412 - "node": ">=10"
19433 + "node": ">=18"
19434 },
19435 "peerDependencies": {
19415 - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0"
19436 + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0"
19437 }
19438 },
19439 "node_modules/eslint-plugin-react/node_modules/brace-expansion": {
@@ -23058,6 +23079,18 @@
23079 "eslint": "^7.1.0"
23080 }
23081 },
23082 + "node_modules/gatsby/node_modules/eslint-plugin-react-hooks": {
23083 + "version": "4.6.2",
23084 + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz",
23085 + "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==",
23086 + "license": "MIT",
23087 + "engines": {
23088 + "node": ">=10"
23089 + },
23090 + "peerDependencies": {
23091 + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0"
23092 + }
23093 + },
23094 "node_modules/gatsby/node_modules/eslint-scope": {
23095 "version": "5.1.1",
23096 "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
@@ -24200,6 +24233,23 @@
24233 "tslib": "^2.0.3"
24234 }
24235 },
24236 + "node_modules/hermes-estree": {
24237 + "version": "0.25.1",
24238 + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz",
24239 + "integrity": "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==",
24240 + "dev": true,
24241 + "license": "MIT"
24242 + },
24243 + "node_modules/hermes-parser": {
24244 + "version": "0.25.1",
24245 + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.25.1.tgz",
24246 + "integrity": "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==",
24247 + "dev": true,
24248 + "license": "MIT",
24249 + "dependencies": {
24250 + "hermes-estree": "0.25.1"
24251 + }
24252 + },
24253 "node_modules/history": {
24254 "version": "5.3.0",
24255 "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz",
@@ -44301,6 +44351,29 @@
44351 "node": ">=4"
44352 }
44353 },
44354 + "node_modules/zod": {
44355 + "version": "4.1.12",
44356 + "resolved": "https://registry.npmjs.org/zod/-/zod-4.1.12.tgz",
44357 + "integrity": "sha512-JInaHOamG8pt5+Ey8kGmdcAcg3OL9reK8ltczgHTAwNhMys/6ThXHityHxVV2p3fkw/c+MAvBHFVYHFZDmjMCQ==",
44358 + "dev": true,
44359 + "license": "MIT",
44360 + "funding": {
44361 + "url": "https://github.com/sponsors/colinhacks"
44362 + }
44363 + },
44364 + "node_modules/zod-validation-error": {
44365 + "version": "4.0.2",
44366 + "resolved": "https://registry.npmjs.org/zod-validation-error/-/zod-validation-error-4.0.2.tgz",
44367 + "integrity": "sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==",
44368 + "dev": true,
44369 + "license": "MIT",
44370 + "engines": {
44371 + "node": ">=18.0.0"
44372 + },
44373 + "peerDependencies": {
44374 + "zod": "^3.25.0 || ^4.0.0"
44375 + }
44376 + },
44377 "node_modules/zwitch": {
44378 "version": "2.0.4",
44379 "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz",
package.json
+1 -1
@@ -93,7 +93,7 @@
93 "eslint-plugin-primer-react": "^8.0.0",
94 "eslint-plugin-promise": "^7.0.0",
95 "eslint-plugin-react": "^7.33.2",
96 - "eslint-plugin-react-hooks": "^4.6.0",
96 + "eslint-plugin-react-hooks": "^7.0.0",
97 "identity-obj-proxy": "^3.0.0",
98 "jest": "^30.0.0",
99 "jest-environment-jsdom": "^30.0.0",