← Back to Writing
4 min read

Performance is an Accessibility Issue


When we talk about web accessibility, we usually mean disability-related access needs. Screen readers, keyboard navigation, color contrast. These matter enormously. But there is another dimension of accessibility that gets less attention: performance.

Who Slow Websites Exclude

A user on a flagship phone with a 5G connection in a major city experiences the web very differently from a user on a three-year-old mid-range Android on a 3G network in a rural area. Both are real users. Both deserve a usable experience.

The global average page load time on mobile is over 8 seconds. For users in emerging markets, that number is higher. For users with data caps, every kilobyte has a cost. Shipping a 2MB JavaScript bundle is not a neutral technical decision — it is a choice about who can use your product.

The Core Web Vitals as Accessibility Metrics

Google's Core Web Vitals measure three things: loading performance (LCP), interactivity (INP), and visual stability (CLS). Each of these has an accessibility dimension.

LCP — a slow LCP means the main content isn't visible for seconds. For users with cognitive disabilities who need to orient quickly, this creates unnecessary cognitive load.

INP — high interaction delay means the UI feels broken. For users with motor disabilities who use switch access or other assistive technology, an unresponsive interface is actively unusable.

CLS — layout shifts cause users to lose their place or accidentally activate the wrong element. For users with motor disabilities, activating the wrong element can require significant effort to undo.

Practical Steps

Audit your JavaScript bundle. Remove unused dependencies. Lazy-load below-the-fold content. Compress images. Use a CDN. These are not advanced optimizations — they are basic hygiene that disproportionately helps your most constrained users.

// Before: loads entire library upfront
import { format } from 'date-fns';

// After: dynamic import, loads only when needed
const { format } = await import('date-fns');

Performance work and accessibility work serve the same goal: making your product usable by the broadest possible range of people. They should be treated as one practice.