October 2026
Release 2026.10.0, published October 28, 2026.
Storefront packages
Section titled “Storefront packages”Feature
Section titled “Feature”- Added the
feature-productpackage: product listings with filters, sort, pagination, active-filter chips, a grid-or-list toggle, an empty state, and a skeleton - Added the product page: a gallery, a sticky buy box and a sticky bar on phones, swatches colored from catalog data, and a variant selector that shows stock and price differences
- Added discounts with the EU Omnibus lowest-price line, stock and a delivery promise per variant, and contract prices, price tiers, and article numbers for business buyers
- Added add-ons such as an extra warranty, bundles, related products, recently viewed, product comparison, and questions and answers to the product page
- Added delivery dates and time slots, pickup points, collecting at the seller’s warehouse, express checkout with Apple Pay and Google Pay, and gift cards to the checkout
- Added a business checkout: company billing and VAT number, complete or split delivery on a requested date, an order or a quote request at the end, and the VAT rule it applies and why
- Made the checkout offer saved addresses as cards, and added a company address picker, sign-in inside its details step, a cart-merge notice with Undo, and an account offer to guests on the thank-you page
- Added quick order by SKU, and an add-to-cart drawer for every add, with a summary for a bulk add
- Added a collapsed discount code entry, cart names that tell carts apart, a stock status per cart line, and digital lines without a quantity stepper
- Made the address form fill in the street and city from a postal code and house number or a search, and the address books read like a contact list, with search, a pinned default, and a name per address
- Reworked the order pages: the order detail reads top to bottom, a delivery shows the lines that went out in it, next steps, the chosen delivery slot or pickup point, and an order history table for business buyers
- Added a to-do list for the business dashboard, a consumer account overview, an account menu grouped by task, and a searchable, paginated invoice table with the credit left as a bar
- Added the quote number, a status filter and sort, and replying to or declining a quote, and approval rules and invites with several roles for organizations
- Added a mega menu on React Aria with flyout, full-width, and mobile drill-down layouts and a brands panel, plus
HeaderSearch,StickyHeader, aFooterfrom rows,CountryLanguagePicker,ErrorPage, andNotFound - Added SEO helpers: hreflang alternates, a sitemap toolkit, and JSON-LD for the site, a product, and a listing
- Added the
sessionpackage: the/graphql/authroute, session renewal in the proxy, server readers for the tokens, and a client fetcher that refreshes once after a 401 - Added a Piwik PRO listener, consent-gated analytics wiring, and a cart viewed event
- Added
Switch,RangeSlider,Gallery,Price, andTodoList, and aQuantityStepperyou can type in
Changed
Section titled “Changed”- Rebuilt the checkout as a shell of sections, one open at a time, with one-page, multi-step, and phone layouts, and released
feature-cart1.0.0 (breaking: upgrade the framework first, and recompose the checkout page) - Made persisted document ids the bare sha256 digest, which Hive usage reporting accepts (breaking: use the shared
persistedDocumentscodegen config) - Moved the order and quote facts out of their detail headers into
OrderDetailInfoandQuoteDetailInfo(breaking: render the info part beside your own header) - Made the approvals add-on read and decide through the framework’s order-approval module (breaking: move to the new approval props and hooks)
- Made the address form reject postal codes and phone numbers that do not fit the country (breaking: expect stricter validation)
- Made the server sort the quote list, ready-to-order quotes first (breaking: upgrade the framework first)
- Made the cart total include the estimated shipping, and a net summary end with the gross total (breaking: read “Total excl. VAT” for the net amount)
- Fixed a form submitted before hydration putting its fields, such as a password, in the URL
- Fixed logout leaving the refresh token valid, and made the preview secret check constant-time
- Fixed rapid quantity steps getting lost, and cart writes refused on a version conflict being lost or silently resent
- Fixed a payment method that is no longer offered being placed with the order
- Fixed technical values, such as raw status codes, showing to customers
- Fixed account menu items being clickable only on their text
Dependency
Section titled “Dependency”- Locked
nextat 16.3.6, past the criticalnext/ogadvisory, and pinnedshell-quoteto its patched release
Framework packages
Section titled “Framework packages”Feature
Section titled “Feature”- Added delivery options on commercetools and Medusa: delivery dates and time slots, pickup points, split or complete delivery, a carrier and delivery estimate per shipping method, a delivery promise on the product page, the shipping method a cart starts on, and how far a cart is from free delivery
- Added several payments on one cart with gift cards as a partial payment method, Apple Pay, Google Pay and PayPal Express through Adyen,
Order.openPaymentRedirect, and a handler that keeps an order’s payment state in step with its payments - Added returns for consumers and business units: drop-off or pickup, a refund or an exchange, a decision by the back office or an ERP, and photos through signed upload URLs
- Added the EU and B2B VAT rules to the cart, with
Cart.vatOutcomeand its reason, the company VAT number on the cart and the order, and a live VAT number check in the newviespackage - Added address lookup by postal code and type-ahead address entry in the new
pdok,loqateandphotonpackages, and the official spelling of a city on every address write - Added stock levels, stock per warehouse, backordered lines, an in-stock alternative,
NOT_FOR_SALEfor a variant without a price, and back-in-stock mails a shopper can withdraw - Added price tiers, a list price, identifiers, physical or digital, documents, accessories, a sales unit, complementary products, the lowest price before a discount, and product reviews to a variant
- Added search suggestions, spelling correction, keyword redirects and a category’s own facets to product search, and the sort orders, paging limit and query id each engine supports
- Added add-ons and bundles as linked cart lines, a result per line when adding several, a maximum and a pack size per line, the price a line was added at, the cart’s changes since the last visit, and named and automatic discounts
- Added preview images, a default name, a dated name for new carts and archiving after 60 days to named carts, and let a buyer undo a guest cart merge at sign-in
- Added a company’s credit on account, payment terms and minimum order value, a setting that turns off one-off shipping addresses, pending invitations, structured approval rules, and
Cart.approvalRequirementandOrder.requiredActionto say who has to act - Added signed order links, status counts on order and invoice lists, invoice search, a filter on the orders you placed, and a quote number, a status filter and the buyer’s reply or decline to quotes
- Added quote and back-in-stock notifications, made the order confirmation carry its lines and totals and copy the company’s contact, and added the customer’s phone number and a name for an address
- Brought Medusa close to commercetools: company carts, invoices, approvals, order history, guest sessions and cart merge, delivery options, gift cards, catalog events, stock, customer-group prices and taxes, test-data cleanup, and its own Search module as a search engine
- Added vendor-neutral rich text with tables, article and article overview pages, and six new content block types to the content contract
- Added site settings, content search with keyword redirects, the content pages about a product’s category, curated collections, menu icons by name and field tabs to every CMS
- Added content-modified events, translated paths, breadcrumbs and per-tenant catalog pages to Payload, an
ejectcommand for its built-in blocks and collections, and a job that recreates missing catalog pages - Added application
onStartandonShutdownhooks, signed upload and read URLs for object storage, and store switching and extra store-context headers tomcp-core - Added test-support actions to create a business unit, pay an order, moderate a review and clean up by email, and exported the scenarios every search index and payment adapter must pass
Changed
Section titled “Changed”- Made a new cart start at the buyer’s default addresses and shipping method, without a country-only shipping address (breaking: read the country from the store context, and deregister
copyCustomerDefaultsToCart) - Made the commercetools service client need more scopes, and checked an associate’s permissions before paying, reopening or cancelling a business unit’s order (breaking: add the scopes and role permissions)
- Stopped retrying a cart update after a version conflict, and reported a line that cannot be added in
lineResults(breaking: handleCART_VERSION_CONFLICTandlineResults) - Made a cart become an order only once its payments cover the total (breaking: a payment adapter reads
Cart.amountToPay) - Replaced
applyReverseChargewithapplyVatRules, which decides by the delivery country and a verified VAT number (breaking: registerapplyVatRulesand add its custom fields) - Reworked the approval rule mutations around structured conditions, and made an approval’s order, approver and rejecter nullable (breaking: use the new inputs and handle null)
- Made a credit note lower the amount due on its invoice, and a business unit’s cart keep the buyer’s email (breaking: record the credit on the invoice, and address the confirmation with
orderConfirmationAddressees) - Made
BusinessUnit.cartslist active carts only by default (breaking: passstatusfor archived carts) - Counted the price facet in minor units with Algolia and Medusa too, and gave each Meilisearch document type its own index (breaking: reindex, and send Algolia and Medusa price filters in minor units)
- Made the Storyblok and Contentful webhooks accept only signed deliveries, and made
pathsoptional on content-modified events now that they carrychanges(breaking: setwebhookSecret, and readchanges) - Reworked the CMS content model: SEO as three plain fields, a
Pageinterface, one page heading, and a text field for a Storyblok catalog page’s category (breaking: apply the new content model, and setisPageHeadingin your own block mappers) - Moved
coreto version 11 of the Sentry SDK, dropped its@labdigital/federated-tokendependency, and made a composed module close before the modules ahead of it (breaking: upgrade your own Sentry calls and custom client contexts) - Made Medusa hold a company’s order for approval, require
core1.8.0, and list automatic promotions apart from discount codes (breaking: handle anorderPlacewithout an order) - Read the SFCC organization id from
SFCC_ORGANIZATION_ID(breaking: rename the environment variable) - Added methods to
UserNotificationClientand actions to the test-support contract, and made test-support quote cleanup opt-in (breaking: implement the new methods and actions, and passquotes: true) - Made
Query.customeranswernullfor a guest,orderByPublicIdanswer without a time window, and an expired quote read asEXPIRED
- Fixed other shoppers’ guest orders in a shared browser reaching the account of whoever signed in, and unpublished Payload content being readable without signing in
- Enforced a business unit’s boundaries when switching units, approving your own order, billing a cart and resolving federated references
- Fixed a product’s gross price without tax, shipping methods shown at the wrong rate, duplicate cart lines and address book entries, and missing localized slugs on large product pages
- Fixed order numbers restarting after a failed counter read, commercetools writes being resent after a lost response,
MEDUSA_REQUEST_TIMEOUTbeing ignored, and a failed Azure Event Grid event counting as delivered - Kept secrets nested in logged values, Sentry requests and Redis URLs out of the logs, and kept a Redis outage from failing or stalling requests
- Fixed empty Storyblok listings and sitemaps, Storyblok links and names that ignored the translated slug, and one malformed block failing a whole page in Storyblok and Payload
Dependency
Section titled “Dependency”- Updated dependencies, including the releases of Next.js,
proxy-addrandshell-quotethat fix critical advisories

