Why Accessibility Should Never Be an Afterthought

Building accessible software isn't just about compliance—it's about building better systems that work for everyone. Here's why I make it a first-class concern.

The Problem with “We’ll Add Accessibility Later” #

I’ve heard it too many times: “We’ll add accessibility after launch.” The intent is good—ship fast, iterate, improve. But accessibility doesn’t work that way.

When you bolt on accessibility after the fact, you’re not improving your product. You’re patching holes in a foundation that was never meant to support it. Accessibility isn’t a feature. It’s a constraint that shapes better design from day one.

What I’ve Learned from Building Accessible Systems #

Over the past few years, I’ve built several production systems with WCAG 2.1 AA compliance as a baseline requirement. Here’s what surprised me:

  1. Accessible components are more reusable. When you design for keyboard navigation and screen readers, you’re forced to think about component APIs and state management more carefully.

  2. Edge cases surface earlier. Accessibility requirements expose UI inconsistencies that would have bitten you later anyway.

  3. Performance improves. Semantic HTML is lighter than div soup. Progressive enhancement means your core features work without JavaScript.

The Real Cost of Inaccessibility #

Let’s talk numbers. According to the WebAIM Million report, 96.3% of home pages have detectable WCAG 2 failures. The most common issues?

  • Low contrast text (83.6%)
  • Missing alt text (58.2%)
  • Empty links (50.1%)
  • Missing form labels (45.9%)

These aren’t edge cases. These are fundamental usability failures affecting millions of users.

But here’s what bothers me most: every one of these issues is easier to prevent than to fix. Writing good alt text takes 10 seconds when you’re creating the image component. Retrofitting 500 images with proper descriptions? That’s a week-long project.

How I Approach Accessibility #

My process is simple:

  1. Start with semantic HTML. Use <button> for buttons, <a> for links, <nav> for navigation. The platform does half the work for you.

  2. Test with a keyboard first. Before I test with a mouse, I tab through the interface. If I can’t reach it, operate it, or understand it with keyboard alone, it’s broken.

  3. Use ARIA sparingly. ARIA is a scalpel, not a sledgehammer. If you’re adding role="button" to a div, you’re doing it wrong. Just use a <button>.

  4. Build reusable patterns. Create accessible components once, use them everywhere. Your button component should handle focus management, keyboard events, and ARIA attributes by default.

The Developer Experience Argument #

Here’s the part nobody talks about: accessible code is better code.

When you write accessible components, you’re forced to:

  • Think about edge cases
  • Write more semantic markup
  • Separate concerns properly
  • Test more thoroughly

These are good engineering practices regardless of accessibility. Accessibility just gives you a framework to enforce them.

Start Small, Build Momentum #

You don’t have to fix everything overnight. Start with these three things:

  1. Run axe DevTools on your pages. Fix the critical issues. It’ll take an hour and catch 80% of obvious problems.

  2. Add keyboard navigation to one interactive component. Learn the patterns. Understand focus management. Apply it everywhere.

  3. Write better alt text. Not “image of person”, but “Sarah Chen presenting at React Conf 2024, showing a slide about concurrent rendering.”

The Bottom Line #

Building accessible software costs less than retrofitting it. It produces better code. It reaches more users.

The question isn’t “Can we afford to prioritize accessibility?” It’s “Can we afford not to?”


Further Reading:

Want to discuss this?

I write about systems thinking, accessibility, and building software that lasts. If this resonated with you, let's talk.