VitalsSenior Product Designer2025

Standardizing E-Commerce Accessibility Across 1,000+ Custom Shopify Themes

Engineered adaptable UI patterns to meet mobile touch-target standards without breaking legacy storefront layouts.

Product designAccessibility
Standardizing E-Commerce Accessibility Across 1,000+ Custom Shopify Themes cover

44×44px

Touch target

~80%

Themes working

1 week

Timeline

01

The problem

Vitals' Wishlist icon could be injected into any store header — but the initial implementation had several issues.

  • 01Accessibility on mobile: the tap area around the icon was too small. It didn’t meet the WCAG-recommended 44x44px minimum for touch targets, which was especially problematic on mobile devices.
  • 02Integration inconsistencies: merchants could install Vitals on multiple storefronts (Shopify and non-Shopify), each with custom themes or code.
  • 03Some themes didn’t support proper injection of the icon into headers.
  • 04Others didn’t respect accessibility standards or had layout constraints that clashed with the icon’s structure.
02

What I did

  1. Redesigned the icon wrapper for accessibility

    Problem
    The tap area was smaller than the WCAG-recommended 44x44px minimum, hurting tapability on mobile.
    Change
    Increased the icon's wrapper to 44x44px to comply with accessibility guidelines.
    Why
    This improved tapability across most devices and themes.
  2. Customization options for merchants

    Problem
    A single fixed style couldn’t match the range of storefront aesthetics merchants ran.
    Change
    Added settings for merchants to control the icon’s size, color, and badge count display.
    Why
    Ensured design consistency while allowing flexibility across diverse storefronts.
  3. Cross-theme testing

    Problem
    Theme fragmentation meant theoretical compliance wasn’t enough — real stores behaved differently.
    Change
    Tested the updated version on multiple stores; ~80% of themes worked perfectly. In the remaining 20%, edge cases appeared: misalignment where the 44px wrapper didn’t match smaller header icons, overflow and spacing issues where themes didn’t respect the full height, and badge-positioning bugs where the count floated away from the icon.
    Why
    Testing across real stores surfaced the layout tradeoffs that drove the next iteration.
Three stacked storefront header examples labeled Live version, First iteration (with height: 44px added), and Second iteration (height: 44px removed because it is a non-Shopify theme), each showing the wishlist heart icon with a badge count alongside language, search, cart, and currency controls.
Iterations of the icon in a live storefront header: the live version, the first iteration adding a fixed 44px height, and the second iteration removing it for non-Shopify themes.
03

Collaboration & tradeoffs

I worked closely with the developer to decide on the next iteration. Here’s how we resolved it.

  1. Set the height to auto instead of a fixed 44px

    Problem
    A fixed 44px height clashed with non-Shopify themes and smaller header icons, causing misalignment and layout shifts.
    Change
    Switched to height: auto, preserving alignment within diverse headers and avoiding clashes for non-Shopify store themes.
    Why
    70%+ of customers use Shopify themes that already follow accessibility practices, so height: auto reduced bugs for non-Shopify themes and edge cases while keeping the win where it mattered most.
  2. Refined icon + badge structure

    Problem
    In certain layouts the badge count drifted away from the icon, looking broken or unbalanced.
    Change
    Adjusted the internal structure so the badge count stayed visually anchored to the icon.
    Why
    Prevented scenarios where the spacing between the icon and badge appeared broken.
Three header component examples on a dark background labeled Live version, First iteration (note: added height 44px), and Second iteration (note: removed height 44px because this is a non-Shopify theme), each showing the wishlist heart icon with a badge among account, search, and cart icons.
The same three iterations isolated as components, showing how the badge stays anchored to the heart icon across the wrapper changes.
04

Results

The updated Wishlist icon is now:

  • 01Accessible on mobile and compliant with touch-target guidelines.
  • 02Easier to customize for merchants via the Vitals dashboard.
  • 03More resilient across the majority of Shopify themes and some third-party platforms.
05

What I learned

  • 01Accessibility fixes can introduce new layout issues when working in third-party environments — which requires design-engineering tradeoffs.
  • 02Testing across real stores is crucial; theoretical compliance isn’t enough when dealing with theme fragmentation.
  • 03Balancing accessibility, visual harmony, and technical constraints is key when designing UI elements that live inside external codebases.

Theoretical compliance isn’t enough — resilient accessibility in third-party environments is a design-engineering negotiation, not a checkbox.