Accessible Data Interfaces

A practical, implementation-focused reference for building WCAG 2.2-compliant data UIs. Real patterns, working code — for tables, grids, charts, keyboard navigation, and ARIA.

Four sections, twenty-three topic guides and more than fifty step-by-step walkthroughs, each with annotated code, keyboard contracts and screen reader behaviour notes.

Built for frontend engineers, UX specialists, a11y consultants, and design system maintainers who ship production-grade accessible data experiences.

What's Inside

Start Here

If you're new to accessible data UIs, these pages cover the highest-impact patterns most commonly failing accessibility audits in data-heavy applications.

scope and headers in complex tables

The single most common table accessibility failure. Learn when to use scope="col", scope="row", and headers on merged or multi-level header structures.

Read guide

polite vs. assertive aria-live regions

Choosing the wrong politeness level is a common ARIA mistake. This guide explains exactly when each mode is appropriate and how to avoid interrupting screen reader users.

Read guide

aria-sort for sortable column headers

How to implement aria-sort on column headers so screen readers announce sort state correctly — including the timing of DOM updates relative to the sort reorder.

Read guide

roving tabindex for custom data grids

Step-by-step implementation of the roving tabindex pattern for keyboard navigation inside a grid widget — covering arrow keys, Home/End, and focus restoration after DOM mutations.

Read guide

making react-window accessible

Virtualized lists recycle DOM nodes, which breaks screen reader linear reading. This guide patches the missing accessibility hooks in react-window with working code.

Read guide

restoring focus after closing modals

Focus loss after a modal closes is a WCAG 2.4.3 failure. This guide covers the focus-restoration logic for dialogs that delete or modify the element that originally triggered them.

Read guide

NVDA vs JAWS: aria-sort differences

The same aria-sort markup is announced differently by NVDA and JAWS. This guide documents each behaviour, the timing relative to DOM reorder, and how to test for the discrepancy.

Read guide

axe-core in a GitHub Actions pipeline

Catch accessibility regressions before they merge. A complete CI workflow that runs axe-core against your built data UIs and fails the build on new violations.

Read guide

accessible sortable table in React

A production-ready React sortable table: aria-sort state, a polite live region for sort announcements, keyboard activation, and focus preservation after re-sort.

Read guide

Latest Additions

The newest walkthroughs, covering column manipulation, result-set navigation, faceted filtering, loading states and the testing techniques that catch what automated rules cannot.

All Topics

Why Accessible Data Interfaces?

Most accessibility resources focus on simple UI elements — buttons, forms, links. But enterprise data applications present a different class of challenge: tables with hundreds of rows, charts that visualise real-time streams, virtualized lists that recycle DOM nodes, and grids with inline editing and keyboard-driven bulk operations.

This reference documents the specific WCAG 2.2 success criteria, ARIA roles, and keyboard interaction patterns that apply to these complex data UIs. Every pattern is drawn from production experience and tested against NVDA, JAWS, and VoiceOver.

Each guide includes implementation checklists, working code samples, and explicit screen reader behaviour descriptions so you can build confidently and audit thoroughly.

Every page carries hand-drawn diagrams of the pattern it teaches, and the whole reference ships in a light and a dark theme that both meet AA contrast — including the interiors of the diagrams themselves.