FSD Frontend System Design

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.

  • Time13 min
  • DiagramPOUR principles mapped to real failures
  • Chapter8 Β· Accessibility

Diagram

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            β”‚
  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
diagram
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.
diagram
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 language

How it works

  1. Use semantic HTML first. <button>, <a href>, <label>, <nav>, <main> come with roles, keyboard behaviour, and focus for free.
  2. Reach for ARIA only when HTML has no equivalent β€” and remember the first rule of ARIA is not to use ARIA.
  3. Test with a keyboard on every feature. It takes thirty seconds and catches the majority of real defects.
  4. 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 HTMLCustom + ARIA
Roles, keyboard, focus built inEvery behaviour hand-written
Works across assistive techNeeds testing per screen reader
Less styling controlFull styling control
Almost no bugsWhere 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.