Accessibility

A Studio screen is accessible out of the box, because it is built from the grid and the edit form - both designed to the WAI-ARIA patterns. This page is what you get for free, what you own, and how to verify it.

A Studio screen is composed of the grid and the edit form, both built to the WAI-ARIA patterns, giving keyboard nav, ARIA roles, and managed focus for free while you own labels, colour signals, contrast, and custom renderers.

What you get for free

What you own

The generated code is yours, so a few things are on you to keep accessible:

Keyboard reference

Key Action
Tab Move into / out of the grid (one stop), then to the toolbar and pager
Arrow keys Move the active cell
Enter / F2 Start editing the active cell (inline mode)
Esc Cancel the current edit or close the modal
Space Toggle a row checkbox (when selection is on)
Home / End, PageUp / PageDown Jump within the grid

Verify it

Automated checks catch the regressions. Run axe against the running screen in a Playwright test:

import { test, expect } from '@playwright/test'
import { injectAxe, checkA11y } from 'axe-playwright'

test('customers screen has no a11y violations', async ({ page }) => {
  await page.goto('/customers')
  await injectAxe(page)
  await checkA11y(page, undefined, { detailedReport: true })
})

Automated tools find roughly half of issues - also tab through the screen with no mouse, and try it with a screen reader (VoiceOver / NVDA) once. Both take a couple of minutes and catch what axe cannot.

See also

Related articles

  • Choosing the Most Accessible Svelte Data Grid - A practical guide to testing data grid accessibility - ARIA roles, keyboard navigation, focus management under virtualization, and screen-reader behavior - so you can verify claims yourself.
  • Cell Tooltips Done Right in a Data Grid - Tooltips in a data grid are either cheap and effective or an accessibility and performance trap. Here is how to build them correctly in SvGrid.
  • Accessibility from the Ground Up - How SvGrid bakes WAI-ARIA roles and keyboard navigation into the core - not as a post-launch checkbox, but as a design constraint that shaped every feature.