Shopify Storefront API 2026-07: What Changed for Framer Stores
The Shopify Storefront API 2026-07 release made three changes that matter to anyone selling through a Framer site: cart.discountAllocations was removed and split across cart, line and delivery-group queries, two new cart warning codes were added for products that cannot ship to the buyer, and a set of metaobject access enums disappeared. None of it breaks your Framer design. All of it can quietly break your cart totals.
The Storefront API is Shopify's public GraphQL interface for building a checkout-capable storefront outside the Liquid theme — the layer that lets a Framer page read real products and create a real cart. Your Framer site never calls it directly. A plugin does, and that plugin pins a version.
What changed in the Shopify Storefront API 2026-07 release
Shopify ships a new API version every quarter, at 5pm UTC on the first day of the quarter, and supports each stable version for a minimum of 12 months. That means roughly four versions are live at once. The 2026-07 release is the one that changed cart shape, and it is now the version most actively maintained plugins have moved to.
| What changed in 2026-07 | What it affects on a Framer storefront | Store owner action | Plugin developer action |
|---|---|---|---|
cart.discountAllocations removed |
Cart subtotal and discount lines render as zero or vanish | Check a discount code end to end | Query cart.discountApplications, cart.lines[].discountAllocations(lineLevelOnly: false) and cart.deliveryGroups[].discountAllocations |
CartLine.viewKey added |
Nothing breaks; duplicate lines become addressable | None | Accept viewKey / viewKeys in cartLinesUpdate and cartLinesRemove |
PRODUCT_UNAVAILABLE_IN_BUYER_LOCATION warning added |
Buyers outside your markets add to cart, then fail at checkout | Test from a blocked country | Read CartWarning codes and surface them in the UI |
DELIVERY_SELECTED_OPTION_NOT_AVAILABLE warning added |
Shipping choice silently resets | Test a rate-restricted address | Re-fetch delivery groups after any address change |
PRIVATE and PUBLIC_READ metaobject enums removed |
Custom metaobject content stops resolving | Check custom fields still render | Migrate to the current access enums |
The discount change is the expensive one. Discounts are no longer a single list hanging off the cart; order-level discounts live in discountApplications, product discounts live on each line with lineLevelOnly: false, and shipping discounts live on delivery groups. A plugin that only read the old field returns a cart that looks correct and totals wrong.
"Each stable version is supported for a minimum of 12 months, with at least nine months of overlap between consecutive versions." — Shopify, API versioning documentation
That overlap is the whole safety margin, and it is why this is a maintenance question rather than an emergency. Shopify's Summer 2026 Edition carried 65 product updates across the platform; the cart restructuring was one line item in it, which is exactly why it went unnoticed on most storefronts.
Is there a REST API for Shopify?
There is, but not for storefronts. The Storefront API has only ever been GraphQL — there is no REST equivalent, and there will not be one. Shopify has been steadily moving developers off REST on the Admin side too, so any tutorial that hands you a REST endpoint for products or carts is describing a path that does not apply to a custom storefront.
This matters more than it sounds for a Framer build. Because every call is GraphQL, you are billed in query complexity rather than request count, and you ask for exactly the fields you render. It also means a version bump can delete a field you depend on without changing a single URL — which is precisely how 2026-07 caught people.
Is Shopify storefront free?
The API is. Both the Storefront API and the Headless sales channel are included in your Shopify plan with no per-call charge, so a Shopify custom storefront costs nothing extra on the Shopify side. What you pay for is the frontend and the integration layer — the Framer subscription, and whatever plugin or custom code connects the two.
That is also where the real cost of a missed migration shows up. For custom, non-Hydrogen builds, remediation after a breaking change has been priced between $8,000 and $40,000 depending on storefront complexity. A maintained plugin absorbs that work as a version bump instead, which is the argument for not hand-rolling your headless storefront layer — the same tradeoff covered in headless architecture for designers.
How to tell whether your Framer store is affected
Three checks, in order, and each takes under five minutes.
- Apply a discount code on the live site. If the line discount shows but the subtotal does not move, or either reads zero, your cart query is on the old shape.
- Load the cart from a country you do not sell to. A 2026-07 cart returns
PRODUCT_UNAVAILABLE_IN_BUYER_LOCATION. If your storefront shows no warning and lets the buyer continue to a dead checkout, nothing is readingCartWarning. - Ask your integration which API version it pins. Any plugin that cannot answer this is the risk, independent of the 2026-07 changes.
If you are on a maintained integration — FramerLink included — all three are handled upstream and the only thing left is testing. If you are on custom code, the discount query is where to start, because it fails silently rather than loudly.
What to do before the next version rolls off
Version pinning is not a one-time setup step; it is a quarterly line on a maintenance calendar. The 2026-10 release candidate goes stable on October 1, 2026, which pushes the oldest supported version off the far end of the window.
Two habits cover it. Bump your pinned version once a quarter rather than once a crisis, after reading that quarter's release notes for removed fields. And treat the cart as the thing worth regression-testing, because carts carry money and almost every breaking change of the last year has landed there. Discount codes, a restricted shipping address, and a blocked market are three tests that catch most of it — and they are the same three to run after setting up guest checkout.
The deeper point is that a headless storefront's maintenance burden is not design work. It is version work, and it recurs whether or not anyone schedules it. Choosing an integration that tracks Shopify's quarterly cadence is how most teams make that burden somebody else's — see what that covers on pricing.
Frequently asked questions
How do I get a storefront API access token for Shopify?
Install the Headless sales channel from the Shopify App Store, or create a custom app in your admin under Settings, Apps and sales channels. Both generate a public token sent in the X-Shopify-Storefront-Access-Token header. Server-side code uses a private token in the Shopify-Storefront-Private-Token header instead.
Is the Shopify API free?
Yes. The Storefront API, Admin API and Headless sales channel cost nothing beyond your existing Shopify subscription, and there is no per-call fee. You are limited by query cost rather than price: requests are metered by GraphQL complexity, and tokenless access is capped at a complexity limit of 1,000.
What changed in the Shopify Storefront API 2026-07 release?
The cart.discountAllocations field was removed and replaced by three queries: cart.discountApplications, cart.lines discountAllocations with lineLevelOnly set to false, and cart.deliveryGroups discountAllocations. CartLine also gained a viewKey field, cart warnings gained two new availability codes, and the PRIVATE and PUBLIC_READ metaobject access enums were deleted entirely.
When does an older Shopify API version stop working?
Shopify supports each stable API version for a minimum of 12 months from release. A new version ships every quarter, so roughly four stable versions are accessible at any time. When your pinned version expires, Shopify falls forward and answers using the oldest version it still accepts.
Sources
- 2026-07: Release notes — Shopify
- About Shopify API versioning — Shopify
- Storefront API reference — Shopify
- Shopify Editions Compass 2026: Storefront API Breaking Changes — Weaverse
- Getting started with the Storefront API — Shopify