Skip to main content
ESLint Interlace
Plugin: react-a11y

Overview

React accessibility rules for WCAG compliance.

Live from GitHub

This content is fetched directly from README.md on GitHub and cached for 1 hour.

Accessibility Compliance

Ensure your React applications meet WCAG accessibility standards.


Live README from GitHubfrom eslint-plugin-react-a11y/README.md, cached for 1 hour.Edit on GitHub
ESLint Interlace Logo

Accessibility (a11y) rules for React applications, enforcing WCAG standards.

NPM VersionNPM DownloadsPackage LicenseCodecovSince Dec 2025

โญ If this plugin caught a real bug for you, star the repo โ€” it's the signal that keeps these rules maintained.

Description

This plugin provides Accessibility (a11y) rules for React applications, enforcing WCAG standards.

Philosophy

Interlace fosters strength through integration. Instead of stacking isolated rules, we interlace security directly into your workflow to create a resilient fabric of code. We believe tools should guide rather than gatekeep, providing educational feedback that strengthens the developer with every interaction.

Getting Started

npm install eslint-plugin-react-a11y --save-dev

โš™๏ธ Configuration Presets

PresetDescription
recommendedEnables critical accessibility rules (WCAG Level A as errors, AA as warnings)
strictEnforces all rules as errors for maximum WCAG compliance
wcag-aOnly rules required for WCAG 2.1 Level A compliance
wcag-aaIncludes Level A + additional rules for Level AA compliance

Configuration Examples

Basic Usage

// eslint.config.js
import reactA11y from 'eslint-plugin-react-a11y';

export default [reactA11y.configs.recommended];

With TypeScript

import reactA11y from 'eslint-plugin-react-a11y';
import tseslint from 'typescript-eslint';

export default [
  ...tseslint.configs.recommended,
  reactA11y.configs.recommended,
  {
    files: ['**/*.{ts,tsx}'],
    rules: {
      'react-a11y/img-requires-alt': 'error',
    },
  },
];

Strict WCAG Compliance

import reactA11y from 'eslint-plugin-react-a11y';

export default [
  reactA11y.configs['wcag-aa'],
  {
    // Additional customizations
  },
];

Custom Configuration

import reactA11y from 'eslint-plugin-react-a11y';

export default [
  {
    plugins: {
      'react-a11y': reactA11y,
    },
    rules: {
      'react-a11y/img-requires-alt': [
        'error',
        {
          allowAriaLabel: true,
          allowAriaLabelledby: true,
        },
      ],
      'react-a11y/anchor-ambiguous-text': [
        'warn',
        {
          words: ['click here', 'here', 'more', 'read more', 'learn more'],
        },
      ],
    },
  },
];

๐Ÿ“ฆ Compatibility

PackageVersion
ESLint^8.0.0 || ^9.0.0 || ^10.0.0
Node.js>=18.0.0

See the ESLint Version Support Policy โ€” current ecosystem share data, the 20% gate, and the forward-looking exception that covers v10.

Rules

Legend

