React-specific linting rules for ESLint
9.3k
Stars
2.7k
Forks
355
Open issues
30
Contributors
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.
Inferred from signals mentioned in the README (tests, CI, type safety) — not a review of the actual code.
AI's overall editorial judgment — not an average of the bars above, can weigh other factors too.
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.
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 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.
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.
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.
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.
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.
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
- 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.
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.
Newsletter
Get analyses like this every Monday
Free weekly digest of the most interesting open-source discoveries.
Languages
Information
- Language
- JavaScript
- License
- MIT
- Last updated
- 2mo ago
- Created
- 141mo ago
- Analyzed with
- anthropic/claude-haiku-4-5
Stars over time
Contributors over time
Top 100 contributors only — repos with more will plateau at 100.
Open issues
Results of weekly scheduled smoke test
[Bug]: `react/no-children-prop` does not report function as `children` in the child position when `allowFunctions` is `true`
no-danger does not report dangerouslySetInnerHTML usage in React.createElement
Rule proposal: Disallow `__html`
no-unstable-nested-components does not detect components starting with underscore
Similar repos
nickjvandyke/eslint-plugin-react-you-might-not-need-an-effect
An ESLint plugin that detects unnecessary React useEffect hooks, helping...
gajus/eslint-plugin-jsdoc
eslint-plugin-jsdoc provides JSDoc-specific linting rules for ESLint, enabling...
eslint-community/eslint-plugin-security
eslint-plugin-security provides ESLint rules to identify potential security...
| Repository | Stars | Week Δ | Language | Score | Updated |
|---|---|---|---|---|---|
|
|
9.3k | +2 | JavaScript | 8/10 | 2mo ago |
|
|
1.8k | — | JavaScript | 8/10 | 2w ago |
|
|
27.4k | — | JavaScript | 9/10 | 15h ago |
|
|
1.2k | — | JavaScript | 8/10 | 11h ago |
|
|
2.4k | — | JavaScript | 7/10 | 3w ago |
|
|
5.9k | — | JavaScript | 8/10 | 6d ago |
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.
Covers JSX accessibility rules that eslint-plugin-react does not focus on. Again complementary — often installed alongside. No direct overlap.
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.
Core ESLint handles generic JS rules. eslint-plugin-react is strictly additive, covering React/JSX patterns that core ESLint cannot address. Not competing.
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.