ACCESSIBILITY

8 MINS

How do you build accessibility into a product that’s already live?

If your product is already live, accessibility can feel like something you’ve missed your chance to do right.

This piece breaks that myth and walks through what teams can still fix mid-cycle, practically and intentionally, without starting over.

“We’ll fix accessibility in the next redesign.”

Almost every product team has said this at some point, and it sounds okay, strategic even. It also guarantees that accessibility never actually gets fixed because redesigns are rare and take a lot of time. Besides, they almost never address the systems that caused the problem in the first place.

When you build a product, it's because you've identified a gap, and you want to serve a need. In mainstream products especially banking, payments, food delivery, transport, government platforms, the intent is usually implicit: this should work for everyone who needs it.

“We’ll fix accessibility in the next redesign.”

Almost every product team has said this at some point, and it sounds okay, strategic even. It also guarantees that accessibility never actually gets fixed because redesigns are rare and take a lot of time. Besides, they almost never address the systems that caused the problem in the first place.

When you build a product, it's because you've identified a gap, and you want to serve a need. In mainstream products especially banking, payments, food delivery, transport, government platforms, the intent is usually implicit: this should work for everyone who needs it.

But somewhere along the way, this idea of "everyone" ends up being meaning only the mainstream.
But somewhere along the way, this idea of "everyone" ends up being meaning only the mainstream.
But somewhere along the way, this idea of "everyone" ends up being meaning only the mainstream.

In the building process, speed and consistency take the lead. Brand language and business realities take priority, design systems are built around the most visible users, and roadmaps take into consideration the most common flows. Amidst all of this, often without ill-intent, accessibility slips into the zone of a compliance checklist.

Anything that slows things down becomes an edge case that's documented, then deprioritized, and then possibly forgotten as other, more urgent releases and fixes come up.

Over time, these decisions form the bedrock of live products.

And then there’s an audit or a new court ruling, a new circular or a user complaint on social media, and accessibility comes back into the conversation. This time it’s not a design question, but a problem to deal with. Teams take a look at the product and reach the same conclusion again:

”We’ve already shipped this, we’ll fix it later.”

In the building process, speed and consistency take the lead. Brand language and business realities take priority, design systems are built around the most visible users, and roadmaps take into consideration the most common flows. Amidst all of this, often without ill-intent, accessibility slips into the zone of a compliance checklist.

Anything that slows things down becomes an edge case that's documented, then deprioritized, and then possibly forgotten as other, more urgent releases and fixes come up.

Over time, these decisions form the bedrock of live products.

And then there’s an audit or a new court ruling, a new circular or a user complaint on social media, and accessibility comes back into the conversation. This time it’s not a design question, but a problem to deal with. Teams take a look at the product and reach the same conclusion again:

”We’ve already shipped this, we’ll fix it later.”

“People’s touchpoints with each other and with society are full of mismatched interactions. Design is a source of these mismatches, and can also be a remedy.”
“People’s touchpoints with each other and with society are full of mismatched interactions. Design is a source of these mismatches, and can also be a remedy.”
“People’s touchpoints with each other and with society are full of mismatched interactions. Design is a source of these mismatches, and can also be a remedy.”

Why accessibility feels “too late” once a product is live

Why accessibility feels “too late” once a product is live

Most accessibility issues aren’t found in isolated components or screens. They’re a part of the overall user journey, functionality and site or app structure. This is because they take root early in decisions that feel neutral at the time.

Decisions about how typography scales, how colours are tokenised, how components are labelled, how error states are communicated, and how confirmation is conveyed after an action is made. These often presume the user’s sight, speed and precision, and don’t just break one screen, but have a cascading effect on all.

Once these assumptions are embedded into a design system or codebase, they’re not “issues” anymore, they’re “just how the product works.” Changing them feels risky because the impact is not localised. A small fix can threaten to ripple across flows, layouts and also teams.

Most accessibility issues aren’t found in isolated components or screens. They’re a part of the overall user journey, functionality and site or app structure. This is because they take root early in decisions that feel neutral at the time.

Decisions about how typography scales, how colours are tokenised, how components are labelled, how error states are communicated, and how confirmation is conveyed after an action is made. These often presume the user’s sight, speed and precision, and don’t just break one screen, but have a cascading effect on all.

Once these assumptions are embedded into a design system or codebase, they’re not “issues” anymore, they’re “just how the product works.” Changing them feels risky because the impact is not localised. A small fix can threaten to ripple across flows, layouts and also teams.

The accruing accessibility debt problem

The accruing accessibility debt problem

Slowly, the debt builds up. The bugs turn into a structural condition, and one that’s hard to address precisely because it touches so much of the product at once.

