Part IV β The Reach Β· Lesson 8.1
Accessibility Overview
In one linePerceivable, operable, understandable, robust β four principles that cover every rule you'll ever be given.
Where you've seen it<div onClick={β¦}> styled to look like a button. Perfect with a mouse, invisible to a keyboard and a screen reader.
Diagram
POUR β every WCAG rule descends from one of these
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β PERCEIVABLE can they SENSE it? β
β fails: no alt text Β· 2:1 contrast Β· info by colour alone β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β OPERABLE can they USE it? β
β fails: mouse-only controls Β· focus traps Β· 3s timeouts β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β UNDERSTANDABLE can they FOLLOW it? β
β fails: "Error" with no cause Β· labels that vanish on typingβ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β ROBUST does it work with THEIR tools? β
β fails: custom widgets with no roles Β· div soup β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββWHO THIS IS ACTUALLY FOR β permanent is the small share
permanent blind Β· deaf Β· one arm Β· motor impairment
temporary broken wrist Β· eye surgery Β· ear infection
situational bright sunlight Β· holding a baby Β· noisy train
Β· slow network Β· a trackpad that just died
Designing for the first column improves the product for everyone
in the other two β which is most of your users, some of the time.CONFORMANCE LEVELS β what teams actually target
A bare minimum keyboard access, alt text
AA the normal target 4.5:1 contrast, visible focus, labels
β what laws and contracts usually require
AAA rarely required 7:1 contrast, sign languageHow it works
- Use semantic HTML first.
<button>,<a href>,<label>,<nav>,<main>come with roles, keyboard behaviour, and focus for free. - Reach for ARIA only when HTML has no equivalent β and remember the first rule of ARIA is not to use ARIA.
- Test with a keyboard on every feature. It takes thirty seconds and catches the majority of real defects.
- Treat it as a definition-of-done item, not a pre-launch audit β retrofitting accessibility costs many times more than building it in.
Trade-offs
| Semantic HTML | Custom + ARIA |
|---|---|
| Roles, keyboard, focus built in | Every behaviour hand-written |
| Works across assistive tech | Needs testing per screen reader |
| Less styling control | Full styling control |
| Almost no bugs | Where most a11y bugs live |
The business case, briefly: it's a legal requirement in many markets, it's a large addressable audience, and the same semantic markup that helps screen readers helps search engines and your own test queries (4.8).
Interview angle
"How do you approach accessibility in a component library?"
- Start from semantic elements and only build custom widgets when the platform genuinely lacks one.
- Bake keyboard interaction and focus management into each component, so consumers get it by default.
- Automate what's automatable (axe in CI), and keep a manual keyboard-and-screen-reader pass for new patterns.
Recap
- POUR: perceivable, operable, understandable, robust.
- Semantic HTML solves most of it before ARIA is needed.
- Permanent disability is the smallest share of the people this helps.