Boost your sales with Candy Rack

Candy Rack is officially recognized as a Built for Shopify app.
The only upsell app you'll need to maximize your Shopify store's performance. Now with a built-in cart drawer and Gemini AI.
Try for free

Tomas Janu

August 15, 2026

What your accessibility scanner misses inside your Shopify apps

Merchants running accessibility scanners started sending us reports that flagged our own markup, not their theme. So in July we audited Candy Rack's three customer-facing surfaces against WCAG 2.1 and 2.2 at level AA and fixed what we found. Here's what a scanner catches, what it misses, what we deliberately left open, and how to check the apps running on your own store.

What your accessibility scanner misses inside your Shopify apps
What your accessibility scanner misses inside your Shopify apps

This one started in our support queue. Merchants began running accessibility scanners over their stores, and some of the reports that landed with us pointed at Candy Rack's markup rather than their theme: images we inject without alt text, a heading level we skip, controls a scanner can tell are unlabeled. Fair enough. In July we went and looked properly at all three of our storefront surfaces, and what we found there turned out to be more interesting than the scanner output that prompted it.

Results from accessibility scanner for Shopify stores by Avada.
Results from accessibility scanner for Shopify stores by Avada.

Merchants aren't running those scans out of curiosity. The pressure behind them is real and measurable. Plaintiffs filed 3,117 website accessibility lawsuits in US federal court in 2025, up 27% from 2,452 in 2024, and web accessibility cases rose from 28% to 36% of all ADA Title III federal filings. Counting state courts too, UsableNet's year-end report puts the 2025 total at roughly 5,100 cases and finds that ecommerce accounted for about 70% of them. In the EU, the European Accessibility Act has applied since 28 June 2025 through each member state's transposing law, and on 4 June 2026 the Tribunal judiciaire de Caen ruled against Carrefour France under the French transposition.

Here is the gap. The standard advice for a merchant worried about this covers two things: pick a theme that scores well, and install a widget that adds an accessibility toolbar. Neither one reaches the third-party apps on the page. Your theme renders the page, and your apps inject their own markup on top of it, often as a modal that opens over everything else. A theme audit will not look inside that modal, a toolbar cannot fix it, a scanner catches only the shallow end of what's wrong in there, and until recently we couldn't have told you with any confidence what was inside ours.

What "an app breaks accessibility" actually looks like

This is not abstract, and it is not mostly about alt text. Nine patterns cover what we found across our own surfaces plus what I'd check in anyone else's app. Most map to a specific WCAG criterion, and where they don't, that's noted.

What to look for Where it shows up WCAG criterion Who can fix it
Modal opens with no dialog role, no accessible name, no focus trap, no Escape key Upsell pop-ups, cart drawers, age gates, newsletter pop-ups 4.1.2, 2.4.3, and 2.1.2 if focus is trapped with no way out. Escape-to-close comes from the ARIA authoring practices rather than a numbered criterion App vendor only
Focus outline suppressed with nothing visible in its place Any control the app styles 2.4.7 App vendor only
Controls carry tabindex="-1" while visible on screen Discount fields, collapsible panels 2.1.1 App vendor only
Icon-only buttons announce as just "button" Close X, quantity steppers, remove-item buttons 4.1.2, 1.1.1 App vendor only
Clickable element is a plain div with no role or tab stop Product thumbnails, offer cards 2.1.1, 4.1.2 App vendor only
Image alt text is missing, or generic on every image Product thumbnails inside offers 1.1.1 App vendor only
Cart total, item count or reward progress updates silently Cart drawers, free-shipping bars 4.1.3 App vendor only
Heading levels skipped by an injected block Any app block with its own title Commonly reported under 1.3.1 App vendor only
Text contrast below 4.5:1, or below 3:1 for large text (18pt, or 14pt bold) Any color you picked in the app's settings 1.4.3 You, in the app's settings

Read the last column. Eight of nine rows are things a merchant cannot fix at any price, no matter which widget is installed. That's the argument for treating app selection as an accessibility decision rather than a features decision.

What we found in our own app

The three surfaces we audited against WCAG 2.1 and 2.2 at level AA were the product page upsell pop-up, the cart pop-up shown on the way to checkout, and the slide cart drawer. Not a scanner score this time, but inspection of the rendered markup, control by control.

The results were uneven in a way I suspect is typical. The slide cart's baseline was better than I expected: close and remove controls were real buttons, every product image already carried descriptive alt text, and the checkout button already had an accessible name. The modals were where the substance was, and the same handful of problems repeated across all three surfaces, which turned out to be the useful part. Repetition means one shared fix rather than three.

