Accessibility in B2B SaaS: the procurement blocker nobody plans for
Enterprise and public-sector buyers ask for a VPAT. Building accessibly from the start costs far less than retrofitting under deadline.
Accessibility in B2B rarely arrives as a values conversation. It arrives as a procurement questionnaire, three weeks before a contract, asking for a conformance report you do not have.
The commercial reality
Public sector and large enterprises increasingly require documented accessibility conformance. Not having it removes you from consideration regardless of how good the product is — and remediation under deadline is the most expensive way to acquire it.
What actually blocks people
The recurring issues in our reviews. Automated scanners catch roughly the first two; the rest need keyboard testing.
- Custom controls with no keyboard behaviour5
Divs acting as buttons, selects, tabs
- Focus lost or trapped5
Modals with no escape, invisible focus ring
- Colour as the only meaning4
Status shown purely as red or green
- Errors announced nowhere4
Screen reader never reaches the message
- Tables without headers3
Unnavigable non-visually
The things that block people most
In our experience the same handful of issues account for most real-world failures:
- Custom controls built from divs with no keyboard behaviour or role
- Focus that disappears, or is trapped inside a modal with no escape
- Colour as the only carrier of meaning — status shown purely as red or green
- Forms where the error is announced nowhere a screen reader will reach
- Data tables without headers, which are unnavigable non-visually
Automated checks find about a third
Linters and scanners catch contrast and missing labels. They cannot tell you whether the focus order makes sense or whether your custom combobox is usable. Keyboard-only testing, done for twenty minutes per release, finds more than any tool.
Where to apply the fix
- Fixed per featureDecays with the next feature
- Fixed in the component libraryBecomes a property of the product
- Automated scanners onlyCatches roughly a third
- Twenty minutes of keyboard testing per releaseCatches most of the rest
Build it into the component library
Accessibility applied per-feature decays. Applied once, in the shared components everything is built from, it holds. That is the difference between a one-off remediation project and a property of the product.