
ESLint React

Composable ESLint rules for React and friends.
Table of Contents
Features
- 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, code editor responsiveness, and CI pipelines.
- Context-aware linting: Rules that understand the context of your code and project configuration to provide more accurate linting.
Public Packages
Modular ESLint Plugins
Unified ESLint Plugin
@eslint-react/eslint-plugin - A unified plugin that combines all individual plugins into one. Get complete, out-of-the-box rule coverage with instant feedback.
[!NOTE]
Don't know which one to use? See our FAQ for guidance.
Installation
[!NOTE]
ESLint React requires the following minimum versions:
- Node.js: 22.0.0
- ESLint: 10.3.0
- TypeScript: 5.0.0
Install
npm install --save-dev typescript-eslint @eslint-react/eslint-plugin
Setup
import eslintReact from "@eslint-react/eslint-plugin";
import eslintJs from "@eslint/js";
import { defineConfig } from "eslint/config";
import tseslint from "typescript-eslint";
export default defineConfig(
{
files: ["**/*.ts", "**/*.tsx"],
extends: [
eslintJs.configs.recommended,
tseslint.configs.recommended,
eslintReact.configs["recommended-typescript"],
],
languageOptions: {
parser: tseslint.parser,
parserOptions: {
projectService: true,
tsconfigRootDir: import.meta.dirname,
},
},
rules: {
"@eslint-react/no-missing-key": "warn",
},
},
);
Full Installation Guide โ
Presets
Bare Bones
x
Enable rules for React.
jsx
Enable rules for React Flavored JSX.
rsc
Enable rules for React Server Components.
dom
Enable rules for React DOM.
web-api
Enable rules for interacting with Web APIs.
naming-convention
Enable rules for naming conventions.
General Purpose
-
recommended
Enforce rules that are recommended by ESLint React for general-purpose React + React DOM projects.
This preset includes the x, jsx, rsc, dom, web-api, and naming-convention presets.
-
strict
Same as the recommended preset but enables additional strict rules.
TypeScript Specialized
-
recommended-typescript
Same as the recommended preset but disables rules that can be enforced by TypeScript.
-
recommended-type-checked
Same as the recommended-typescript preset but enables additional rules that require type information.
-
strict-typescript
Same as the strict preset but disables rules that can be enforced by TypeScript.
-
strict-type-checked
Same as the strict-typescript preset but enables additional rules that require type information.
Other
disable-jsx
Disable rules in the jsx preset.
disable-rsc
Disable rules in the rsc preset.
disable-dom
Disable rules in the dom preset.
disable-web-api
Disable rules in the web-api preset.
disable-naming-convention
Disable rules in the naming-convention preset.
disable-experimental
Disable rules that have an "๐งช Experimental" feature flag.
disable-type-checked
Disable rules that require type information.
disable-conflict-eslint-plugin-react
Disable rules in eslint-plugin-react that conflict with rules in our plugins.
disable-conflict-eslint-plugin-react-hooks
Disable rules in eslint-plugin-react-hooks that conflict with rules in our plugins.
off
Disable all rules in this plugin.
Full Presets List โ
Rules
Rules โ
FAQ
Frequently Asked Questions โ
Migration
Changelog
Changelog โ
Disclaimer
This project is not affiliated with Meta Platforms, Inc. or the facebook/react project or team, nor is it endorsed or sponsored by them.
This project is, and will remain, 90% of its code written by humans.
A huge thank you to our amazing sponsors who make this project possible.
Contributing
Contributions are welcome!
This project does not have contributing guidelines. Explore the repository to learn how to contribute.
License
This project is licensed under the MIT License - see the LICENSE file for details.