logoESLint React

Migrating from eslint-plugin-react-hooks

Complete guide for migrating from eslint-plugin-react-hooks to ESLint React

This guide provides a comprehensive comparison between eslint-plugin-react-hooks and ESLint React rules to help you migrate your existing configuration.

Overview

ESLint React provides direct equivalents for the core rules in eslint-plugin-react-hooks, including both the classic hooks linting rules (exhaustive-deps, rules-of-hooks) and many of the newer React Compiler diagnostic rules introduced in the latest versions of the plugin.

Rules specific to the React Compiler runtime (such as config, gating, globals, incompatible-library, and preserve-manual-memoization) do not have equivalents in ESLint React, as they validate compiler-specific configuration and behavior.

Rule Comparison Table

Legend

  • ๐Ÿ”ง Fully supported - Rule is supported, and has an auto-fix
  • โœ… Mostly supported - Rule is supported but doesn't have an auto-fix
  • ๐ŸŸก Partial support - Similar but not identical functionality
  • ๐Ÿงช Experimental - Rule is supported but marked as experimental
  • โŒ Not supported - No equivalent rule

Table

The following table compares all rules from eslint-plugin-react-hooks with their ESLint React equivalents:

eslint-plugin-react-hooks Rule NameNew Rule NamePrev StatusStatus
exhaustive-depsexhaustive-depsโœ…๐Ÿ”ง
rules-of-hooksrules-of-hooksโœ…๐Ÿ”ง
component-hook-factoriescomponent-hook-factoriesโœ…โœ…
configโœ…โŒ
error-boundarieserror-boundariesโœ…โœ…
gatingโœ…โŒ
globalsโœ…โŒ
immutabilityimmutabilityโœ…๐ŸŸก ๐Ÿงช
incompatible-libraryโœ…โŒ
preserve-manual-memoizationโœ…โŒ
puritypurityโœ…๐ŸŸก ๐Ÿงช
refsrefsโœ…๐ŸŸก ๐Ÿงช
set-state-in-effectset-state-in-effectโœ…โœ…
set-state-in-renderset-state-in-renderโœ…๐Ÿงช
static-componentsno-nested-component-definitionsโœ…โœ…
unsupported-syntaxunsupported-syntaxโœ…โœ…
use-memouse-memoโœ…โœ…

ESLint React Column

  • Rule names link to ESLint React documentation
  • Multiple rules separated by + indicate that together they provide equivalent functionality
  • Rules marked ๐Ÿงช are experimental and their behavior may change in future releases
  • Rules marked โŒ are React Compiler-specific and have no equivalent in ESLint React