IconDescription
๐Ÿ’ผRecommended: Included in the recommended preset.
โš ๏ธWarns: Set to warn in recommended preset.
๐Ÿ”งAuto-fixable: Automatically fixable by the --fix CLI option.
๐Ÿ’กSuggestions: Providing code suggestions in IDE.
๐ŸšซDeprecated: This rule is deprecated.
๐ŸŸขType-unaware: AST-only, runs in oxlint JS-plugin tier.
๐ŸŸกType-aware (refining): pure-AST primary path; types refine precision.
๐ŸŸ Type-aware (graceful): requires TS program; silent without it.
RuleCWEOWASPCVSSDescription๐Ÿง ๐Ÿ’ผโš ๏ธ๐Ÿ”ง๐Ÿ’ก๐Ÿšซ
alt-textCWE-252Enforce alt text on images and other visual elements that carry accessibility impact.๐ŸŸข๐Ÿ’ผ๐Ÿ’ก
anchor-ambiguous-textanchor-ambiguous-text rule๐ŸŸขโš ๏ธ๐Ÿ’ก
anchor-has-contentanchor-has-content rule๐ŸŸข๐Ÿ’ผ๐Ÿ’ก
anchor-is-validanchor-is-valid rule๐ŸŸขโš ๏ธ๐Ÿ’ก
aria-activedescendant-has-tabindexaria-activedescendant-has-tabindex rule๐ŸŸขโš ๏ธ๐Ÿ’ก
aria-propsaria-props rule๐ŸŸข๐Ÿ’ผ๐Ÿ’ก
aria-rolearia-role rule๐ŸŸข๐Ÿ’ผ๐Ÿ’ก
aria-unsupported-elementsaria-unsupported-elements rule๐ŸŸข๐Ÿ’ผ๐Ÿ’ก
autocomplete-validautocomplete-valid rule๐ŸŸขโš ๏ธ๐Ÿ’ก
click-events-have-key-eventsclick-events-have-key-events rule๐ŸŸข๐Ÿ’ผ๐Ÿ’ก
control-has-associated-labelcontrol-has-associated-label rule๐ŸŸขโš ๏ธ๐Ÿ’ก
heading-has-contentheading-has-content rule๐ŸŸข๐Ÿ’ผ๐Ÿ’ก
html-has-langhtml-has-lang rule๐ŸŸข๐Ÿ’ผ๐Ÿ’ก
iframe-has-titleiframe-has-title rule๐ŸŸข๐Ÿ’ผ๐Ÿ’ก
img-redundant-altimg-redundant-alt rule๐ŸŸขโš ๏ธ๐Ÿ’ก
interactive-supports-focusinteractive-supports-focus rule๐ŸŸข๐Ÿ’ผ๐Ÿ’ก
label-has-associated-controllabel-has-associated-control rule๐ŸŸขโš ๏ธ๐Ÿ’ก
langlang rule๐ŸŸข๐Ÿ’ผ๐Ÿ’ก
media-has-captionmedia-has-caption rule๐ŸŸขโš ๏ธ๐Ÿ’ก
mouse-events-have-key-eventsmouse-events-have-key-events rule๐ŸŸขโš ๏ธ๐Ÿ’ก
no-access-keyno-access-key rule๐ŸŸขโš ๏ธ๐Ÿ’ก
no-aria-hidden-on-focusableno-aria-hidden-on-focusable rule๐ŸŸข๐Ÿ’ผ๐Ÿ’ก
no-autofocusno-autofocus rule๐ŸŸขโš ๏ธ๐Ÿ’ก
no-distracting-elementsno-distracting-elements rule๐ŸŸข๐Ÿ’ผ๐Ÿ’ก
no-interactive-element-to-noninteractive-roleno-interactive-element-to-noninteractive-role rule๐ŸŸขโš ๏ธ๐Ÿ’ก
no-keyboard-inaccessible-elementsno-keyboard-inaccessible-elements rule๐ŸŸข๐Ÿ’ผ๐Ÿ’ก
no-missing-aria-labelsno-missing-aria-labels rule๐ŸŸขโš ๏ธ๐Ÿ’ก
no-noninteractive-element-interactionsno-noninteractive-element-interactions rule๐ŸŸขโš ๏ธ๐Ÿ’ก
no-noninteractive-element-to-interactive-roleno-noninteractive-element-to-interactive-role rule๐ŸŸขโš ๏ธ๐Ÿ’ก
no-noninteractive-tabindexno-noninteractive-tabindex rule๐ŸŸขโš ๏ธ๐Ÿ’ก
no-redundant-rolesno-redundant-roles rule๐ŸŸขโš ๏ธ๐Ÿ’ก
no-static-element-interactionsno-static-element-interactions rule๐ŸŸขโš ๏ธ๐Ÿ’ก
prefer-tag-over-roleprefer-tag-over-role rule๐ŸŸขโš ๏ธ๐Ÿ’ก
role-has-required-aria-propsrole-has-required-aria-props rule๐ŸŸข๐Ÿ’ผ๐Ÿ’ก
role-supports-aria-propsrole-supports-aria-props rule๐ŸŸข๐Ÿ’ผ๐Ÿ’ก
scopescope rule๐ŸŸข๐Ÿ’ผ๐Ÿ’ก
tabindex-no-positivetabindex-no-positive rule๐ŸŸขโš ๏ธ๐Ÿ’ก

Part of the Interlace ESLint Ecosystem โ€” AI-native security plugins with LLM-optimized error messages:

PluginDownloadsDescription
eslint-plugin-secure-codingdownloadsGeneral security rules & OWASP guidelines.
eslint-plugin-pgdownloadsPostgreSQL security & best practices.
eslint-plugin-node-securitydownloadsNode.js core-module security (fs, child_process, vm, crypto, Buffer).
eslint-plugin-jwtdownloadsJWT security & best practices.
eslint-plugin-browser-securitydownloadsBrowser-specific security & XSS prevention.
eslint-plugin-express-securitydownloadsExpress.js security hardening rules.
eslint-plugin-lambda-securitydownloadsAWS Lambda security best practices.
eslint-plugin-nestjs-securitydownloadsNestJS security rules & patterns.
eslint-plugin-mongodb-securitydownloadsMongoDB security best practices.
eslint-plugin-vercel-ai-securitydownloadsVercel AI SDK security hardening.
eslint-plugin-import-nextdownloadsNext-gen import sorting & architecture.

โญ Support & follow

If this plugin caught a real bug for you, star the repo โ€” stars are the signal that keeps the Interlace ESLint ecosystem maintained โ€” and follow the writeups on Dev.to for the benchmarks and security research behind these rules.

GitHub stars

๐Ÿ“„ License

MIT ยฉ Ofri Peretz

ESLint Interlace Plugin

View README.md on GitHub โ†’

On this page

No Headings