Skip to content
Changelog

Checkout changelog

July 30, 2026

The Checkout drop-in has been updated with the following changes:

Fixes

  • Accessibility: Added a visually-hidden ā€œShipping optionā€ prefix to each shipping method’s accessible name, so its purpose is clear without relying on the surrounding heading, WCAG 2.4.6 (#344). Associated the payment method radio buttons with their ā€œPaymentā€ group label, so screen readers announce the group and the correct option count for each choice, WCAG 1.3.1 (#345).

June 10, 2026

New features

  • checkout/layout extension hook: Customize the checkout page structure — reorder, hide, move, group, or inject sections — without modifying the base block code. See Extending the checkout drop-in for usage details and the custom-layout example extension (#318).

Infrastructure

  • Node.js 22 LTS: The package now builds and distributes using Node.js 22 LTS. The engines.node constraint has been removed as this drop-in targets browser environments exclusively.

April 30, 2026

The Checkout drop-in has been updated with the following changes:

  • Vault payment method support: The PaymentMethods container now forwards the full additionalData payload to setPaymentMethodOnCart, enabling Payment Services vault and other payment methods that require extra fields to send the correct GraphQL mutation variables (#311).

March 24, 2026

The Checkout drop-in has been updated with the following changes:

  • ShippingMethods ( #300 ) - A new ShippingMethodItem slot replaces the default radio/toggle UI per method while keeping selection wired to the API (replaceWith, onSelect, onRender). The slot context is ShippingMethodItemContext (method, isSelected, onSelect). The busy flag applies to the internal shipping-methods UI when updates or an estimate are pending, not to the slot context. See Shipping methods and ShippingMethods slots.

  • estimateShippingMethods ( #307 ) - Extend the shipping estimate payload at build time using ESTIMATE_SHIPPING_METHOD_FRAGMENT and the EstimateShippingModel initializer. See Extending the checkout drop-in.

February 17, 2026

The Checkout drop-in has been updated with the following changes:

  • Preferences slot in LoginForm - New slot enables adding email preferences or custom content within the checkout login form ( #269 ).
  • Discounted shipping display - Shipping methods with discounts now display the original price with strikethrough, helping customers see their savings ( #270 ).
  • Custom form field placeholders - Form fields now support custom placeholders and floating labels for improved UX customization ( #291 ).
  • Async place-order validation - PlaceOrder.handleValidation now accepts Promise<boolean> in addition to boolean, enabling asynchronous validation (such as server-side fraud checks) before placing orders.
  • Adyen Bancontact support - Added support for Adyen Bancontact payment method ( #294 ).
  • Adyen payment extensions - Enhanced Adyen payment integration with additional extension support ( #282 ).

January 8, 2026

Major version upgrade with comprehensive B2B checkout support. The Checkout drop-in has been updated to include the following changes:

B2B Features:

  • Payment on Account - New payment method for B2B transactions allowing customers to pay using their company account. Includes getCompanyCredit API to retrieve available credit and credit limit information, with validation to prevent exceeding credit limits ( #183 , #185 , #188 , #192 , #206 ).
  • Purchase Order - New payment method enabling B2B customers to reference purchase order numbers during checkout, with validation to ensure required PO numbers are provided ( #190 , #194 , #195 , #207 ).
  • Quote checkout support - Checkout now distinguishes between regular carts and negotiable quotes with separate event handling and containers. Quote checkout uses dedicated QuoteSummaryList and OrderSummary containers for B2B quote workflows ( #209 , #213 , #220 , #228 ).
  • Checkout permissions - B2B users without checkout permissions now see appropriate error messages. Permission validation distinguishes between cart and quote checkouts ( #208 , #224 , #229 ).

Improvements:

  • Event type filtering - Checkout events (checkout/initialized and checkout/updated) now include a type property to distinguish between cart and quote operations, enabling proper event handling for both workflows ( #230 ).
  • Billing address updates - Billing address now uses customerAddressUid instead of numeric IDs for better compatibility with B2B quote workflows and customer address management ( #198 ).
  • Checkout success flow - Checkout success page is now properly decoupled, preventing empty cart flashes and ensuring smooth transition to order confirmation ( #205 , #223 ).
  • Placeholder-based translations - Implemented comprehensive placeholder-based translation system for all checkout UI strings, enabling easier localization for AEM placeholders ( #251 , #252 ).
  • Empty cart handling - Users are now redirected to cart page when cart is empty (except on order confirmation page), preventing checkout access with empty carts ( #258 ).
  • Payment method auto-selection - When the currently selected payment method becomes disabled, the first available method is automatically selected to maintain checkout flow ( #215 , #221 ).
  • Fastlane disabled - Fastlane payment method is now disabled for B2B checkout to prevent conflicts with B2B payment workflows ( #197 ).

Fixes:

  • Login on empty cart - Fixed issue where login functionality failed when cart was empty ( #201 ).
  • Billing address sync - Fixed issue where billing address was not updated when re-checking ā€œbill to shippingā€ checkbox ( #255 ).
  • Gift options spacing - Removed unnecessary empty space for gift options container when not in use ( #247 ).
  • Signup modal - Signup modal now closes properly after account creation ( #245 ).
  • Shipping method auto-selection - Fixed issue where Quote checkout would lose shipping methods after auto-selection ( #231 ).
  • B2B address handling - Fixed checkout failure when B2B user has no saved addresses ( #218 ).
  • Error message rendering - Error messages now render properly throughout the checkout flow ( #187 ).
  • Revised Adobe Commerce Drop-in License Agreement - Updated license agreement to current terms. B2C drop-ins have been tested on Adobe Commerce as a Cloud Service (ACCS) and Adobe Commerce 2.4.7+ for Platform-as-a-Service (PaaS) deployments. However, the license agreement restricts use to Adobe Commerce as a Cloud Service (ACCS) and Adobe Commerce Optimizer (ACO) only. Use on Platform-as-a-Service (PaaS) or on-premise deployments is not permitted under the license agreement ( #259 , #260 ).

October 14, 2025

The Checkout drop-in has been updated to include the following changes:

  • New utility library: The checkout now includes reusable utilities for address transformation, form validation, cart state management, and shipping cost estimation. This improves code reusability across different checkout implementations ( #88 , #146 ).
  • Free orders now supported: Zero-cost checkouts (when coupons or promotions cover the full total) now have dedicated payment method display and handling ( #170 ).

August 12, 2025

The checkout drop-in component has been updated to include the following changes:

  • Miscellaneous bug fixes and enhancements.

The Multi-step checkout tutorial has been updated, providing a customizable example to implement a comprehensive multi-step checkout based on a modular architecture (event-driven step coordination) that supports the following scenarios:

  • Guest users
  • Logged-in customers
  • Virtual products
  • Mixed carts (physical + virtual product combinations)

June 25, 2025

The checkout drop-in component GraphQL API has been extended exposing new fragments:

  • BILLING_CART_ADDRESS_FRAGMENT
  • SHIPPING_CART_ADDRESS_FRAGMENT
  • AVAILABLE_PAYMENT_METHOD_FRAGMENT
  • SELECTED_PAYMENT_METHOD_FRAGMENT

The Error Handling has been implemented in some containers (still work in progress):

  • BillToShippingAddress
  • LoginForm
  • PaymentMethods
  • ShippingMethods

The Event Handling has been documented within the list of events emitted and subscribed by the checkout drop-in component containers.

A new Active property has been added for all containers: This property activates/deactivates the container.

A new AutoSync property has been added for some containers: This property allows the container to automatically synchronize its state changes with the backend.

A new TitleProps interface has been created to customize the title and header of some containers.

The BillToShippingAddress container configuration structure has been modified. A new property has been added to the BillToShippingAddressProps interface:

  • BillToShippingAddressProps.onCartSyncError property added: This property allows performing some actions if an error is thrown when the bill to shipping checkbox is checked.

Implemented an error handling mechanism for the BillToShippingAddress container based on the ā€œOptimisticā€ UI updates with rollback pattern consisting of the following:

  • It provides a callback function onCartSyncError() to be used in the integration layer in case the merchant wanted to perform some actions like showing an error message etc.

  • It performs a rollback reverting to the previous valid checkbox state.

  • In case the callback is not implemented, a fallback will be used, which consists of displaying an inline alert message.

The LoginForm container configuration structure has been modified. New properties have been added to the LoginFormProps interface:

  • LoginFormProps.displayHeadingContent property added: This property allows displaying the container heading content.

  • LoginFormProps.slots.Heading property added: This property allows customizing the container heading content based on the user authentication status.

Additionally, the following properties have been added, extending the TitleProps interface:

  • LoginFormProps.displayTitle property inherited: This property allows displaying the container title.

  • LoginFormProps.slots.Title property inherited: This property allows customizing the container title.

The PaymentMethods container configuration structure has been modified. Deprecated properties have been removed from the PaymentMethodsProps interface:

  • PaymentMethodsProps.setOnChange deprecated property removed.

  • PaymentMethodsProps.slots.Handlers deprecated property removed.

Additionally, the following property has been renamed:

  • PaymentMethodsProps.slots.Methods[code].setOnChange property renamed to PaymentMethodsProps.slots.Methods[code].autoSync.

Additionally, the following properties have been added:

  • PaymentMethodsProps.onSelectionChange property added: This property allows performing some actions when a payment method is selected.

  • PaymentMethodsProps.onCartSyncError property added: This property allows performing some actions if an error is thrown during the payment method selection.

  • PaymentMethodsProps.UIComponentType property added: This property allows using a different UI component type as a selector for each payment method. UI components available are: ā€˜ToggleButton’ and ā€˜RadioButton’.

Additionally, the following properties have been added, extending the TitleProps interface:

  • PaymentMethodsProps.displayTitle property inherited: This property allows displaying the container title.

  • PaymentMethodsProps.slots.Title property inherited: This property allows customizing the container title.

Implemented an error handling mechanism for the PaymentMethods container based on the ā€œOptimisticā€ UI updates with rollback pattern consisting of the following:

  • It provides a callback function onCartSyncError() to be used in the integration layer in case the merchant wanted to perform some actions like showing an error message etc.

  • It performs a rollback reverting to the previous valid payment method selected.

  • In case the callback is not implemented, a fallback will be used, which consists of displaying an inline alert message.

The ShippingMethods container configuration structure has been modified. A property has been removed from the ShippingMethodsProps interface:

  • ShippingMethodsProps.preSelectedMethod property removed: This was an obsolete and unused property without business logic behind.

Additionally, the following property has been renamed:

  • ShippingMethodsProps.onShippingMethodSelect property renamed to ShippingMethodsProps.onSelectionChange.

Additionally, the following properties have been added:

  • ShippingMethodsProps.onCartSyncError property added: This property allows performing some actions if an error is thrown during the shipping method selection.

  • ShippingMethodsProps.UIComponentType property added: This property allows using a different UI component type as a selector for each shipping method. The available UI components are: ToggleButton and RadioButton.

Additionally, the following properties have been added, extending the TitleProps interface:

  • ShippingMethodsProps.displayTitle property inherited: This property allows displaying the container title.

  • ShippingMethodsProps.slots.Title property inherited: This property allows customizing the container title.

Implemented an error handling mechanism for the ShippingMethods container based on the ā€œOptimisticā€ UI updates with rollback pattern consisting of the following:

  • It provides a callback function onCartSyncError() to be used in the integration layer in case the merchant wanted to perform some actions like showing an error message etc.

  • It performs a rollback reverting to the previous valid shipping method selected.

  • In case the callback is not implemented, a fallback will be used, which consists of displaying an inline alert message.

The TermsAndConditions container is now visible for both the anonymous and authenticated checkout processes.

March 6, 2025

A new TermsAndConditions container has been added.

February 11, 2025

The PlaceOrder container configuration structure has been modified. A new property has been added to the PlaceOrderProps interface:

  • PlaceOrderProps.slots.Content property added: This property allows setting the container content based on the selected payment method. This addresses how to set the container content dynamically based on the selected payment method, instead of having to modify the text of the container by manipulating the DOM directly and detecting payment method selection by handling the PaymentMethods slot, which is not ideal for maintainability.

February 3, 2025

The PaymentMethods container configuration structure has been modified. The PaymentMethodsProps interface has been changed and some properties have been deprecated and replaced:

  • PaymentMethodsProps.setOnChange property @deprecated: This property is deprecated and will be removed in future versions. It has been replaced by the following: PaymentMethodsProps.slots.Methods.<payment-method-code>.setOnChange.

  • PaymentMethodsProps.slots.Handlers property @deprecated: This property is deprecated and will be removed in future versions. It has been replaced by the following one: PaymentMethodsProps.slots.Methods.<payment-method-code>.render.

  • PaymentMethodsProps.slots.Methods property added: This property is an object that consists of a list of payment method codes that provide a set of configurations to customize each payment method individually.

    Configurations accepted by payment methods:

    • The displayLabel configuration hides the payment method label (for example, if you only want to display the icon).
    • The enabled configuration allows merchants to individually hide payment methods filtering them from the available payment methods list (for example, it is useful when a payment provider has enabled a payment method in the backend, which is configured with more than one payment option and you don’t want to display one of them).
    • The icon configuration specifies the name of the icon to be shown beside of the label. The icon name must exist within the list of available icons defined in the drop-ins SDK.
    • The setOnChange configuration sets the payment method automatically when it is selected. Only if a payment method is specifically set to false, the container will not automatically set the payment method to the cart when selected (for example, if a payment method needs to obtain more information during the place order action).
    • The render configuration is a handler used to render and configure the payment method.