Edit: Article Building accessible components from scratch

Accessibility is not a layer you add at the end; it is a constraint that makes your components better for everyone. Keyboard support, in particular, forces you to think clearly about focus and state.

Reach for native elements before ARIA. A real button and a real label come with behaviour the platform already gets right, while a div pretending to be a button is a maintenance burden you signed up for.

Test with a screen reader at least once per component. It is humbling, it is fast, and it catches the gap between markup that validates and markup that is actually usable.