JS Framework

WCAG accessibility audit for React applications

Why React causes accessibility issues

React is the most widely used JavaScript framework for building modern web interfaces, but React applications present specific and insidious accessibility problems. Client-side routing (React Router) does not trigger screen reader announcements on page changes: the user clicks a link, the content changes, but nothing is announced. Custom components (dropdown, tabs, modals, accordions) are built with divs and spans instead of native HTML elements, without necessary ARIA attributes. State management causes re-renders that remove and re-add DOM elements, losing keyboard focus in the process. React-controlled forms manage errors in state but do not associate error messages with fields via aria-describedby. React portals (used for modals and tooltips) create elements outside the main DOM tree, breaking the natural tab order. These problems are visually invisible but make the application unusable for people depending on assistive technologies.

Common issues on React

SPA navigation without screen reader announcement

WCAG 4.1.3

React Router changes page content without browser reload. Screen readers do not detect this change and announce neither the new page title nor the new content. The blind user does not know the navigation worked. An announcement system via aria-live or focus management on the new content must be implemented, which is rarely done.

Custom components without semantics or ARIA

WCAG 4.1.2

React UI components (dropdown, tabs, accordion, autocomplete) are built with divs and onClick instead of native HTML elements (select, button, details). They do not carry required ARIA roles (role=tablist, role=tab, aria-selected, aria-expanded). Screen reader users cannot identify the component type or its state (open/closed, selected/unselected).

Focus loss during re-renders

WCAG 2.4.3

React state changes cause re-renders that delete and recreate DOM elements. If the focused element is deleted, focus returns to the top of the document. The keyboard user loses their position on the page and must re-tab from the beginning. This problem is particularly frequent in dynamic lists, conditional forms, and components with async loading.

Dynamic content not announced (missing aria-live)

WCAG 4.1.3

React applications update content dynamically (notifications, real-time search results, chat messages, counters). These updates are not wrapped in aria-live regions, so screen readers do not announce them. The blind user misses critical information that appears on screen.

Test your React site

Discover the WCAG non-conformities of your React site in 5 minutes. Free, no commitment.

Run the free audit

What Scrutia detects on React

Scrutia runs your React application in a real browser and tests dynamic interactions. Our engine detects route changes without announcements, interactive components without ARIA roles, focus losses during re-renders, and unannounced content updates. We simulate a complete keyboard user journey including page navigation, component interaction, and form submission. Each issue is located in the HTML output with corresponding React/JSX corrective code.

Frequently Asked Questions — React

Can Scrutia analyze a React application with authentication?
By default, Scrutia tests publicly accessible pages. To audit a React application with authentication (dashboard, client portal), contact us to configure an audit on a staging environment with test credentials.
Are corrections provided in React JSX?
Yes. The report provides corrections in JSX with correct ARIA attributes, focus management hooks (useRef, useEffect), and aria-live components to integrate. Corrections are directly copyable into your React components.
Does Scrutia detect problems caused by UI libraries like MUI or Chakra?
Yes. Scrutia tests the HTML rendered in the browser, regardless of the library used. If Material UI, Chakra UI, Ant Design, or Radix generate components with ARIA problems, they will be detected and flagged with the appropriate correction.

Audit your React site now

106 RGAA criteria tested in 5 minutes. Free score, full report with code fixes for €49.

Test my React site