Skip to content

A series of composable ESLint rules for React and friends.

License

Notifications You must be signed in to change notification settings

Rel1cx/eslint-react

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

logo

ESLint React

Version Downloads

A series of 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.
  • Context-aware Linting: Rules that understand the context of your code and project configuration to provide more accurate linting.

Public Packages

Modular

Unified

Installation

Note

ESLint React requires the following minimum versions:

  • Node.js: 20.19.0
  • ESLint: 9.24.0
  • TypeScript: 4.9.5

Install

npm install --save-dev typescript-eslint @eslint-react/eslint-plugin

Setup

// 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",
  },
});

Full Installation Guide ↗

Presets

Bare Bones

  • x
    Enable rules for "react".
  • dom
    Enable rules for "react-dom".
  • web-api
    Enable rules for interacting with Web APIs.

General Purpose

  • recommended
    Enforce rules that are recommended by ESLint React for general purpose React + React DOM projects.
    This preset includes the x, dom, and web-api presets.

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.

Other

  • disable-dom
    Disable rules in the dom preset.
  • disable-web-api
    Disable rules in the web-api preset.
  • disable-type-checked
    Disable rules that require type information.
  • off
    Disable all rules in this plugin except for debug rules.

Full Presets List ↗

Rules

Rules Overview ↗

FAQ

Frequently Asked Questions ↗

Roadmap

Contributing

Contributions are welcome!

Please follow our contributing guidelines.

License

This project is licensed under the MIT License - see the LICENSE file for details.