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, thirty-four topic guides and nearly 150 step-by-step walkthroughs — from React, Vue and Angular component recipes to screen reader behaviour comparisons and copy-ready testing recipes — each with annotated code, keyboard contracts and diagrams.

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

New this release: three new table topics, three new ARIA and keyboard topics, chart colour, dashboards and maps, plus testing recipes and manual audit scripts — and framework recipes for React, Vue, Angular, TanStack and AG Grid throughout.

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.