Start with semantic HTML
Use a button for an action, a link for navigation, a heading for structure, and a form label for every input. Semantic elements provide useful behavior before any custom styling is applied.
Keyboard interaction is a requirement
Every interactive control should be reachable with Tab, have a visible focus state, and respond to the expected keyboard actions. Custom dropdowns and dialogs need careful focus management.
State should be understandable
Loading, success, and error states must be announced or visually clear. Do not communicate important information with color alone, and ensure text remains readable in both light and dark themes.
Test with assistive technology
Automated audits are helpful, but they cannot replace keyboard-only navigation and screen-reader testing. Accessibility is most effective when it is considered during component design rather than added at the end.
