updateCart on Dawn-family themes does not update the cart icon or cart drawer

What happens

On Dawn-family themes, Shopify.actions.updateCart() saves the product to the cart, but the header cart count and the cart drawer (or cart popup) do not update. A full page refresh is needed before they show the new item.

Horizon-family themes on the same store do update the cart count.

Dawn’s own Add to cart button still works. The problem is only the default updateCart refresh.

What I expected

The official docs say that if a theme does not configure updateCart, Shopify writes the cart, then refreshes Dawn or Horizon in place. On other themes it reloads the page.

After a successful updateCart on Dawn, the header count and the cart drawer should show the new item.

What I actually see

  1. The cart save works. Cart total quantity is 1. There are no user errors.
  2. Shopify then asks for theme pieces with a request like:
    • Dawn: GET /cart.js?sections=cart-icon-bubble
    • Some Dawn-family themes: GET /cart.js?sections=cart-notification-button,cart-icon-bubble
  3. The response is only cart JSON. It does not include the HTML for those pieces.
  4. The page does not reload.
  5. The header cart icon still looks empty.
  6. Opening the cart can still say the cart is empty, even if the total already shows the product price.

Themes I tried

Theme Result
Dawn Fail. Count and drawer stay old.
custom Dawn Fail. Same kind of request, no HTML in the response.
Taste Fail. Same pattern.
Colorblock Fail. Same pattern.
Horizon Pass. Count updates to 1.
Tinker Pass. Count updates to 1.

I did not call updateCart.configure(). Shopify’s default handler was still on for Dawn.

How to reproduce on any store

  1. Use a Dawn-family theme (live or preview). Horizon is useful as a comparison.
  2. Open any product page.
  3. Empty the cart.
  4. In Chrome, press F12, open Console, and run the script below. Replace VARIANT_GID with a real variant from that store (from the product page, or from /products/HANDLE.js).
(async () => {
  await fetch('/cart/clear.js', { method: 'POST', credentials: 'same-origin' });

  const result = await Shopify.actions.updateCart({
    lines: [{
      merchandiseId: 'VARIANT_GID',
      quantity: 1
    }]
  });
  console.log(result);

  await new Promise(r => setTimeout(r, 2000));
  console.log('item_count', (await fetch('/cart.js').then(r => r.json())).item_count);
  console.log('badge', document.querySelector('.cart-count-bubble')?.innerText || 'none');
})();

Hi @Sachin_Tiwari, thanks for flagging this. While we don’t have an ETA to share for resolving this across the affected Dawn-family themes, we appreciate the detailed reproduction steps and comparisons.