Dawn Theme: 23 WCAG 2.2 AA Failures and the Fixes That Pass
TABLE OF CONTENTS
- Why Audit Dawn Specifically?
- Failures 1-5: Image and Media (Perceivable)
- Failures 6-10: Color and Contrast (Perceivable)
- Failures 11-15: Keyboard and Focus (Operable)
- Failures 16-20: Forms and Errors (Understandable)
- Failures 21-23: Robustness and Status (Robust)
- What Does the Full Patch Set Look Like?
- Frequently Asked Questions
Shopify's Dawn reference theme is the cleanest semantic-markup baseline of any major Shopify theme — and it still has 23 specific WCAG 2.2 Level AA failures on a default install. Most premium Shopify themes have substantially more. This article catalogs the 23 Dawn-specific failures, maps each to its WCAG criterion, and gives the source-code patch (Liquid template, CSS, or JavaScript) that resolves it. The patches are version-controlled through Shopify Theme CLI, ship through Git pull request, and persist across theme updates.
Why Audit Dawn Specifically?
Dawn is Shopify's reference theme and the baseline for Theme Store partners. Its accessibility profile sets the floor on every Shopify theme; Dawn's 23 default failures appear in nearly every Theme Store-approved theme that builds on the same primitives. The pattern: fix Dawn, you've fixed the underlying primitives that show up across the Shopify theme ecosystem.
Dawn is also open-source on Shopify's Dawn GitHub repository, which means the failures are publicly verifiable and the patches can be validated against the source. For broader Dawn context, see our Shopify Dawn theme accessibility and most accessible Shopify themes 2026 ranking.
Failures 1-5: Image and Media (Perceivable)
Failure 1: Product gallery thumbnails lack focus indicators (WCAG 2.4.7). The gallery thumbnails receive keyboard focus but the default focus ring is suppressed. Patch: add `*:focus-visible { outline: 3px solid var(--focus-ring); outline-offset: 2px; }` scoped to the gallery component.
Failure 2: Hero video lacks captions track (WCAG 1.2.2). Dawn's video block accepts captions but the upload step is optional. Patch: editorial discipline — add `.vtt` caption file to every video block.
Failure 3: Image gallery active-image change not announced (WCAG 4.1.3). Thumbnail click changes the active image silently. Patch: wrap active image in `aria-live="polite"` region; update the `alt` attribute on change.
Failure 4: Decorative pattern images have empty alt without role="presentation" (WCAG 1.1.1). Some decorative images have `alt=""` but no `role="presentation"`, leaving screen reader behavior inconsistent. Patch: add `role="presentation"` to confirmed decorative images.
Failure 5: Image zoom not keyboard-operable (WCAG 2.1.1). Dawn's pointer-only zoom doesn't activate by keyboard. Patch: ship a "View larger image" link as keyboard alternative; add ENTER/SPACE handlers if magnifier UI is retained.
Failures 6-10: Color and Contrast (Perceivable)
Failure 6: Default link color may fail 4.5:1 against background (WCAG 1.4.3). Depends on theme color tokens; many merchant configurations fail. Patch: deploy compliance variants of brand colors per our color contrast guide.
Failure 7: Disabled-state CTAs may fail 1.4.3. Disabled buttons styled at 50% opacity often drop contrast below 3:1. Patch: explicit `aria-disabled="true"` plus styling that signals non-interactivity without contrast violation.
Failure 8: Sale-tag overlay on product images can fail contrast against image backdrop (WCAG 1.4.3). Patch: add solid backing or text shadow to ensure 4.5:1 against the underlying image region.
Failure 9: Sticky add-to-cart bar can fail 1.4.11 non-text contrast (WCAG 1.4.11). UI border between sticky bar and product content frequently <3:1. Patch: explicit border-top with `var(--border-color)` at 3:1 contrast.
Failure 10: Newsletter signup placeholder text fails 1.4.3. Placeholder text in form fields commonly at #999 or lighter; 4.0:1 typical, fails 4.5:1 minimum. Patch: darken placeholder color to #595959 or darker, or replace placeholder pattern with floating label.
Failures 11-15: Keyboard and Focus (Operable)
Failure 11: Mobile-collapsed navigation menu fails focus order on open (WCAG 2.4.3). Focus doesn't move into the opened menu reliably. Patch: explicit `focus()` call on first menu item when menu opens; trap focus within menu until close.
Failure 12: Cart drawer fails focus restoration on close (WCAG 2.4.3). Drawer closes; focus drops to top of page rather than returning to trigger. Patch: save `previousFocus` on open, restore on close (see our accessible pop-ups and modals patterns).
Failure 13: Quantity stepper buttons under 24×24 CSS pixels (WCAG 2.5.8). Default quantity stepper is dense. Patch: increase padding to satisfy 24×24 minimum; iOS HIG 44×44 recommended for touch.
Failure 14: Skip-link missing on default Dawn install (WCAG 2.4.1). No "Skip to main content" link. Patch: add visually-hidden skip-link in `theme.liquid` that becomes visible on focus.
Failure 15: Search dropdown autocomplete missing `aria-activedescendant` (WCAG 4.1.2). Arrow-key navigation through suggestions doesn't announce active item. Patch: add `role="listbox"`, `role="option"`, and `aria-activedescendant` updating on arrow keys.
Failures 16-20: Forms and Errors (Understandable)
Failure 16: Marketing-consent checkbox in checkout lacks programmatic label (WCAG 1.3.1). Single checkbox with adjacent text but no `<label for>` association. Patch: wrap text in `<label for="marketing-consent">`.
Failure 17: Form error messages lack `aria-describedby` linking to input (WCAG 3.3.3). Errors render visually but aren't programmatically associated with the failing field. Patch: add error message in `aria-describedby` and `id` on the error element.
Failure 18: Required-field indicator uses asterisk only (WCAG 1.4.1). Red asterisk without text-based indicator. Patch: add visually-hidden "Required" text or `aria-required="true"` plus visible "Required" label.
Failure 19: Form labels float-positioned without programmatic association (WCAG 3.3.2). Floating-label pattern visually attaches but lacks `<label for>` mapping. Patch: use real `<label for>` with `<input id>`; CSS handles the floating visual effect.
Failure 20: Phone field placeholder used as label (WCAG 3.3.2). Pattern fails when user starts typing — label disappears. Patch: real `<label>` plus optional placeholder hint.
Failures 21-23: Robustness and Status (Robust)
Failure 21: Add-to-cart success not announced to screen readers (WCAG 4.1.3). Cart drawer slides in silently. Patch: emit `aria-live="assertive"` confirmation: "Added to cart: 1 of [Product Name]" plus focus to cart drawer heading.
Failure 22: Variant change updates price silently (WCAG 4.1.3). Selecting size or color changes price without announcement. Patch: wrap price element in `aria-live="polite"` `aria-atomic="true"` region.
Failure 23: Iframe payment fields lack `title` attribute (WCAG 4.1.2). Shopify Payments iframe missing or generic title. Patch: explicit `title="Credit card information"` on iframe element.
What Does the Full Patch Set Look Like?
The 23 failures resolve through a combination of theme.liquid edits, theme CSS overrides, and small JavaScript handlers, all version-controlled through Shopify Theme CLI. The full patch set typically takes 5-7 days of focused development for a Dawn-based store, with content discipline (alt text on captions, heading hierarchy review) extending into days 8-14.
In our experience working with 100+ brands, applying the 23 Dawn-specific patches drops detected violations on a typical Dawn-based store from 30-50 to under 5, with Lighthouse Accessibility scores rising from 70-85 to 95+. TestParty's standard remediation includes the Dawn-specific patch set as part of source-code remediation scope, with daily automated scans plus monthly expert manual audits and date-stamped compliance reports for legal counsel. TestParty was named to the Forbes Accessibility 100 in 2025.
For broader theme-level remediation context, see our Shopify accessibility audit checklist WCAG 2.2 with Liquid.
Frequently Asked Questions
Does Shopify update Dawn to fix these failures? Shopify periodically updates Dawn with accessibility improvements. Some of the 23 failures listed have been improved in recent Dawn versions; some persist. The pattern: verify against your installed Dawn version and apply patches for failures that remain. Dawn updates roughly quarterly; merchants benefit from staying current.
Do these 23 failures apply to themes other than Dawn? Most apply to themes built on Dawn primitives. Sense, Refresh, and Studio share much of the same baseline; many premium themes copy Dawn's patterns. The Dawn-specific patches typically translate to other themes with selector adjustments. Themes with substantially different architecture (custom JavaScript frameworks layered on Shopify) may have different failure profiles.
How do I apply the patches without breaking the theme? Use Shopify Theme CLI with version control (Git). Each patch is a Git commit with the WCAG criterion reference in the commit message. Pull-request review before merge. Test on a development theme environment before pushing to production. The pattern produces a remediation Git history that supports legal counsel in any subsequent demand-letter response.
What if I customized Dawn heavily? Customizations may have introduced new failures or partially fixed listed ones. Run axe DevTools on your customized version to identify the specific failure profile; apply patches for failures that remain. Some patches may need adjustment for heavily-customized themes.
Are these the only Dawn failures? The 23 are scanner-detectable plus manual-audit findings on an unmodified Dawn install. Heavily-customized stores or stores with significant content debt (missing alt text, heading hierarchy issues, video without captions) have more failures originating from content rather than theme code. Content-layer remediation is separate from theme-layer remediation.
Will the patches survive a Dawn version update? Theme-CLI-managed patches require re-application after major Dawn updates. Minor Dawn updates typically don't break theme-level CSS or Liquid overrides. Major Dawn updates (1.x → 2.x) typically require re-validation. The Git history of patches makes re-application straightforward.
Are accessibility overlays a substitute for these patches? In our assessment, no. Overlay widgets cannot reliably attach correct keyboard handlers to dynamically-rendered components or override structural HTML at runtime. The FTC fined accessiBe specifically $1 million in April 2025 for related marketing claims about overlay accessibility capabilities. Source-code patches against Dawn's actual templates are what auditors evaluate.
Does TestParty handle the Dawn-specific patch work? Yes. TestParty's standard remediation includes Dawn-specific patches (and equivalents for other major Shopify themes) as part of source-code remediation scope. Daily automated scans catch regressions when Dawn updates. Monthly expert manual audits validate that patches remain effective. See our broader Shopify accessibility playbook: themes, apps, checkout.
Like everything at TestParty, this article reflects our cyborg philosophy: AI handles the heavy lifting, humans bring the expertise. The data and opinions here are based on publicly available sources as of publication. TestParty is a participant in the accessibility market — we believe in transparency, so we encourage you to cross-reference our claims and evaluate all options for your business.
Stay informed
Accessibility insights delivered
straight to your inbox.


Automate the software work for accessibility compliance, end-to-end.
Empowering businesses with seamless digital accessibility solutions—simple, inclusive, effective.
Book a Demo