What are the accessibility requirements and implementation strategies for custom software?
Accessibility (a11y) ensures software is usable by people with disabilities, meeting WCAG 2.1 AA standards at minimum. Core requirements: perceivable (text alternatives for images, captions for video, sufficient color contrast 4.5:1 for normal text), operable (keyboard navigable, no time-dependent interactions, no seizure-triggering content), understandable (readable content, predictable behavior, error identification), and robust (compatible with assistive technologies). Implementation: use semantic HTML elements (nav, main, article, button instead of div with click handlers), implement ARIA attributes where semantic HTML is insufficient, ensure logical tab order and focus management, provide skip navigation links, and test with screen readers (NVDA, VoiceOver, JAWS). React-specific: use react-aria or radix-ui for accessible component primitives, implement focus traps in modals and dialogs, announce dynamic content changes with aria-live regions, and manage focus on route changes in SPAs. Testing: automated testing with axe-core (integrate into CI to catch 30-40% of issues), manual keyboard navigation testing, screen reader testing (VoiceOver on Mac, NVDA on Windows), and color contrast checking with browser dev tools. Forms: associate labels with inputs, provide clear error messages linked to the field with aria-describedby, support autocomplete attributes, and group related fields with fieldset and legend. Common issues: missing alt text, insufficient color contrast, inaccessible custom dropdowns and modals, missing form labels, and focus not managed during navigation.