{"id":13445830,"url":"https://github.com/reactjs/react-a11y","last_synced_at":"2026-04-07T19:31:52.688Z","repository":{"id":26016966,"uuid":"29459647","full_name":"reactjs/react-a11y","owner":"reactjs","description":"Identifies accessibility issues in your React.js elements","archived":false,"fork":false,"pushed_at":"2026-01-24T03:00:19.000Z","size":750,"stargazers_count":2355,"open_issues_count":39,"forks_count":127,"subscribers_count":46,"default_branch":"master","last_synced_at":"2026-04-03T19:33:08.876Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/reactjs.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2015-01-19T07:49:00.000Z","updated_at":"2026-04-02T10:02:13.000Z","dependencies_parsed_at":"2023-07-13T15:43:48.263Z","dependency_job_id":null,"html_url":"https://github.com/reactjs/react-a11y","commit_stats":{"total_commits":557,"total_committers":30,"mean_commits":"18.566666666666666","dds":"0.28725314183123873","last_synced_commit":"aa698f4a6ef79af46b288227a3e644ed6898bbc7"},"previous_names":["rackt/react-a11y"],"tags_count":26,"template":false,"template_full_name":null,"purl":"pkg:github/reactjs/react-a11y","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reactjs%2Freact-a11y","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reactjs%2Freact-a11y/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reactjs%2Freact-a11y/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reactjs%2Freact-a11y/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/reactjs","download_url":"https://codeload.github.com/reactjs/react-a11y/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reactjs%2Freact-a11y/sbom","scorecard":{"id":757498,"data":{"date":"2025-08-11","repo":{"name":"github.com/reactjs/react-a11y","commit":"aa698f4a6ef79af46b288227a3e644ed6898bbc7"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":1.9,"checks":[{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":1,"reason":"Found 4/24 approved changesets -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 15 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"72 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-6chw-6frg-f759","Warn: Project is vulnerable to: GHSA-v88g-cgmw-v5xw","Warn: Project is vulnerable to: GHSA-93q8-gq69-wqmw","Warn: Project is vulnerable to: GHSA-fwr7-v2mv-hh25","Warn: Project is vulnerable to: GHSA-67hx-6x53-jw92","Warn: Project is vulnerable to: GHSA-qwcr-r2fm-qrc7","Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-cwfw-4gq5-mrqx","Warn: Project is vulnerable to: GHSA-g95f-p29q-9xw4","Warn: Project is vulnerable to: GHSA-grv7-fg5c-xmjg","Warn: Project is vulnerable to: GHSA-c6rq-rjc2-86v2","Warn: Project is vulnerable to: GHSA-pxg6-pf52-xh8x","Warn: Project is vulnerable to: GHSA-gxpj-cx7g-858c","Warn: Project is vulnerable to: GHSA-w573-4hg7-7wgq","Warn: Project is vulnerable to: GHSA-j4f2-536g-r55m","Warn: Project is vulnerable to: GHSA-r7qp-cfhv-p84w","Warn: Project is vulnerable to: GHSA-4gmj-3p3h-gm8h","Warn: Project is vulnerable to: GHSA-74fj-2j2h-c42q","Warn: Project is vulnerable to: GHSA-pw2r-vq6v-hr8c","Warn: Project is vulnerable to: GHSA-jchw-25xp-jwwc","Warn: Project is vulnerable to: GHSA-cxjh-pqwp-8mfp","Warn: Project is vulnerable to: GHSA-8r6j-v8pm-fqw3","Warn: Project is vulnerable to: MAL-2023-462","Warn: Project is vulnerable to: GHSA-43f8-2h32-f4cj","Warn: Project is vulnerable to: GHSA-6x33-pw7p-hmpq","Warn: Project is vulnerable to: GHSA-qqgx-2p2h-9c37","Warn: Project is vulnerable to: GHSA-2pr6-76vf-7546","Warn: Project is vulnerable to: GHSA-8j8c-7jfh-h6hx","Warn: Project is vulnerable to: GHSA-9c47-m6qq-7p4h","Warn: Project is vulnerable to: GHSA-282f-qqgm-c34q","Warn: Project is vulnerable to: GHSA-7x7c-qm48-pq9c","Warn: Project is vulnerable to: GHSA-rc3x-jf5g-xvc5","Warn: Project is vulnerable to: GHSA-6c8f-qphg-qjgp","Warn: Project is vulnerable to: GHSA-76p3-8jx3-jpfq","Warn: Project is vulnerable to: GHSA-3rfm-jhwj-7488","Warn: Project is vulnerable to: GHSA-hhq3-ff78-jv3g","Warn: Project is vulnerable to: GHSA-jf85-cpcp-j695","Warn: Project is vulnerable to: GHSA-p6mc-m468-83gw","Warn: Project is vulnerable to: GHSA-29mw-wpgm-hmr9","Warn: Project is vulnerable to: GHSA-35jh-r3h4-6jhm","Warn: Project is vulnerable to: GHSA-82v2-mx6x-wq7q","Warn: Project is vulnerable to: GHSA-952p-6rrq-rcjv","Warn: Project is vulnerable to: GHSA-f8q6-p94x-37v3","Warn: Project is vulnerable to: GHSA-vh95-rmgr-6w4m","Warn: Project is vulnerable to: GHSA-xvch-5gv4-984h","Warn: Project is vulnerable to: GHSA-fhjf-83wg-r2j9","Warn: Project is vulnerable to: GHSA-6fx8-h7jm-663j","Warn: Project is vulnerable to: GHSA-hj48-42vr-x3v9","Warn: Project is vulnerable to: GHSA-hrpp-h998-j3pp","Warn: Project is vulnerable to: GHSA-c2qf-rxjj-qqgw","Warn: Project is vulnerable to: GHSA-4g88-fppr-53pp","Warn: Project is vulnerable to: GHSA-4jqc-8m5r-9rpr","Warn: Project is vulnerable to: GHSA-4rq4-32rv-6wp6","Warn: Project is vulnerable to: GHSA-64g7-mvw6-v9qj","Warn: Project is vulnerable to: GHSA-fxwf-4rqh-v8g3","Warn: Project is vulnerable to: GHSA-25hc-qcg6-38wj","Warn: Project is vulnerable to: GHSA-xfhh-g9f5-x4m4","Warn: Project is vulnerable to: GHSA-qm95-pgcg-qqfq","Warn: Project is vulnerable to: GHSA-cqmj-92xf-r6r9","Warn: Project is vulnerable to: GHSA-j44m-qm6p-hp7m","Warn: Project is vulnerable to: GHSA-3jfq-g458-7qm9","Warn: Project is vulnerable to: GHSA-r628-mhmh-qjhw","Warn: Project is vulnerable to: GHSA-9r2w-394v-53qc","Warn: Project is vulnerable to: GHSA-5955-9wpr-37jh","Warn: Project is vulnerable to: GHSA-qq89-hq3f-393p","Warn: Project is vulnerable to: GHSA-f5x3-32g6-xq36","Warn: Project is vulnerable to: GHSA-52f5-9888-hmc6","Warn: Project is vulnerable to: GHSA-mgfv-m47x-4wqp","Warn: Project is vulnerable to: GHSA-wr3j-pwj9-hqq6","Warn: Project is vulnerable to: GHSA-3h5v-q93c-6h6q","Warn: Project is vulnerable to: GHSA-72mh-269x-7mh5","Warn: Project is vulnerable to: GHSA-h4j5-c7cj-74xg"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-22T22:10:04.967Z","repository_id":26016966,"created_at":"2025-08-22T22:10:04.967Z","updated_at":"2025-08-22T22:10:04.967Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31526665,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T16:28:08.000Z","status":"ssl_error","status_checked_at":"2026-04-07T16:28:06.951Z","response_time":105,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-31T05:00:40.254Z","updated_at":"2026-04-07T19:31:52.665Z","avatar_url":"https://github.com/reactjs.png","language":"JavaScript","readme":"React A11y\n==========\n\n[![build status](https://img.shields.io/travis/reactjs/react-a11y/master.svg?style=flat-square)](https://travis-ci.org/reactjs/react-a11y)\n\nIdentifies accessibility issues in your React.js elements\n\n![screenshot](http://i.imgur.com/naQTETB.png)\n\n\n# ⛔️DEPRECATION NOTICE ⛔️\nThis library is being deprecated in favor of [@axe-core/react](https://github.com/dequelabs/axe-core-npm/tree/develop/packages/react).  \nDeque Systems are one of the top authorities on web accessibility.  Their auditing tools based on their axe-core \nengine are unrivaled and have become the gold standard for auditing web accessibility issues.  Now that they have \ndeveloped a runtime React DOM auditing tool, that does what react-a11y attempts to do but better, it seems \ncounterproductive to continue to maintain react-a11y.  Let's pool our resources and energies into the best product and \nI believe any accessibility tool backed by the experts at Deque Systems is bound to be one we can trust and depend on. \nPlease go check out and install [@axe-core/react](https://github.com/dequelabs/axe-core-npm/tree/develop/packages/react) today!\n\n## Installation\n\nRun:\n\n```bash\nnpm install react-a11y\n```\n\n## Usage\n\nIn your main application file, require the module and call it, you'll start\ngetting warnings in the console as your app renders.  Note that by default all\nrules are turned `off` so you need to turn them on first (by setting them to\n`\"warn\"` or `\"error\"`).\n\n```javascript\nimport React    from 'react';\nimport ReactDOM from 'react-dom';\n\nif (process.env.NODE_ENV === 'development') {\n  const a11y = require('react-a11y').default;\n  a11y(React, ReactDOM, {\n    rules: {\n      'img-uses-alt': 'warn',\n      'img-redundant-alt': [ 'warn', [ 'image', 'photo', 'foto', 'bild' ]]\n    // ...\n    }\n  });\n}\n```\n\nYou probably don't want to call it if you're in production, since it patches the \nReact rendering functions and this might make this slower.\n\n## Migrating to v1.1.0\nA number of the rule names have changed and the previous rule names have been deprecated.  These deprecated rules will\nbe removed in v2.0.0.  The following is the mapping of old to new rules:\n\n| Old Rule      | New Rule    |\n| ------------- | ----------- |\n| avoid-positive-tabindex | tabindex-no-positive |\n| button-role-space | click-events-have-key-events |\n| label-uses-for | label-has-for |\n| mouse-events-map-to-key-events | mouse-events-have-key-events |\n| no-unsupported-elements-use-aria | aria-unsupported-elements |\n| onclick-uses-tabindex | interactive-supports-focus |\n| redundant-alt | img-redundant-alt |\n| use-onblur-not-onchange | no-onchange |\n| valid-aria-role | aria-role |\n\n## Options\n\nThese are the supported configuration options, annotated using [flow][] type\nannotations\n\n```flow js\na11y(React : React, ReactDOM : ReactDOM, opts : object? );\n```\n\n`React` is the React object you want to shim to allow the \naccessibility tests.\n\n`ReactDOM` is the ReactDOM object you're using to render the\nReact components. This is only used on the client side, so you\ncan safely omit it when using `react-a11y` in node.\n\n### `options`:\n  - `plugins : [string]`\n    An array of strings corresponding to names of plugins to be used.\n    Eg. if the array contains `'aria-wai'` it would include the rules \n    in a (yet to be written) `react-a11y-plugin-aria-wai` module.  You\n    are responsible for installing this module.\n\n  - `rules : object`\n    The configuration options for each of the rules. This uses the same format\n    as [eslint][] does: \n    \n    ```javascript\n    const rules = {\n      'img-uses-alt': 'off',\n      'redundant-alt': [\n        'warn',\n        // other options to pass to the rule:\n        [\n          'foto'\n        ]\n      ]\n    };\n    ```\n    \n    Refer to the [rule docs](docs/rules) \n    to see what options are defined for each rule.\n\n  - `reporter : object =\u003e undefined`\n    Use this to modify how the warnings are displayed.\n    The reporter is a function that accepts an object with\n    the following keys:\n    - `msg : string` - the error message\n    - `tagName : string` - the tagName of the violating element (eg. `'img'`)\n    - `severity : string` - the severity as configured by the user in the \n      corresponding rule configuration (one of `'off'`, `'warn'`, or `'error'`)\n    - `props : object` - the props as passed to the element\n    - `displayName : string?` - the `displayName` of the owner, if any\n    - `DOMNode : object?` - the violating DOMNode as rendered to the browser\n      DOM, this is only available on when `react-a11y` is running in the\n      browser.\n    - `url : string?` - The url to a webpage explaining why this rule\n      is important\n\n    The default reporter displays all the information it can, but listens\n    to the deprecated options `includeSrcNode`, `warningPrefix` and\n    `throwErro` and `throwError`.\n\n  - `filterFn : (string, string, string) =\u003e boolean`\n    You can filter failures by passing a function to the `filterFn` option. The\n    filter function will receive three arguments: the name of the Component\n    instance or ReactElement, the id of the violating element, and the failure\n    message.\n\n    Note: If it is a ReactElement, the name will be the node type (eg. `div`)\n\n    ```javascript\n    // only show errors on CommentList\n    const commentListFailures = function (name, id, msg) {\n      return name === \"CommentList\";\n    };\n\n    a11y(React, ReactDOM, { filterFn: commentListFailures });\n    ```\n\n## Cleaning Up In Tests\n\nUse the `restoreAll()` method to clean up mutations made to `React`.\nUseful if you are using `react-a11y` in your test suite:\n\n```javascript\nbeforeEach(() =\u003e a11y(React));\nafterEach(() =\u003e a11y.restoreAll());\n```\n\n## Writing plugins\n\nThe rules in this version of `react-a11y` are pluggable!\nYou can write your own plugin to add more rules.  Have a look at \n[writing plugins](docs/plugins.md) in the\ndocs to get started!\n\n## Contributing\n\nInterested in contributing?  Great!  Look here for more info: [CONTRIBUTING.md](CONTRIBUTING.md).\n\n[react-a11y]:    https://github.com/reactjs/react-a11y\n[eslint]:        http://eslint.org\n[flow]:          http://flowtype.org\n[eslint-plugin]: https://github.com/evcohen/eslint-plugin-jsx-a11y\n[AX]:            https://github.com/GoogleChrome/accessibility-developer-tools/wiki/Audit-Rules\n","funding_links":[],"categories":["Development","Testing Tools \u0026 Libraries","JavaScript","Javascript","React"],"sub_categories":["WIP/Need Awesomeification","Accessibility","React Components"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freactjs%2Freact-a11y","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Freactjs%2Freact-a11y","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freactjs%2Freact-a11y/lists"}