feat(eslint-plugin-react-hooks): Add reactCompiler option to suppress memoization warnings #35579
+180
−65
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.
Fixes part of #35499
This PR helps detect when React Compiler is enabled, allowing
eslint-plugin-react-hooksto bypass unnecessaryuseCallback/useMemowarnings.When React Compiler is enabled, it automatically memoizes components, making manual memoization with
useCallbackanduseMemounnecessary. However, the ESLint plugin was still warning about functions and objects that "change on every render" and suggesting these manual optimizations.This PR adds a
reactCompilerconfiguration option that can be set either:rules: { 'react-hooks/exhaustive-deps': ['warn', { reactCompiler: true }] }settings: { reactCompiler: true }When enabled, the plugin skips warnings about constructions that invalidate on every render, while still checking for other dependency issues like missing dependencies.
How did you test this change?
reactCompiler: truevia rule optionsreactCompiler: truevia settingsreactCompiler: true, unnecessary memoization warnings are suppressedyarn lincyarn prettier