Boost Your Shopify Store's Accessibility: Fixing Dawn Theme's Quantity Input Label

Hey everyone, let's dive into a practical fix from the Shopify community that'll boost your store's accessibility and even your Lighthouse scores! We're talking about a common issue in the popular Dawn theme affecting the quantity input field on product pages.

A keen merchant, WetandDry, recently sparked a discussion after their Lighthouse audit flagged "Form elements do not have associated labels." This isn't just a technical detail; it directly impacts how customers using screen readers interact with your store. If that quantity input isn't properly labeled, it's a confusing experience for them, and that's not what we want!

Understanding the Dawn Theme's Quantity Label Glitch

The root of the problem, as WetandDry and other community members like One-Sun1995 and ahsandoesntcare quickly identified, comes down to two specific issues in Dawn’s code, primarily found in the main-product.liquid file:

Issue 1: Conflicting Accessibility Attributes

The tag for the quantity input had both a standard for attribute (correctly linking to the input's ID) AND a redundant aria-labelledby attribute. The crucial part? When both are present, aria-labelledby takes precedence. If it points to an element that doesn't provide a meaningful name, the input essentially has no accessible name, leading to the Lighthouse flag.

Issue 2: Hidden Label Text

Compounding the problem, the visible label text (e.g., "Quantity") was wrapped in a tag with aria-hidden="true". This attribute explicitly tells screen readers to ignore that content, making the label invisible to assistive technologies even if it were otherwise correctly associated.

Here’s what the problematic code typically looks like in main-product.liquid:

The Community's Recommended Fix: A More Robust Approach

While an initial fix involved simply removing the conflicting aria-labelledby and aria-hidden attributes, jowel-66 from the community raised a smart point: this might cause screen readers to lose valuable context, like "Quantity (2 in cart)" if an item is already in the cart. This dynamic information is often provided by the element that aria-labelledby was originally pointing to.

The recommended, more robust solution is to move the aria-labelledby attribute from the and place it directly on the tag instead, while still removing aria-hidden="true" from the . This ensures the label is correctly associated, and any dynamic context is preserved for screen reader users.

Where to Apply This Fix

This issue isn't isolated to just one file. You'll need to apply this fix in both sections/main-product.liquid and sections/featured-product.liquid. It's also a good idea to quickly check other areas that use quantity inputs, like your cart page or quick-add sections, for similar patterns.

Step-by-Step: How to Implement the Fix

Important: Always duplicate your theme before making any code edits! This creates a backup in case you need to revert. Also, remember that theme updates can overwrite manual code changes.

  1. From your Shopify admin, go to Online Store > Themes.
  2. Find your Dawn theme, click Actions > Duplicate.
  3. On the duplicated theme, click Actions > Edit code.

Step 1: Modify the Label Tag in sections/main-product.liquid

Open sections/main-product.liquid. Find the tag for the quantity input, which looks like the "Failing code" shown above. You need to:

  • Remove the aria-labelledby="quantity-label-{{ section.id }}" attribute from the tag.
  • Remove the aria-hidden="true" attribute from the tag inside the label.

Your modified code should now look like this:

Step 2: Modify the Input Tag in sections/main-product.liquid

Next, find the corresponding tag for the quantity field. It often includes an aria-label attribute. You need to:

  • Remove the aria-label="{{ 'products.product.quantity.label' | t }}" attribute.
  • Add aria-labelledby="quantity-label-{{ section.id }}" to the tag.

Your modified code should now resemble this:


Step 3: Repeat for sections/featured-product.liquid

Navigate to sections/featured-product.liquid and apply the exact same modifications (Steps 1 & 2) to the corresponding and tags there.

Step 4: Verify Your Changes

After saving, open your store's product page (on your duplicated theme) in your browser. Use DevTools (F12 or right-click > Inspect), select the quantity input, and check the "Accessibility" pane's "Computed Name." It should now clearly show the quantity label, including any dynamic "X in cart" context if applicable. Running a Lighthouse audit should also confirm the accessibility flags are resolved!

Final Thoughts: Theme Updates & Community Collaboration

Remember that manual theme code edits are temporary; they'll be overwritten if you update your Dawn theme to a newer version. Keep a record of these changes so you can reapply them if needed. It's good to know that this issue (tracked as #3981) is already on the Dawn GitHub repository, so hopefully, an official fix will come in a future update.

This community discussion really highlights the power of collaboration and how paying attention to these seemingly small code details can make a huge difference in creating an inclusive and user-friendly experience for all your customers. It's not just about compliance; it's about building a better store for everyone.

Share:

Use cases

Explore use cases

Agencies, store owners, enterprise — find the migration path that fits.

Explore use cases