A series of composable ESLint rules for React and friends.
- Modern: First-class support for TypeScript, React 19, and more.
- Flexible: Fully customizable rule severity levels, allowing you to enforce or relax rules as needed.
- Performant: Built with performance in mind, optimized for large codebases.
- Context-aware Linting: Rules that understand the context of your code and project configuration to provide more accurate linting.
-
eslint-plugin-react-x
- X Rules (renderer-agnostic, compatible with x-platform). -
eslint-plugin-react-dom
- DOM specific rules for React DOM. -
eslint-plugin-react-web-api
- Rules for interacting with Web APIs. -
eslint-plugin-react-hooks-extra
- Extra React Hooks rules. -
eslint-plugin-react-naming-convention
- Naming convention rules.
-
@eslint-react/eslint-plugin
- A unified plugin that combines all individual plugins into one.
[!NOTE]
ESLint React requires the following minimum versions:
- Node.js: 18.18.0
- ESLint: 8.57.0
- TypeScript: 4.9.5
npm install --save-dev typescript-eslint @eslint-react/eslint-plugin
// eslint.config.js
// @ts-check
import eslintJs from "@eslint/js";
import eslintReact from "@eslint-react/eslint-plugin";
import tseslint from "typescript-eslint";
export default tseslint.config({
files: ["**/*.ts", "**/*.tsx"],
// Extend recommended rule sets from:
// 1. ESLint JS's recommended rules
// 2. TypeScript ESLint recommended rules
// 3. ESLint React's recommended-typescript rules
extends: [
eslintJs.configs.recommended,
tseslint.configs.recommended,
eslintReact.configs["recommended-typescript"],
],
// Configure language/parsing options
languageOptions: {
// Use TypeScript ESLint parser for TypeScript files
parser: tseslint.parser,
parserOptions: {
// Enable project service for better TypeScript integration
projectService: true,
tsconfigRootDir: import.meta.dirname,
},
},
// Custom rule overrides (modify rule levels or disable rules)
rules: {
"@eslint-react/no-missing-key": "warn",
},
});
-
x
Enable rules for"react"
. -
dom
Enable rules for"react-dom"
. -
web-api
Enable rules for interacting with Web APIs.
-
recommended
Enforce rules that are recommended by ESLint React for general purpose React + React DOM projects.
This preset includes thex
,dom
, andweb-api
presets.
-
recommended-typescript
Same as therecommended
preset but disables rules that can be enforced by TypeScript. -
recommended-type-checked
Same as therecommended-typescript
preset but enables additional rules that require type information.
-
disable-dom
Disable rules in thedom
preset. -
disable-web-api
Disable rules in theweb-api
preset. -
disable-type-checked
Disable rules that require type information. -
off
Disable all rules in this plugin except for debug rules.
Contributions are welcome!
Please follow our contributing guidelines.
This project is licensed under the MIT License - see the LICENSE file for details.