jsx-eslint

jsx-eslint/eslint-plugin-react

JavaScript MIT Dev Tools

React-specific linting rules for ESLint

9.3k stars
2.7k forks
slow
GitHub +2 / week

9.3k

Stars

2.7k

Forks

355

Open issues

30

Contributors

v7.37.5 03 Apr 2025

AI Analysis

eslint-plugin-react provides React-specific linting rules for ESLint, helping developers catch common mistakes in React code and enforce best practices. It serves teams and individual developers building React applications who want automated code quality checks integrated into their build pipelines. This is a specialized tool for React developers, not a general-purpose linter—it requires ESLint and is only useful for React projects.

Dev Tools Developer Tool Discovery value: 2/10
Documentation 8/10
Activity 7/10
Community 9/10
Code quality 5/10

Inferred from signals mentioned in the README (tests, CI, type safety) — not a review of the actual code.

Overall score 8/10

AI's overall editorial judgment — not an average of the bars above, can weigh other factors too.

eslint-plugin react-linting code-quality jsx-analysis static-analysis
Actively maintained Well documented MIT licensed Popular Niche/specialized use case Beginner friendly Production ready
Deep Analysis · Based on README and public signals
2w ago

eslint-plugin-react: The standard React linting plugin, now at a mature but slow-growth stage

eslint-plugin-react provides React-specific ESLint rules — covering JSX correctness, prop types, hooks usage patterns, accessibility hints, and component structure. It is used by virtually every React project that runs ESLint, making it one of the most widely deployed ESLint plugins in the JavaScript ecosystem. Built for React developers of all experience levels, it catches common mistakes early and enforces community best practices. Its relevance is being quietly challenged by the rise of TypeScript (which replaces some propTypes rules) and by newer, more focused plugins like eslint-plugin-react-hooks.

Origin

Created in December 2014, shortly after React's public release, it has tracked React's evolution from class components through hooks and the new JSX transform. It was transferred to the jsx-eslint GitHub org, signaling community stewardship rather than single-author ownership.

Growth

Growth was driven by React's own explosive adoption from 2015–2020. As React became the dominant frontend library, this plugin became a de facto standard included in most scaffolding tools (Create React App, Next.js defaults, etc.). Star growth has now plateaued — 1 star gained in 7 days — reflecting saturation: nearly everyone who uses React and ESLint already has it installed, so new discovery events are rare rather than indicating decline.

In production

npm download counts for eslint-plugin-react are among the highest in the JavaScript ecosystem — historically 20–30 million weekly downloads — making it one of the most widely installed ESLint plugins. It is included by default in many popular React boilerplates and frameworks. Adoption is extensively verified at scale.

Code analysis
Architecture

Appears to be a collection of individual ESLint rule modules, each targeting a specific React or JSX pattern. The README documents extensive shared settings (react version detection, component wrapper functions, prop wrapper functions) suggesting a well-structured shared context mechanism across rules. Likely uses AST traversal via ESLint's rule API. Supports both legacy .eslintrc and the new flat config (eslint.config.js) system.

Tests

Not documented in README, but given the project's age, community size, and the CI badge (GitHub Actions) present in the README, test coverage is likely substantial. Cannot confirm specific metrics from available metadata.

Maintenance

Last push was 2026-05-13, approximately 6 weeks before the evaluation date — indicating active maintenance. The project is under the jsx-eslint org (community governance), has a Tidelift subscription badge indicating funded maintenance, and has been continuously updated for over 11 years. Slow star growth does not indicate stagnation here.

Honest verdict

ADOPT IF: you are building any React project with ESLint — this is essentially a default dependency at this point and skipping it would be unusual. AVOID IF: you have fully migrated to a non-ESLint toolchain (e.g., Biome with sufficient React coverage) or if your TypeScript setup already handles the correctness concerns you care about and the remaining rules provide no value. MONITOR IF: you are tracking whether the plugin will fully support ESLint v9 flat config in all edge cases, or if the React team consolidates more rules into the official hooks plugin over time.

Independent dimensions

Mainstream potential

4/10

Technical importance

7/10

Adoption evidence

10/10

Risks
  • TypeScript adoption continues to erode the usefulness of propTypes-based rules, which represent a large fraction of the plugin's rule catalog — making parts of the plugin increasingly irrelevant for modern projects.
  • ESLint v9's flat config system requires migration effort; incomplete or delayed flat config support could cause friction for teams on the new config format.
  • The plugin relies on community maintainers via the jsx-eslint org; if key maintainers step back, response times for React version compatibility updates could slow.
  • Alternative all-in-one tools (Biome, oxc-based linters) may eventually bundle sufficient React-specific rules, reducing the need for this plugin as a separate dependency.
  • Near-zero new star growth may reflect ecosystem saturation, but it also means community energy and contribution momentum may be lower than it was in peak years.
Prediction

eslint-plugin-react will remain a stable, widely installed plugin for the foreseeable future, but its rule set will slowly shrink in practical relevance as TypeScript and official React tooling absorb more of its responsibilities. Maintenance will continue at a steady pace.

0 found this helpful

Newsletter

Get analyses like this every Monday

Free weekly digest of the most interesting open-source discoveries.

Languages

JavaScript
100%

Information

Language
JavaScript
License
MIT
Last updated
2mo ago
Created
141mo ago
Analyzed with
anthropic/claude-haiku-4-5

Stars over time

Loading…

Contributors over time

Top 100 contributors only — repos with more will plateau at 100.

Loading…

Similar repos

nickjvandyke

nickjvandyke/eslint-plugin-react-you-might-not-need-an-effect

An ESLint plugin that detects unnecessary React useEffect hooks, helping...

1.8k JavaScript Dev Tools
eslint

eslint/eslint

ESLint is a static code analysis tool for identifying and fixing problems in...

27.4k JavaScript Dev Tools
gajus

gajus/eslint-plugin-jsdoc

eslint-plugin-jsdoc provides JSDoc-specific linting rules for ESLint, enabling...

1.2k JavaScript Dev Tools
eslint-community

eslint-community/eslint-plugin-security

eslint-plugin-security provides ESLint rules to identify potential security...

2.4k JavaScript Security
import-js

import-js/eslint-plugin-import

eslint-plugin-import is an ESLint plugin that validates ES2015+ import/export...

5.9k JavaScript Dev Tools
vs. alternatives
eslint-plugin-react-hooks

Official React team plugin focused exclusively on hooks rules (rules-of-hooks, exhaustive-deps). Complementary rather than competing — most projects use both. The hooks plugin carries higher authority for hooks-specific rules.

eslint-plugin-jsx-a11y

Covers JSX accessibility rules that eslint-plugin-react does not focus on. Again complementary — often installed alongside. No direct overlap.

@typescript-eslint/eslint-plugin

TypeScript adoption has reduced the need for propTypes-related rules (a significant portion of eslint-plugin-react's rule set). Teams on TypeScript may enable fewer rules from this plugin over time.

eslint/js (eslint core)

Core ESLint handles generic JS rules. eslint-plugin-react is strictly additive, covering React/JSX patterns that core ESLint cannot address. Not competing.

Biome (formerly Rome)

Biome is building an all-in-one linter/formatter. If it adds comprehensive React rule support, it could reduce need for this plugin in projects adopting Biome — but currently its React rule coverage is far less complete.