Example of the two issues we fixed in Candy Rack.
Example of the two issues we fixed in Candy Rack (Block title skips a heading level (WCAG 1.3.1, Level A; Recommended-product thumbnails render with no alt attribute (WCAG 1.1.1, Level A)).

The two most serious items were not the ones the scanners had flagged. One was a suppressed focus style, which is worse than it sounds because it breaks keyboard navigation for every control inheriting it, not just the one it was written for. The other was a set of controls that stayed out of the tab order while visible on screen, which quietly turns a working feature into a mouse-only feature. Somebody navigating by keyboard doesn't get a degraded version of that feature. They get no version of it. We split the remediation into three tickets, one per surface, and closed them at the end of July.

Why we're not claiming compliance

One thing we did not close, on purpose. Every storefront color in Candy Rack is editable by you, and we don't validate contrast on the values you set. On the store we audited every configured color passed, but nothing stops a merchant from configuring their way into a 1.4.3 failure with no warning at all. Adding a contrast check to the settings UI is on our list. Until it ships, and even after, we're not going to tell you the app makes your store compliant.

None of which makes an accessibility toolbar worthless. It gives visitors controls over how your store renders, and it gives you monitoring, which is why one earns a place in our rundown of the best Shopify compliance apps next to cookie consent, GPSR, invoicing and terms. It just isn't remediation, and it can't reach inside another app's modal any more than you can. Compliance is a property of your whole storefront on a given day, and no single vendor is in a position to certify it. What a vendor can tell you is what they audited, what they changed, and what's still open.

How to check the apps on your store

You can do a useful pass yourself in about ten minutes, and you don't need a scanner. Most of what matters here is invisible to automated tools, which are good at finding missing alt attributes and contrast failures and blind to focus traps, tab order and announcements. Every scanner report that started this landed in the first category. Not one of them flagged the two issues that actually locked people out.

  1. Push your mouse away from the keyboard and leave it there.
  2. Tab through your product page and watch for the focus ring. If it vanishes anywhere, stop. You've found the blocker already.
  3. Trigger every surface your apps own: add to cart, open the cart drawer, start checkout, wait out any pop-up that appears on a timer.
  4. In each one, check four things. Can you Tab into it? Does Tab stay inside it instead of wandering onto the page behind? Does Escape close it? Does focus return to whatever you clicked to open it?
  5. Operate every control by keyboard alone, including quantity steppers, variant pickers, discount fields and remove buttons. Anything you can reach with a mouse but not a keyboard is a 2.1.1 failure.
  6. Switch on VoiceOver (Cmd+F5 on a Mac) or NVDA and listen to the close button and the product images. "Button" and "Product" are both failures.
  7. Change a quantity and listen for whether the new total is announced. If the update never receives focus and nothing is announced, that's a 4.1.3 failure.

Anything you find in steps 3 to 7 belongs to the app vendor. Which brings us to the last part.

Navigatin Candy Rack demo store using voice control on Mac.
Navigatin Candy Rack demo store using voice control on Mac.

Four questions worth asking a vendor

Ask them before you install, and treat vagueness as an answer.

  1. Have you audited your app storefront UI against WCAG 2.1 or 2.2 at level AA, and when?
  2. Do your modals implement dialog semantics and focus management, meaning role, accessible name, focus trap, Escape, and focus return?
  3. Can every feature in your app be completed using a keyboard alone?
  4. And what's still open?

That fourth question is the one that tells you the most. A vendor with a real answer will have one, because everybody has something open. My own read is that "we're fully compliant" usually means nobody has looked, and it's worth remembering what the FTC's accessiBe order actually turned on: not the word compliant, but a compliance claim the company couldn't substantiate.

In practice, the party plaintiffs and regulators pursue is the merchant operating the store, not the vendors behind its parts. That's uncomfortable, because a good share of what ships to your shoppers is code you didn't write and can't edit. The part you do control is which vendors you choose and what you ask them for. If you're weighing up apps and want the same lens applied to conversion instead of compliance, our upsell strategy guide and our checkout optimization guide cover that side. If you sell into the EU, the withdrawal button requirement and the other European constraints we've written about are landing in the same period as the EAA.

The fixes from that audit shipped at the end of July and are live in Candy Rack, including in the slide cart and the rewards bar. If you find something we missed, tell us and we'll fix it rather than argue about severity.

This article describes our own audit and is general information, not legal advice. For your obligations under the ADA, the EAA or national transposing law, talk to a lawyer.

Tomas Janu

Tom loves writing about upselling, conversion optimization, and e-commerce trends. He is one of our co-founders, and you can sometimes talk to him if you contact our support team. Make sure to follow him on LinkedIn for more Shopify-related tips and news.
Try for freeCandy Rack preview

Latest articles

All articles

Boost your Shopify business with our apps

All our apps are designed to help you grow your Shopify business. Check them out and take advantage of the free trial period.

Boost my Shopify