{"_id":"@aishware/react-a11y","_rev":"4-72e36a7f886958ae35713796becdf67e","name":"@aishware/react-a11y","dist-tags":{"latest":"0.4.0"},"versions":{"0.1.0":{"name":"@aishware/react-a11y","version":"0.1.0","keywords":["accessibility","a11y","wcag","wcag-2.2","react","react-native","expo","linter","cli","sarif"],"license":"MIT","_id":"@aishware/react-a11y@0.1.0","maintainers":[{"name":"1aishwaryasharma","email":"1aishwaryasharma@gmail.com"}],"homepage":"https://github.com/1aishwaryasharma/react-a11y","bugs":{"url":"https://github.com/1aishwaryasharma/react-a11y/issues"},"bin":{"react-a11y":"dist/index.js"},"dist":{"shasum":"9c5db1dcc88e53f5011c13f542d844a3ba221970","tarball":"https://registry.npmjs.org/@aishware/react-a11y/-/react-a11y-0.1.0.tgz","fileCount":9,"integrity":"sha512-cMnOCnm9kHTP1UDgmhPUzOs4sjLqNeR5Wc+c0+UsYZ+ZivNv2xvfheCfdZDM8Xp3IAMCFO9D8uziypqn8iMfrw==","signatures":[{"sig":"MEUCIGKMkGJGMWHYTCYEvRupNDQ49Zp32X6NtQe7GwCzLOhxAiEAqVcfoucu7ndqnHNvP8hdvbc1g04+VEvkGjrbF7+ZXxU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":18815},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"b41954d6b1a7cacd2f85a23cd57cda855aa6cad3","_npmUser":{"name":"1aishwaryasharma","email":"1aishwaryasharma@gmail.com"},"repository":{"url":"git+https://github.com/1aishwaryasharma/react-a11y.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.2","description":"Static accessibility scanner for React and React Native — reports WCAG 2.2 issues with file:line locations.","directories":{},"_nodeVersion":"22.16.0","dependencies":{"picocolors":"^1.1.0","@aishware/react-a11y-core":"^0.1.0","@aishware/react-a11y-rules-web":"^0.1.0","@aishware/react-a11y-rules-native":"^0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/react-a11y_0.1.0_1781412377543_0.8057263092756721","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@aishware/react-a11y","version":"0.2.0","keywords":["accessibility","a11y","wcag","wcag-2.2","react","react-native","expo","nextjs","static-analysis","linter","cli","sarif"],"license":"MIT","_id":"@aishware/react-a11y@0.2.0","maintainers":[{"name":"1aishwaryasharma","email":"1aishwaryasharma@gmail.com"}],"homepage":"https://github.com/1aishwaryasharma/react-a11y","bugs":{"url":"https://github.com/1aishwaryasharma/react-a11y/issues"},"bin":{"react-a11y":"dist/index.js"},"dist":{"shasum":"97d973b51a468aa8b8acbd8f2397ed846138a9a3","tarball":"https://registry.npmjs.org/@aishware/react-a11y/-/react-a11y-0.2.0.tgz","fileCount":9,"integrity":"sha512-T7A7ebUDZMwEZFdro0W+hCqtn60JKVpW+bDz4UDnIEyQ+sekik2Bp6oscSMY/V3F+6c4WR9Ik6ILE6nHKc+sUw==","signatures":[{"sig":"MEQCIHOWuYDtAO/lJX25EzKYwola5n7tU7ITeL+WZIs0iKeQAiA/ItYa7qwoIP4t9HSD8qbOLTIGgRuRP4+ZryuIV5V8fg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23085},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"882f45fac62377ac489cd1d51a6a976c5b16228e","_npmUser":{"name":"1aishwaryasharma","email":"1aishwaryasharma@gmail.com"},"repository":{"url":"git+https://github.com/1aishwaryasharma/react-a11y.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.2","description":"Static accessibility scanner for React and React Native — reports WCAG 2.2 issues with file:line locations.","directories":{},"_nodeVersion":"22.16.0","dependencies":{"picocolors":"^1.1.0","@aishware/react-a11y-core":"^0.2.0","@aishware/react-a11y-rules-web":"^0.2.0","@aishware/react-a11y-rules-native":"^0.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/react-a11y_0.2.0_1784319017252_0.513106590291569","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@aishware/react-a11y","version":"0.3.0","keywords":["accessibility","a11y","wcag","wcag-2.2","react","react-native","expo","nextjs","static-analysis","linter","cli","sarif"],"license":"MIT","_id":"@aishware/react-a11y@0.3.0","maintainers":[{"name":"1aishwaryasharma","email":"1aishwaryasharma@gmail.com"}],"homepage":"https://github.com/1aishwaryasharma/react-a11y","bugs":{"url":"https://github.com/1aishwaryasharma/react-a11y/issues"},"bin":{"react-a11y":"dist/index.js"},"dist":{"shasum":"aa5280d33ab4a45cc8cf517f3c87bccfdce4f427","tarball":"https://registry.npmjs.org/@aishware/react-a11y/-/react-a11y-0.3.0.tgz","fileCount":9,"integrity":"sha512-Z5qeCBRK3CLrjdEv17pObIo4ii5vfiaPt7hPhSfXrAH+6x8HkNni6fTSK4nrg1R9jJc8ZHQ5c1AdYGZ8KRuFtA==","signatures":[{"sig":"MEYCIQCJFgQ5UatpvPpda4Uu31Gr76InmHgQcE4mK4xvxPeUoQIhAMg8t/WKX4eDRph9t+3HjLPstFWr3Wd7Zs6xGzy9ZhkE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23978},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"_npmUser":{"name":"1aishwaryasharma","email":"1aishwaryasharma@gmail.com"},"repository":{"url":"git+https://github.com/1aishwaryasharma/react-a11y.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.2","description":"Static accessibility scanner for React and React Native — reports WCAG 2.2 issues with file:line locations.","directories":{},"_nodeVersion":"22.16.0","dependencies":{"picocolors":"^1.1.0","@aishware/react-a11y-core":"^0.3.0","@aishware/react-a11y-rules-web":"^0.3.0","@aishware/react-a11y-rules-native":"^0.3.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/react-a11y_0.3.0_1784560089764_0.4841346373078472","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@aishware/react-a11y","version":"0.4.0","description":"Static accessibility scanner for React and React Native — reports WCAG 2.2 issues with file:line locations.","keywords":["accessibility","a11y","wcag","wcag-2.2","react","react-native","expo","nextjs","static-analysis","linter","cli","sarif"],"type":"module","bin":{"react-a11y":"dist/index.js"},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=20"},"publishConfig":{"access":"public"},"dependencies":{"@aishware/react-a11y-core":"^0.4.0","@aishware/react-a11y-rules-native":"^0.4.0","@aishware/react-a11y-rules-web":"^0.4.0","picocolors":"^1.1.0"},"license":"MIT","homepage":"https://github.com/1aishwaryasharma/react-a11y","repository":{"type":"git","url":"git+https://github.com/1aishwaryasharma/react-a11y.git","directory":"packages/cli"},"_id":"@aishware/react-a11y@0.4.0","gitHead":"ff75ed5963f9e5b86159212698349610602e6e87","bugs":{"url":"https://github.com/1aishwaryasharma/react-a11y/issues"},"_nodeVersion":"22.16.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-VBKoh0wSa3EFU8XHvHeAtz+IM7VOOZOWQBG3B03VrgVbjndCd4bSpEMWe5XRwbDdks988UbTV/iQQgL2qGLo4Q==","shasum":"a12c507652b8f94b86cda00866f8d1c193f423bc","tarball":"https://registry.npmjs.org/@aishware/react-a11y/-/react-a11y-0.4.0.tgz","fileCount":9,"unpackedSize":26473,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCEd0pZOo0r3sli+FhVIb7DkNKKmDnnTwybt/1Qjfbq6wIhALe4RdjrAzcZ6S/BSmEWPz6R37eNIAEBXvB/ewOQLyes"}]},"_npmUser":{"name":"1aishwaryasharma","email":"1aishwaryasharma@gmail.com"},"directories":{},"maintainers":[{"name":"1aishwaryasharma","email":"1aishwaryasharma@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/react-a11y_0.4.0_1784578430770_0.47424528142608025"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-14T04:46:17.309Z","modified":"2026-07-20T20:13:51.071Z","0.1.0":"2026-06-14T04:46:17.671Z","0.2.0":"2026-07-17T20:10:17.437Z","0.3.0":"2026-07-20T15:08:09.914Z","0.4.0":"2026-07-20T20:13:50.906Z"},"bugs":{"url":"https://github.com/1aishwaryasharma/react-a11y/issues"},"license":"MIT","homepage":"https://github.com/1aishwaryasharma/react-a11y","keywords":["accessibility","a11y","wcag","wcag-2.2","react","react-native","expo","nextjs","static-analysis","linter","cli","sarif"],"repository":{"type":"git","url":"git+https://github.com/1aishwaryasharma/react-a11y.git","directory":"packages/cli"},"description":"Static accessibility scanner for React and React Native — reports WCAG 2.2 issues with file:line locations.","maintainers":[{"name":"1aishwaryasharma","email":"1aishwaryasharma@gmail.com"}],"readme":"# @aishware/react-a11y\n\n[![npm](https://img.shields.io/npm/v/@aishware/react-a11y)](https://www.npmjs.com/package/@aishware/react-a11y)\n[![downloads](https://img.shields.io/npm/dm/@aishware/react-a11y)](https://www.npmjs.com/package/@aishware/react-a11y)\n[![CI](https://github.com/1aishwaryasharma/react-a11y/actions/workflows/ci.yml/badge.svg)](https://github.com/1aishwaryasharma/react-a11y/actions/workflows/ci.yml)\n[![license: MIT](https://img.shields.io/npm/l/@aishware/react-a11y)](https://github.com/1aishwaryasharma/react-a11y/blob/main/LICENSE)\n\nA static accessibility scanner for **React Native and React** that catches what\nyour ESLint setup can't: a 25-rule React Native static pack (including focus\nand reading order), the newer **WCAG 2.2** web criteria, and a WCAG conformance\nreport — analyzed from source with file:line precision, no browser or rendering.\n\n```\n$ npx @aishware/react-a11y apps/mobile\n\nreact-a11y v0.4.0 — platform: native — 92 files scanned in 210ms\n\nsrc/screens/Profile.tsx\n  34:7   serious  accessible-grouping-hides-interactive\n         <View accessible> groups its whole subtree into one focus stop, so the\n         <Pressable> inside is no longer separately focusable and the reading\n         order changes. Move the grouping off the interactive content.\n            34 |       <View accessible={true}>\n         WCAG 2.4.3 Focus Order (Level A)\n\n✖ 7 issues (1 critical, 5 serious, 1 moderate) in 4 files\n```\n\n## Why\n\n- **Broader React Native coverage than lint rules alone.** Beyond per-line\n  basics, react-a11y checks focus and reading order (`accessible={true}`\n  grouping), touch-target size, text scaling, role/state consistency,\n  cross-platform hiding, and project-wide config per-file linters can't see\n  (orientation locks in `app.json`, `AndroidManifest.xml`, `Info.plist`) —\n  25 rules, from the same engine as web.\n- **The WCAG 2.2 web criteria jsx-a11y lacks.** Color contrast, target size,\n  label-in-name, pointer cancellation, viewport zoom and reading order — 22\n  rules, each mapped to a success criterion with a link to the W3C\n  Understanding page.\n- **Complements [`eslint-plugin-jsx-a11y`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y), doesn't fight it.**\n  The web pack contains none of the rules jsx-a11y already does, so the two run\n  together with no double-reporting — run both for broader automated coverage,\n  then use the manual checklist for the remaining criteria. For React Native,\n  react-a11y supplies a 25-rule static pack that overlaps\n  [eslint-plugin-react-native-a11y](https://github.com/FormidableLabs/eslint-plugin-react-native-a11y)\n  on per-line basics and adds structural and project-wide analysis — you\n  generally don't need both native packs; if you run both, disable the\n  overlapping rules on one side. Rendered and real-device behavior still needs\n  [manual testing](https://github.com/1aishwaryasharma/react-a11y/blob/main/docs/manual-testing.md).\n- **Project-wide and conformance-aware.** A WCAG 2.2 coverage report plus\n  cross-file label resolution and project-config checks that per-file\n  ESLint rules structurally can't do.\n- **Static and deterministic.** Parses TSX/JSX with the TypeScript compiler —\n  works on code that doesn't build yet, runs in CI in under a second, and is\n  conservative about spreads and dynamic values to keep false positives low.\n\n## Usage\n\n```sh\n# audit the current project (platform auto-detected from package.json)\nnpx @aishware/react-a11y .\n\n# explicit platform\nnpx @aishware/react-a11y apps/mobile --platform native\n\n# machine-readable output\nnpx @aishware/react-a11y . --format json\nnpx @aishware/react-a11y . --format sarif --output a11y.sarif   # GitHub code scanning\n\n# gate CI: exit 1 when serious or critical issues exist (default)\nnpx @aishware/react-a11y . --fail-on serious\n\n# apply safe mechanical fixes (e.g. miscapitalized React Native accessibility props)\nnpx @aishware/react-a11y . --fix\n\n# scan only files changed in git — fast PR checks\nnpx @aishware/react-a11y . --changed\n\n# lint one buffer from stdin — editor integrations (config still read from the path)\ncat src/App.tsx | npx @aishware/react-a11y . --stdin --stdin-filename src/App.tsx --format json\n\n# every rule with severity + WCAG mapping, or the coverage report\nnpx @aishware/react-a11y --list-rules\nnpx @aishware/react-a11y --coverage\n```\n\nInstall globally (or as a dev dependency) to get the bare `react-a11y` command:\n\n```sh\nnpm install -g @aishware/react-a11y   # then: react-a11y .\n```\n\n## CI (GitHub Actions)\n\nOne line with the bundled action:\n\n```yaml\n- uses: 1aishwaryasharma/react-a11y@main\n  with:\n    sarif-file: a11y.sarif        # optional — for GitHub code scanning\n- uses: github/codeql-action/upload-sarif@v3\n  with:\n    sarif_file: a11y.sarif\n```\n\nOr plain npx, next to your existing jsx-a11y ESLint step:\n\n```yaml\n- name: react-a11y — WCAG 2.2, React Native, project-wide\n  run: npx @aishware/react-a11y . --fail-on serious\n```\n\n## Configuration\n\n`react-a11y.config.json` (or a `\"react-a11y\"` key in package.json):\n\n```json\n{\n  \"platform\": \"web\",\n  \"ignore\": [\"**/*.stories.tsx\", \"src/legacy/**\"],\n  \"rules\": {\n    \"target-size\": \"off\",\n    \"color-contrast\": \"critical\"\n  }\n}\n```\n\n## Rules\n\n- **Web** — 22 rules, none of which overlap eslint-plugin-jsx-a11y.\n  [Full list →](https://github.com/1aishwaryasharma/react-a11y/blob/main/docs/rules/web.md)\n- **React Native** — 25 rules, including focus/reading order and project-config\n  checks.\n  [Full list →](https://github.com/1aishwaryasharma/react-a11y/blob/main/docs/rules/native.md)\n\n`npx @aishware/react-a11y --coverage` reports WCAG 2.2 coverage: react-a11y\nautomates **25 of the 55 Level A+AA criteria (45%)** on its own, and **31/55\n(56%)** when run alongside eslint-plugin-jsx-a11y; the criteria a static tool\ncannot decide are listed as a manual checklist.\n\nFor focus movement, dynamic announcements, rendered text scaling, effective\ntouch geometry, Reduce Motion, and VoiceOver/TalkBack behavior, follow the\n[manual accessibility testing guide](https://github.com/1aishwaryasharma/react-a11y/blob/main/docs/manual-testing.md).\n\n## Embedding\n\nThe engine is a library — use it in editor extensions, custom CI, or agents:\n\n```ts\nimport { analyze } from '@aishware/react-a11y-core';\nimport { webRules } from '@aishware/react-a11y-rules-web';\n\nconst diagnostics = analyze({ code, filename: 'App.tsx', platform: 'web', rules: webRules });\n```\n\nFull documentation, VS Code extension, and architecture:\n<https://github.com/1aishwaryasharma/react-a11y>\n\n## License\n\nMIT\n","readmeFilename":"README.md"}