logoESLint React

Third-Party Plugins

High-quality third-party React ESLint plugins that complement ESLint React

Under Construction

This page is under construction.

The following plugins cover areas not currently addressed by ESLint React and are recommended for specific use cases.

JSX Style

ESLint Stylistic (@stylistic/eslint-plugin) provides 19 JSX-specific rules, including:

RuleDescription
jsx-closing-bracket-locationEnforce closing bracket location in JSX
jsx-closing-tag-locationEnforce closing tag location for multiline JSX
jsx-curly-brace-presenceDisallow unnecessary curly braces around string literals
jsx-curly-spacingEnforce or disallow spaces inside JSX curly braces
jsx-equals-spacingEnforce or disallow spaces around = in JSX attributes
jsx-first-prop-new-lineEnforce first prop position in multiline JSX
jsx-indent-propsEnforce props indentation
jsx-max-props-per-lineLimit props per line
jsx-pascal-caseEnforce PascalCase for user-defined components
jsx-quotesEnforce single or double quotes in JSX attributes
jsx-self-closing-compRequire self-closing for components without children
jsx-tag-spacingEnforce whitespace around JSX tags
jsx-wrap-multilinesRequire parentheses around multiline JSX

eslint-plugin-perfectionist by @azat-io is an ESLint plugin for sorting various data such as objects, imports, types, enums, and JSX props. All rules are automatically fixable.

RuleDescription
sort-jsx-propsEnforce sorted JSX props

JSX Accessibility

eslint-plugin-jsx-a11y-x by es-tooling is a static AST checker for accessibility rules on JSX elements. It is a modern, actively maintained alternative to the classic eslint-plugin-jsx-a11y, with first-class support for ESLint Flat Config.

RuleDescription
alt-textEnforce meaningful alternative text on images
anchor-is-validEnforce all anchors are valid, navigable elements
aria-propsEnforce all aria-* props are valid
aria-roleEnforce valid, non-abstract ARIA roles
click-events-have-key-eventsEnforce clickable elements have keyboard event listeners
interactive-supports-focusEnforce interactive handlers are on focusable elements
label-has-associated-controlEnforce label tags have text label and associated control
no-autofocusDisallow autoFocus prop
no-static-element-interactionsEnforce non-interactive visible elements with handlers have a role
prefer-tag-over-roleEnforce semantic DOM elements over ARIA role property

React Refresh

eslint-plugin-react-refresh by @ArnaudBarre validates that your components can be safely updated with Fast Refresh (hot reloading).

RuleDescription
only-export-componentsEnsures files only export React components to avoid Fast Refresh boundaries breaking

Key features:

  • Single, focused rule that catches common Fast Refresh pitfalls
  • Built-in presets for Vite (allowConstantExport) and Next.js (allows exports like revalidate and fetchCache)
  • Configurable options for custom HOCs (extraHOCs) and framework-specific exports (allowExportNames)

React Import Style

eslint-plugin-react-import by @marcalexiei enforces consistent React import patterns across your codebase.

RuleDescription
consistent-syntaxEnforces a uniform React import style (namespace, default, or named imports)

Use case: Ideal for teams standardizing on import * as React from "react" or any single import convention.

If you maintain or know of a plugin that should be listed here, feel free to open an issue.