Meanwhile, the product is also functioning, but selectively. It works fine when you can see well, read well at default sizes, tap accurately at all manner of targets, and make sense of visual feedback when something fails. But for a user who can’t do those things, the experience frays. It doesn’t fully collapse, but it does become uncertain, and independence erodes.

Slowly, the debt builds up. The bugs turn into a structural condition, and one that’s hard to address precisely because it touches so much of the product at once.

Meanwhile, the product is also functioning, but selectively. It works fine when you can see well, read well at default sizes, tap accurately at all manner of targets, and make sense of visual feedback when something fails. But for a user who can’t do those things, the experience frays. It doesn’t fully collapse, but it does become uncertain, and independence erodes.

So, how do you begin to address all of this?

So, how do you begin to address all of this?

Before you dive into fixes, do an accessibility audit of your product. This will give you at hand a to-do list or roadmap of accessibility problems.

Before you dive into fixes, do an accessibility audit of your product. This will give you at hand a to-do list or roadmap of accessibility problems.

  1. Start with incremental fixes

You can prioritise what to fix instead of a full overhaul, and a more manageable set of incremental improvements will still improve the experience by a degree.

You can prioritise what to fix instead of a full overhaul, and a more manageable set of incremental improvements will still improve the experience by a degree.

  1. Use automated scanning tools

Tools like axe, Wave or Lighthouse can help catch a portion of common issues like missing alt text, low contrast and so on.

b. Do manual accessibility testing

  • Increase your browser’s text size or use zoom to see if layouts are breaking to check for responsive or text-scaling issues.

  • Navigate your app using only a keyboard to make sure all interactive elements can be reached and used without a mouse.

  • Test with screen readers like VoiceOver, NVDA or Talkback to check that content is announced in a logical order, images have appropriate descriptions, forms and buttons are labelled correctly, and all errors are conveyed with audio.

  • You can also consider other assistive tech, like screen magnifiers or high-contrast modes, for a more thorough evaluation.

c. Evaluate the issues against accessibility standards

This way you can eventually arrive at a point where you’re meeting Level AA compliance, which is the typical legal baseline.

d. Prioritise your fixes

This will make the usability experience much better with minimal disruption. These could be adding missing alt text, or fixing the heading structure, boosting the color contrast or improving screen reader support.

e. Execute a triage-based rollout

Have a triage roll-out where critical issues and blockers get fixed immediately, and then larger redesigns like reworking a complex widget, can be marked for later.

Once you have this roadmap, your design and engineering teams can start work on the fixes.

Once you have this roadmap, your design and engineering teams can start work on the fixes.

2. Revisit foundational design decisions

Even if your design system wasn’t initially built with accessibility in mind, it’s rarely a dead end. You can retrofit inclusive design into it. For this, you need to start by revisiting foundational style choices, such as colors, typography and spacing.

Even if your design system wasn’t initially built with accessibility in mind, it’s rarely a dead end. You can retrofit inclusive design into it. For this, you need to start by revisiting foundational style choices, such as colors, typography and spacing.

  1. Establish clear colour meaning and non-colour cues

In a live product, colour accessibility usually isn’t broken because someone picked the wrong shade of red. It’s broken because that red stops meaning one clear thing.

When the same red is used for errors, for emphasis, and for destructive actions, users can’t tell what kind of situation they’re in without stopping to think. And accessibility really breaks the moment users have to decode the interface instead of reading it instinctively.

This matters more for people who see less of the screen at once because they’re zoomed in, using magnification, or just processing more slowly. They don’t have the luxury of scanning the whole page for context. If a colour doesn’t reliably tell them “this is an error” or “this needs attention,” interactions can become question marks.

In a live product, colour accessibility usually isn’t broken because someone picked the wrong shade of red. It’s broken because that red stops meaning one clear thing.

When the same red is used for errors, for emphasis, and for destructive actions, users can’t tell what kind of situation they’re in without stopping to think. And accessibility really breaks the moment users have to decode the interface instead of reading it instinctively.

This matters more for people who see less of the screen at once because they’re zoomed in, using magnification, or just processing more slowly. They don’t have the luxury of scanning the whole page for context. If a colour doesn’t reliably tell them “this is an error” or “this needs attention,” interactions can become question marks.

"It also messes with accessibility cues. Colour is supposed to reinforce labels, structure, and behaviour. When its meaning shifts, those cues fall out of sync."
"It also messes with accessibility cues. Colour is supposed to reinforce labels, structure, and behaviour. When its meaning shifts, those cues fall out of sync."
"It also messes with accessibility cues. Colour is supposed to reinforce labels, structure, and behaviour. When its meaning shifts, those cues fall out of sync."

It also messes with accessibility cues. Colour is supposed to reinforce labels, structure, and behaviour. When its meaning shifts, those cues fall out of sync. A screen reader might announce an error, but visually it looks like a highlight. Now different users are getting different signals from the same screen.

