Merchants can now buy shipping labels with a Shopify Flow action. Set the conditions for which orders qualify, and Flow buys the labels as orders come in. Choose the carrier and service, package type, weight, and ship date to use. You can trigger on orders with a specific tag, orders that contain certain products, single-item orders, or any combination of order attributes. Each matching order gets
Royal Mail is now available as a pickup point provider across the UK. At checkout, customers choose a location from a map or a list and see its name, address, opening hours, and price before they commit. To turn it on: Learn more about shipping to pickup points in the Shopify Help Center.
Shopify AI Toolkit now includes shopify app security check, a security command that checks your app for common vulnerabilities before you ship. You can run it before you submit an app, and on every release, to find problems in your own code and get guidance to fix them. As AI accelerates how you build apps, attackers use the same tools to find and exploit security gaps faster and at lower cost. Th
The visibility fields on CheckoutBrandingFooterContent and CheckoutAndAccountsConfigurationBrandingFooterContent now control only merchant-configurable footer content. Checkout can display Shopify-provided transaction information in the footer regardless of this setting. Existing apps don’t need to change their GraphQL Admin API requests, but apps that preview or test checkout branding shouldn’t a
What changed Following the recent visual update to the Shopify admin, Sidekick now appears at the bottom center of every admin screen, including embedded apps. There is no API to hide or disable it. What app developers need to do Ensure your app is set up to work with Sidekick: All apps: Use Sidekick as your app’s AI chat entry point. Integrate with Sidekick App Extensions to give Sidekick read an
The new Hydrogen is generally available today. Since the developer preview started in June, we've shipped seven releases based on feedback from developers using it. The big deal about the new Hydrogen is that it isn't a big deal: Hydrogen now works with any JavaScript framework. You can bring Shopify's commerce to your stack just by adding the library to your app, instead of needing to replatform.
Patch Changes ee937aa: Add the migrate-to-hydrogen-2026-10 packaged skill. The skill guides an AI agent through the migration of a classic Hydrogen storefront (Remix or React Router) to Hydrogen 2026-10 (@shopify/hydrogen@^2026.10.0). Run hydrogen skills sync to copy it into your project.
Shop MCP lets your agent or app search Shopify Catalog, build carts, and complete Shop Pay checkout through a single MCP connection. It works with over 1 billion products in Shopify Catalog and doesn't require an API key for search. Nothing changes for existing Catalog API integrations, and no action is required. What changed Shop MCP is live at https://mcp.shop.com, with a skill description at ht
Sidekick can now help you customize checkout and customer accounts. Get answers and guidance right where you work, without searching the docs or contacting support. In the checkout and accounts editor: Sidekick is now available in the desktop editor. You can ask it to: In Checkout Blocks app: Sidekick can help you understand and plan blocks and functions in the Checkout Blocks app. For example, yo
Shopify can now suggest smart grid tiles based on the products and discounts your staff use most. Suggestions are based entirely on your store’s own catalogue, orders, and POS activity, helping you put frequently used actions within easier reach at checkout. Each suggestion explains why it’s being recommended, and you decide whether to add or dismiss it. Nothing changes on your smart grid unless y
Cart operations that leave the cart unchanged, for example, resubmitting the same values a cart already has, no longer trigger a carts/update webhook. Shopify sends a webhook every time a cart's contents or properties change. Previously, every cart operation produced a carts/update webhook. This change removes the duplicate notifications, and apps receive one carts/update for each change to a cart
What changed shopify.extension.version returns the version of the extension that is running. It’s the same name shown on the Versions page in the Dev Dashboard and chosen when running shopify app deploy. The value is an opaque name, not a version number, so compare it for equality rather than sorting it. It’s undefined when the extension runs from a local development server. Who’s affected This fi
What changed The POS Navigation API adds the navigatesuccess event. It fires after the destination screen finishes its native transition, and its callback receives a standard Event. currententrychange can fire before the screen finishes appearing, and the navigate() promise doesn’t wait for the transition. When navigating back, register the listener on the screen that will reappear; the screen bei
What's Changed App Skip lockfiles in every shopify app security check scan directory, including --include-dir paths, so large repository-root lockfiles no longer leave the secret check unresolved by @jplhomer in #8825 Check Dependabot and Renovate configuration at the app's Git repository root when the app is nested below it by @jplhomer in #8826 Detect React Router code in additional directories,
For EU merchants in the following countries: Austria, Belgium, Denmark, France, Germany, Ireland, Italy, Netherlands, Spain, Sweden, Switzerland, and United Kingdom, we've added automatic translation updates to Translate & Adapt. Until now, editing a product description or any other store content meant going back into the app to re-translate it yourself. As a result, translated storefronts fell be
Shopify now shares your compare-at price with AI shopping agents through Shopify Catalog, so AI agents can see when a product is marked down. Previously, AI agents reading Catalog only saw the current price and markdown prices displayed in storefront were not shown. Control if AI agents can view compare-at prices by reviewing your settings in admin. Find the toggle in the “Compare-at” section. Lea
The Global Catalog REST API, which was deprecated in April 2026, stops serving traffic on November 2, 2026. If your app still calls it, you need to migrate to Global Catalog MCP, which implements the Universal Commerce Protocol (UCP), before that date.
Minor Changes 661e015: Accept Liquid-style ?variant= links on product pages. handleShopifyRoutes({routeTemplates}) now 302-redirects ?variant= product URLs to the canonical option-params URL (/products/x?variant=123 → /products/x?Color=Red&Size=M), resolving the variant through the Storefront API with Cache.long() when the client has a cache adapter, following combined-listing variants to their ow
The Catalog API now returns a merchant’s compare-at price as list_price on each product variant. Your app or agent can use list_price to tell when a product is marked down and by how much. The price field doesn’t change. No action is required. list_price is an optional field defined in the UCP catalog specification, version 2026-08-25. It uses the same Price object as price, with amount in minor u
chore: exit prerelease mode on Changesets 3.0.3 for Hydrogen 2026.10.0 changesets/action v2.1.0 bundles Changesets 3.0, which keeps changesets Upgrading the CLI to 3.0.3 (and @changesets/parse to 1.0.0) puts both changeset pre exit the next changeset version releases everything in it as 2026.10.0 and empties ci: release, test, and deploy from main with Hydrogen on CalVer Run CI, the release, store
Minor Changes 1891913: ProductPayload.price is now { amount, currencyCode }, the Storefront API MoneyV2 shape, instead of a bare amount string. The hosted Shopify analytics script reads currencyCode as the event's currency, so product_viewed events no longer depend on window.Shopify.currency.active being set. Pass the variant's price object where you used to pass price.amount: // before price: var
Patch Changes d7be864: Redact credential headers from request params passed to the client logger. Logger events now show **** for the Authorization, Cookie, Set-Cookie, X-Shopify-Access-Token, Shopify-Storefront-Private-Token and X-Shopify-Storefront-Access-Token header values. The headers sent with the request are unchanged. Updated dependencies [d7be864] @shopify/graphql-client@2.0.1
Starting with API version 2026-10, Checkout and Customer Account UI extensions can specify an owner_type for each metafield declaration in shopify.extension.toml. Starting with API version 2027-01, owner_type is required for every metafield declaration, and deployments without it will be blocked. What changed Metafield declarations in [[extensions.metafields]] and [[extensions.targeting.metafields
What's changed Flow Trigger Lifecycle Callback extensions now support relative URLs in addition to absolute HTTPS URLs. This works similarly to relative URLs with Flow action extensions. Running app dev resolves your relative URL against your development tunnel URL and app deploy resolves against your app's application_url Previously, the URL for Flow trigger lifecycle callback extensions were req
You can now automate your return and refund, contact information, terms of service, shipping, and legal notice policies to help you launch your store faster and expand into new markets. Your automated policies stay up to date as your store settings change and in sync with Shopify’s recommendations. You remain responsible for your policies and your store’s compliance with applicable laws. To activa
What's Changed App Add JSON output schema for app versions list by @dmerand in #8524 Remove the dependency CVE audit check from app doctor by @jplhomer in #8555 Add JSON schema to organization list by @dmerand in #8526 Check for dependency automation configuration files in App Doctor by @jplhomer in #8556 Support target-level input query variables on functions by @saga-dasgupta in #8471 Support op
Developer ChangelogAction RequiredBreaking API ChangePOS Extensions
Shopify POS 11.15 corrects the value returned by Discount.amount for Percentage discounts to match the Cart API contract. Extensions that used this value as money need to update their logic. What changed A 25% discount on a $200 line item now returns amount: 25. POS 11.14 and earlier returned amount: 50, the monetary amount deducted. This applies to cart-level and line-item percentage discounts, i
Starting with Admin GraphQL API version 2027-01, apps that use Shopify-managed installation can call appDowngradeAccessScopes to replace optional write scopes with their matching read scopes. No action is required for existing apps. What changed The mutation affects only the calling app’s installation. Requested scopes must be declared in optional_scopes and must be write scopes with matching read
Developer ChangelogAction RequiredBreaking API ChangePOS Extensions
In POS UI extensions API version 2026-10, Cart API mutations reject when Shopify POS doesn't confirm that the cart changed. In earlier versions these mutations resolve whether or not POS applied the write. This is a breaking change for apps that adopt 2026-10, and those apps need to handle a rejected promise on every cart mutation they call. Apps on 2026-07 and earlier are unaffected. What changed
The Customer Account API now enforces a per-customer rate limit of 3000 requests per minute per store, shared across all apps. This affects all apps that call the Customer Account API, but you typically don't need to make changes because normal buyer traffic stays well under this limit. What changed The Customer Account API now limits each customer on a store to 3000 requests per minute. This limi
You can now review and export purchase order data in Shopify Analytics. Three new reports help you understand your purchase orders: Purchase order costs shows ordered items, quantities, supplier costs, estimated taxes, and purchase order costs. Purchase order transfers follows purchase orders through transfers, shipments, and receiving. Purchases on order shows open, ordered purchase orders that d
npm now rejects Trusted Publishing token exchanges for issue_comment runs, and the NPM_TOKEN snapit relied on has been dead since npm revoked classic tokens. snapit.yml now only validates the /snapit request and dispatches release.yml (already the trusted publisher for every package) on the PR branch. There, the branch is built and packed without a publish credential, and a job that runs no reposi
We have released International Payments from Balance for the US. This gives merchants a more cost-effective way to pay their international suppliers, with transparent pricing and no extra setup. International payments from Balance will let eligible merchants pay recipients internationally from the Balance mobile app. Learn more about the International Payments from Balance in the Shopify Help Cent
Shop can now verify who a shopper is while they're browsing your store, even before they make a purchase. For Shop users, this means checkout loads faster, carts sync across devices, sign-in is sped up with one-tap, and the Buy with Shop Pay button is pre-filled for a smoother, higher-converting checkout. Browsing activity also syncs to a shopper's Shop account, so Shop can resurface items they vi
Minor Changes b202925: Add getTrackingValues() to analytics destination callback context. Destinations can read current uniqueToken and visitToken values from Shopify's consent API without accessing its internal globals. Each read requests fallback generation with the tag hydrogen: ; token generation is provided by the consent API when supported. Unavailable values are returned as empty strings, a
We’ve released improved support for 3 right-to-left languages (Arabic, Urdu, and Hebrew) in both Admin and Storefronts, including checkout, customer accounts and the Horizon family of themes. Display language is determined based on the user’s device settings, if available. Product pages and other merchant-owned content will continue to be displayed in the languages that you have enabled. You can e
Patch Changes h2 init --template skeleton and npm create @shopify/hydrogen -- --template skeleton now do the same as leaving the flag out, instead of downloading GitHub's latest release. The new project's dependencies install, its .env and name are set up, and every other flag is honoured. Scripted or non-interactive runs that use --template skeleton should now pass the same prompt-skipping flags