Shopify Functions & APIs

Shopify API 2026-10: Breaking Changes to Check Before You Upgrade

By CartStack Team4 min read

Shopify API 2026-10 is the stable release that brings Next Gen Events, Rollouts, buyer-requested order edits and several breaking changes. Before you bump the version in an app, check the items below, because a few of them change behavior without throwing an error. This checklist groups the changes by what you must fix, what now behaves differently and what is worth adopting. Checked against Shopify’s 2026-10 release notes and the developer changelog.

Cover graphic for the Shopify API 2026-10 upgrade checklist
The riskiest changes are the ones that alter behavior without changing the schema.

Support Window for 2026-10

The release notes say 2026-10 is supported until at least October 1, 2027 at 15:00 UTC, and that several changes in this version require code updates. Many items on the list were announced earlier in 2026 and take effect on the version, so read each one against the version you run today.

Fix These Before You Upgrade

  • Segment query syntax. MATCHES and NOT MATCHES replace = true and = false. Named dates such as 12_months_ago are deprecated in favor of offsets like -12m.
  • Inventory errors. ITEM_NOT_STOCKED_AT_LOCATION is removed from InventoryAdjustQuantities, InventoryMoveQuantities, InventorySetOnHandQuantities and the InventorySetQuantitiesUserErrorCode enum. Remove any code that handles it.
  • Draft order discounts. The priceRule field is removed from DraftOrderDiscountNotAppliedWarning, and the legacy PriceRule object and related types are gone. Select discountTitle and discountCode instead.
  • Customer Account API. Customer.lastIncompleteCheckout and the unreachable Checkout subtree are removed, with no replacement.
  • POS UI extensions. session.currentSession.staffMemberId is removed. Use session.staffMember.value?.id.

Behavior That Changes Without an Error

  • Taxes recalculate on address changes. Changing the shipping address of an unfulfilled order with orderUpdate or the REST order update endpoint now recalculates taxes for the new destination. Re-read taxLines, totalTaxSet and totals afterwards, and compare balances for payment or refund differences.
  • Invalid metafield filters now fail. Queries that filter by a metafield that cannot be filtered return an error instead of silently ignoring the predicate. Bugs that were hidden before can surface now. Our metafield debugging guide helps trace them.
  • Carrier services. carrierServiceCreate and the REST carrier_services endpoint no longer add rates to the General shipping profile. Configure rates in a shipping profile.
  • New enum value. OrderDisplayFulfillmentStatus can return FULFILLMENT_NOT_REQUIRED. Handle it if you map statuses exhaustively.
  • Discounts and Rollouts. Native startsAt and endsAt may no longer describe availability. See our Rollouts guide for discount apps.

Worth Adopting in 2026-10

  • Next Gen Events are generally available, configured in shopify.app.toml with triggers, a GraphQL query and query_filter. Start with Events vs webhooks and the migration guide.
  • Variant barcodes. ProductVariant.barcodes returns up to 20 typed barcodes and ProductVariant.barcode is deprecated. See our barcodes guide.
  • Multiple tracking numbers. OrderCreateFulfillmentInput.trackingNumbers accepts several values. If both fields are set, trackingNumber takes precedence.
  • Buyer-requested order edits. New RequestedOrderEdit operations and webhook topics. See our order edits guide.
  • Order cancellation. orderCancel returns a jobResult of type OrderCancelJobResult, and the existing job field is unchanged.
  • Subscriptions. SubscriptionContractCalculation runs edits through the checkout engine with Function support and previews. It succeeds SubscriptionDraft, which remains available without those capabilities.
  • Markets and returns. A marketRelationships query with Market.parentMarkets and Market.childMarkets (needs read_markets), plus returnPolicyProfile and returnPolicyProfiles queries (read needs read_legal_policies).
  • Customer addresses. CustomerAddress and its input add countryCode, which takes precedence over the deprecated territoryCode.
  • Functions. Cart.buyerIdentity.customer exposes createdAt, CartDeliveryOption supports metafield(namespace:, key:) in input queries, and apps can register shopify/Discount app intents with create and edit actions.
  • Storefront API. @inContext accepts an optional channelId to apply sales channel context.

Our Analysis: A Safe Upgrade Order

Search for removed names first. Our suggestion is to grep your codebase for ITEM_NOT_STOCKED_AT_LOCATION, priceRule, lastIncompleteCheckout, staffMemberId and any segment query strings. These are mechanical and will not show up in a type check if your queries live in strings.

Test behavior changes with data, not types. Tax recalculation, metafield filter errors and carrier service profiles do not change a schema, so they pass static checks. Run a dev store scenario for each and compare totals and error handling.

Upgrade one surface at a time. Admin API calls, webhooks or Events, Functions and extensions each have their own version setting. Moving them in separate releases makes a regression easy to attribute.

Retry safely. If an upgrade touches mutations you retry, review idempotency keys for Admin API mutations before you roll out.

FAQ about Shopify API 2026-10

How long is 2026-10 supported? Until at least October 1, 2027, according to the release notes.

Will my app break if I stay on an older version? Pinned versions keep their old behavior, but some changes, such as discounts that are part of a Rollout, can be filtered out of reads on versions before 2026-10 without an error.

Is the segment query change a breaking change? Yes. Shopify lists it as breaking, so update stored segment queries before you move.

Where is the full list? The 2026-10 release notes on shopify.dev, which also cover ShopifyQL, POS and Shopify Payments additions not repeated here.