That’s why this can’t be fixed screen by screen because the problem isn’t in the UI, but in the system itself. Colour meaning lives in the design system. If that isn’t stable there, it won’t be stable anywhere.

Here are a few dos and don’ts that can help you:

It also messes with accessibility cues. Colour is supposed to reinforce labels, structure, and behaviour. When its meaning shifts, those cues fall out of sync. A screen reader might announce an error, but visually it looks like a highlight. Now different users are getting different signals from the same screen.

That’s why this can’t be fixed screen by screen because the problem isn’t in the UI, but in the system itself. Colour meaning lives in the design system. If that isn’t stable there, it won’t be stable anywhere.

Here are a few dos and don’ts that can help you:

  1. Make sure your product’s colour palette provides enough contrast.

If contrast is low, people quite literally can’t read or identify what’s interactive, especially outside ideal conditions.

There should be enough contrast between:

  • the text and the background

  • interactive elements and their surroundings

The recommendation from WCAG guidelines is at least a 4:5:1 contrast ratio for normal text and 3:1 for large text. Falling short here affects users with visual impairments, and also makes content harder to read for other users in low light, on older screens or even when someone is fatigued.

While your core palette holds brand colors that are more about emotion and identity, functional colours focus on usability and help with visual cues like errors, alerts and background distinctions. Similarly, having an extended palette helps with different states.

b. Use contrast checkers on real UI elements

Running a contrast checker on sample screens isn’t enough. Contrast needs to be checked where it actually matters: primary buttons, secondary text, helper labels, error messages, and disabled states.

This is important because contrast failures are often contextual. A colour might pass against white, but fail against a tinted card background. Or it might work for large headings but not for body text.

Checking contrast at the element level helps you catch these mismatches early, instead of discovering them later through audits or complaints.

Prompt for a full length capture tool for Cassini
Prompt for a full length capture tool for Cassini

On LinkedIn, A Paytm user flagged a legibility and contrast issue being faced by his mother while using the app. The team responded with the fix below. (Source)

Prompt for a full length capture tool for Cassini
Prompt for a full length capture tool for Cassini

c. Fix colour issues where they originate, the token layer

Before you change anything, list and inventory all colour tokens currently used, and where they’ve been used, such as text, backgrounds, borders, icons, charts, and states like hover, active, disabled, and error.

This will show where the same tokens have been used for multiple purposes, like text, decoration and system states.

d. Replace raw colour values with meaning-based tokens

For instance, if your system relies on tokens like this: <blue-500>, <red-300>, or <grey-700>, then, colour meaning lives in people’s minds. Someone has to remember what each colour stands for. And that memory won’t stay consistent across teams or time.

In an accessible design system, the colour token architecture describes purpose and should look like this: <text-primary>, <text-secondary>, <action-primary>, and <status-error>.

Prompt for a full length capture tool for Cassini
Prompt for a full length capture tool for Cassini
Prompt for a full length capture tool for Cassini
Prompt for a full length capture tool for Cassini
Prompt for a full length capture tool for Cassini

Google's Material Design 3, released in 2021, introduced a refined color system based on semantic tokens like color-primary and color-on-primary. These tokens allow for flexible theming (like light/dark mode) and ensure accessibility through contrast-aware design. This token-based system is used across Google's ecosystem—including Gmail, Google Drive, and Android—helping teams scale design consistently and maintain visual coherence across products.

e. Use semantic tokens and test them in pairs

Tokens like Primary, Success, Warning, Error are only useful if they work in the contexts they’re used in. That means testing token pairings, not individual colours.
For example:

  • does <status-error-text> meet 4.5:1 against all approved surfaces?

  • does <text-secondary> ever get placed on backgrounds it can’t support

This is how teams move from “we should remember contrast” to “the system enforces it.”

f. Never rely on colour alone to convey meaning

If an input error state is indicated by a red outline, also include an icon or text message. If a button’s active state is shown by colour, also provide a shape or label change.

g. Consider offering a high-contrast theme or mode for users who need it

This is specially so in the case of apps where users often review dense data like fintech apps. A high-contrast theme with blacks/whites or high-contrast colours can greatly help low-vision users.

Conclusion - TBD

The conclusion description is pending, TBD.

The conclusion description is pending, TBD.

Subscribe to Design & Tech Weekly

An often riveting list of design and tech resources!

©2025 Canvs

Subscribe to Design & Tech Weekly

An often riveting list of design and tech resources!

©2025 Canvs

Subscribe to Design & Tech Weekly

An often riveting list of design and tech resources!

©2025 Canvs

Subscribe to Design & Tech Weekly

An often riveting list of design and tech resources!

©2025 Canvs