<Back to Updates

October 2025 release

January 30, 2026

Welcome to the October release! This one adds new cart mutations that cut down on the client-side state juggling required for gift cards and delivery addresses. We've also updated the Storefront API and Customer Account API to 2025-10.

Add gift card codes without re-submitting existing ones

Previously, applying a new gift card code meant reading the codes already on the cart and passing the full list back through cart.updateGiftCardCodes. With cart.addGiftCardCodes, you can append codes directly:

Code Example

const result = await cart.addGiftCardCodes(['SUMMER2025']);

The skeleton template has been updated to use this new mutation. If you forked the skeleton, here's the pattern. A CartForm posts a single giftCardCode field, and the route action wraps it into an array:

Code Example

// app/components/CartSummary.tsx
function AddGiftCardForm({children}: {children: React.ReactNode}) {
  return (
    <CartForm
      route="/cart"
      action={CartForm.ACTIONS.GiftCardCodesAdd}
    >
      {children}
    </CartForm>
  );
}

// app/routes/cart.tsx
case CartForm.ACTIONS.GiftCardCodesAdd: {
  const formGiftCardCode = inputs.giftCardCode;
  const giftCardCodes = (
    formGiftCardCode ? [formGiftCardCode] : []
  ) as string[];

  result = await cart.addGiftCardCodes(giftCardCodes);
  break;
}

Replace all delivery addresses in one call

cart.replaceDeliveryAddresses swaps every delivery address on a cart in a single mutation, replacing the old pattern of deleting existing addresses and re-adding new ones:

Code Example

const result = await cart.replaceDeliveryAddresses([
  {
    address: {
      deliveryAddress: {
        address1: '123 Main St',
        city: 'Anytown',
        countryCode: 'US',
      },
    },
    selected: true,
  },
]);

Also available as CartForm.ACTIONS.DeliveryAddressesReplace.

Other changes

The @inContext directive now accepts an optional visitorConsent parameter for encoding buyer consent preferences into the cart's checkoutUrl. This is intended for Checkout Kit and other non-Hydrogen integrations that manage consent outside Shopify's standard flow. If you're using Hydrogen's analytics provider, you don't need it.

For the full list of API-level changes in Storefront API 2025-10, see the Storefront API changelog and Customer Account API changelog. The full release notes on GitHub cover everything in this release.

To take advantage of all the latest features and improvements in Hydrogen, run npx shopify hydrogen upgrade.

Get building

Spin up a new Hydrogen app in minutes.

See documentation