react-accessibility — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited react-accessibility (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Build accessible React interfaces using semantic HTML, ARIA, focus management, keyboard navigation, and automated testing. Accessibility is not an add-on — it is a structural quality of the component architecture.
Use native elements: <nav>, <main>, <button>, <header>, <section> instead of <div>. Native elements provide built-in keyboard behavior and screen reader announcements.
<>...</>) to group elements without breaking semantic layout (lists, tables)htmlFor (not for) to associate labels with inputsAll aria-* attributes remain hyphen-cased in JSX (unlike standard DOM props which use camelCase):
<button aria-expanded={isOpen} aria-controls="menu-panel">
Menu
</button>Keep ARIA states synchronized with React state — aria-expanded must reflect whether the menu is actually open.
React's constant DOM updates can cause focus to be lost or reset to the document body. Manage focus explicitly:
When content changes (route transitions, deleted items, view switches):
tabIndex={-1} to the target element (makes it programmatically focusable)useRef + useEffect to call .focus() after renderWhen a modal opens:
Tab/Shift+Tab cycling within the modalinert or aria-hidden="true"Escape key closes the dialogHidden anchors that become visible on keyboard focus. Allow users to bypass repetitive navigation and jump to main content.
All interactive functionality must be operable with keyboard. Critical rules:
<button>, <a>, <input>) — not <div onClick>outline: 0) without a visible replacement:focus-visible for keyboard-only focus stylesonFocus/onBlur alongside mouse eventsalt textalt="" or role="presentation"aria-live="polite" or role="alert"Real-time AST linting in the editor. Flags missing alt text, incorrect ARIA roles, and inaccessible patterns during development.
Audits the rendered DOM at runtime. Logs violations to Chrome DevTools console, categorized by severity. Import dynamically in development only:
if (process.env.NODE_ENV !== 'production') {
import('react-axe').then(axe => axe.default(React, ReactDOM, 1000));
}getByRole and getByLabelText as primary selectors — if RTL cannot find the element, assistive technology cannot either~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.