
Building Accessible Interfaces That Don't Suck
“Accessibility is not a feature. It is a social trend — one that will determine which products survive the decade.”
I used to treat accessibility as the thing you bolt on at the end — run Lighthouse, fix the obvious contrast failures, add some alt text, call it done. Then I spent a week doing moderated testing with screen reader users, and I haven't been able to un-see it since.
Start with semantic HTML — seriously
The single highest-leverage thing you can do is use the right HTML element. A button that's a div is twenty lines of ARIA and JavaScript to achieve what the browser gives you for free with one word. Heading hierarchy is free SEO and free navigation for screen reader users. Form labels are free error prevention for everyone.
I've audited a lot of codebases. The accessibility debt always correlates perfectly with the div soup. Pick up Tailwind, pick up React — but please pick up semantic HTML first.

Focus management is the hidden battlefield
Most teams get contrast ratios right because Figma shows them when they fail. Almost nobody gets focus management right, because the failure is invisible until you unplug your mouse. When your modal opens, where does focus go? When it closes, where does it return? If the answer to either question is 'I don't know', you have a problem.
A well-managed focus flow doesn't just help keyboard and screen reader users — it helps anyone who tabs through a form, which is a lot of people. Build it in from day one. Retrofitting it is the worst.
The business case is already there
One in five people in Australia has some form of disability. In the US, the DOJ has been increasingly aggressive in applying ADA requirements to digital products. In the UK, the PSBAR regulations apply to public sector bodies. The legal risk is real, and it's growing.
More practically: accessible products are better products. High contrast helps people in sunlight. Good keyboard navigation helps power users. Clear focus rings help elderly users on slow trackpads. You're not building for edge cases — you're building for humans.