Goal
Ensure custom UI components expose name, role, and value to assistive technologies.
Loading ...
Success Criterion · WCAG 4.1.2
For all user interface components (including but not limited to: form elements, links and components generated by scripts), the name and role can be programmatically determined; states, properties, and values that can be set by the user can be programmatically set; and notification of changes to these items is available to user agents, including assistive technologies.
Goal
Ensure custom UI components expose name, role, and value to assistive technologies.
What to do
For custom controls, ensure role, accessible name, states, and values are programmatically determinable and updated.
Why it matters
If assistive technologies can’t determine what a component is or its state, users can’t operate it.
Success criterion
Summarized directly from the official Understanding document so teams can quote the requirement accurately.
For all user interface components (including but not limited to: form elements, links and components generated by scripts), the name and role can be programmatically determined; states, properties, and values that can be set by the user can be programmatically set; and notification of changes to these items is available to user agents, including assistive technologies.
Intent
Benefits
Why it matters
Summaries drawn from the Understanding document help you socialize impact statements with product stakeholders.
Users may not know what a control does or whether it is on/off.
Controls may be impossible to operate with AT if states aren’t exposed.
All interactive controls—especially custom widgets—must expose an accessible name and role, and must communicate current state/value (checked, expanded, selected, etc.) and updates to assistive technologies.
Reference: All summaries and highlights originate from Understanding WCAG 4.1.2 and the W3C quick reference.
Examples
Share pass/fail snapshots to coach designers, engineers, QA, and content authors.
Pass
Uses `role="switch"` with `aria-checked` updated on toggle.
Fail
Clickable div toggles visually but exposes no role or state.
Pass
Button uses `aria-expanded` and controls region via `aria-controls`.
Fail
Accordion opens visually but AT receives no state change.
Evidence to keep
Capture artifacts for VPATs, procurement reviews, and regression testing.
Official resources
Keep these links handy when writing acceptance criteria or responding to audits.
Implementation checklist
Testing ideas
Related success criteria