← All work

Before and after: fixing a customised Shopify theme

What was broken, who it affected, and what we changed, step by step.

Example project on a test store. The problems reproduce issues we often find on real Shopify stores; the fixes are the same ones we make for clients.

Results

Automated check with axe-core against WCAG 2.2 AA rules:

Accessibility errors found by the automated check
PageBeforeAfter
Home page32 errors0
Collection page18 errors0
Product page19 errors0

Automated tools catch only part of the problem. The three most serious issues below (1–3) were found by testing the store with a keyboard and checking what a screen reader announces.

1. Shoppers could not choose a colour

Blocks purchaseWCAG 2.1.1 KeyboardWCAG 4.1.2 Name, Role, Value

The colour swatches were plain shapes that only responded to a mouse click, and the original drop-down was hidden. Keyboard and screen reader users could not select a colour, so they could not buy any product with colour options.

Before: product page with round colour swatches. After pressing Tab, keyboard focus skips the swatches and lands on the Add to cart button, which shows no clear focus outline. The button text is white on light orange.
Before. Tab skips the swatches; focus is barely visible.
After: the same product page. The second colour swatch is selected with the arrow key and has a thick black focus ring. The Add to cart button text is now dark on orange.
After. Swatches work with Tab and arrow keys and show focus.

What we changed

2. The newsletter popup left keyboard users stuck

WCAG 2.1.1 KeyboardWCAG 2.4.3 Focus OrderWCAG 4.1.2 Name, Role, Value

The popup covered the page, but keyboard focus stayed on the page behind it. The close "×" could only be clicked with a mouse, Escape did nothing, and the subscribe button had no name.

Before: home page dimmed by a newsletter popup. There is no visible focus anywhere; keyboard focus is on links hidden behind the overlay.
Before. Focus is lost behind the overlay.
After: the same popup. The email field inside the popup has keyboard focus and a clear black outline. A close button is in the top corner.
After. Focus moves into the popup.

What we changed

3. Keyboard focus was invisible

WCAG 2.4.7 Focus Visible

A single line of custom CSS removed the focus outline from every element. People who navigate with a keyboard could not see where they were on the page. See the product page screenshots above.

We replaced it with a clear focus ring that appears only for keyboard navigation, so mouse users see no change to the design. On product cards the ring is drawn inside the card, so neighbouring cards cannot hide it.

4. Icon buttons and links had no names

WCAG 4.1.2 Name, Role, ValueWCAG 2.4.4 Link Purpose

The heart icons on product cards and the social media icons looked fine, but a screen reader could only announce them as button and link.

What a screen reader announces
ElementBeforeAfter
Heart icon on a product cardbuttonAdd The Complete Snowboard to wishlist, toggle button, not pressed
Instagram iconlinkInstagram, link, opens external website in a new window

5. Text and buttons were too faint to read

WCAG 1.4.3 Contrast (Minimum)

Light grey text and white text on light orange buttons were hard to read, especially on phones outdoors and for people with low vision. WCAG asks for a contrast ratio of at least 4.5:1 for normal text.

Before: home page top. The promo bar text and the Shop the sale link are pale grey. The banner title Winter Collection is almost invisible, and the Shop now button has white text on pale orange.
Before. Pale text and a near-invisible banner title.
After: the same area. The promo bar text is dark grey with an underlined link, the banner title is white on a dark panel, and the Shop now button has dark text.
After. Same brand colours, readable text.
Contrast ratios (minimum 4.5:1)
ElementBeforeAfter
Promo bar text1.96:16.71:1
Add to cart button text1.82:19.54:1
Product price2.38:17.00:1
Banner "Shop now" button1.34:112.96:1

We kept the orange brand colour and changed only the text colour on top of it.

6. The home page banner was invisible to screen readers and keyboards

WCAG 1.1.1 Non-text ContentWCAG 2.1.1 Keyboard

The banner image had no text alternative, and the "Shop now" button was a decorated piece of text that only reacted to mouse clicks. We added a text alternative and turned "Shop now" into a real link.

7. Prices were marked up incorrectly by the theme

WCAG 1.3.1 Info and Relationships

The theme wrapped prices in list markup that was structured incorrectly, which can confuse screen readers. We replaced it with simple, valid markup without changing how prices look.

How we test

These fixes remove the barriers listed above. On their own they do not guarantee full WCAG conformance or legal compliance.

Want to know how your store does?

Send your store's address. You get the three most important problems with screenshots, free.