Checkout changelog
July 30, 2026
Checkout v3.3.1
Section titled āCheckout v3.3.1ā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
Checkout v3.3.0
Section titled āCheckout v3.3.0āNew features
checkout/layoutextension 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 thecustom-layoutexample extension (#318).
Infrastructure
- Node.js 22 LTS: The package now builds and distributes using Node.js 22 LTS. The
engines.nodeconstraint has been removed as this drop-in targets browser environments exclusively.
April 30, 2026
Checkout v3.2.1
Section titled āCheckout v3.2.1āThe Checkout drop-in has been updated with the following changes:
- Vault payment method support: The
PaymentMethodscontainer now forwards the fulladditionalDatapayload tosetPaymentMethodOnCart, enabling Payment Services vault and other payment methods that require extra fields to send the correct GraphQL mutation variables (#311).
March 24, 2026
Checkout v3.2.0
Section titled āCheckout v3.2.0āThe Checkout drop-in has been updated with the following changes:
-
ShippingMethods ( #300 ) - A new
ShippingMethodItemslot replaces the default radio/toggle UI per method while keeping selection wired to the API (replaceWith,onSelect,onRender). The slot context isShippingMethodItemContext(method,isSelected,onSelect). Thebusyflag 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_FRAGMENTand theEstimateShippingModelinitializer. See Extending the checkout drop-in.
February 17, 2026
Checkout v3.1.0
Section titled āCheckout v3.1.0ā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.handleValidationnow acceptsPromise<boolean>in addition toboolean, 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
Checkout v3.0.0
Section titled āCheckout v3.0.0ā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
getCompanyCreditAPI 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
QuoteSummaryListandOrderSummarycontainers 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/initializedandcheckout/updated) now include atypeproperty to distinguish between cart and quote operations, enabling proper event handling for both workflows ( #230 ). - Billing address updates - Billing address now uses
customerAddressUidinstead 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
Checkout v2.1.0
Section titled āCheckout v2.1.0ā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
Checkout v2.0.1
Section titled āCheckout v2.0.1ā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
Checkout v2.0.0
Section titled āCheckout v2.0.0āThe checkout drop-in component GraphQL API has been extended exposing new fragments:
BILLING_CART_ADDRESS_FRAGMENTSHIPPING_CART_ADDRESS_FRAGMENTAVAILABLE_PAYMENT_METHOD_FRAGMENTSELECTED_PAYMENT_METHOD_FRAGMENT
The Error Handling has been implemented in some containers (still work in progress):
BillToShippingAddressLoginFormPaymentMethodsShippingMethods
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.onCartSyncErrorproperty 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.displayHeadingContentproperty added: This property allows displaying the container heading content. -
LoginFormProps.slots.Headingproperty 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.displayTitleproperty inherited: This property allows displaying the container title. -
LoginFormProps.slots.Titleproperty 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.setOnChangedeprecated property removed. -
PaymentMethodsProps.slots.Handlersdeprecated property removed.
Additionally, the following property has been renamed:
PaymentMethodsProps.slots.Methods[code].setOnChangeproperty renamed toPaymentMethodsProps.slots.Methods[code].autoSync.
Additionally, the following properties have been added:
-
PaymentMethodsProps.onSelectionChangeproperty added: This property allows performing some actions when a payment method is selected. -
PaymentMethodsProps.onCartSyncErrorproperty added: This property allows performing some actions if an error is thrown during the payment method selection. -
PaymentMethodsProps.UIComponentTypeproperty 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.displayTitleproperty inherited: This property allows displaying the container title. -
PaymentMethodsProps.slots.Titleproperty 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.preSelectedMethodproperty removed: This was an obsolete and unused property without business logic behind.
Additionally, the following property has been renamed:
ShippingMethodsProps.onShippingMethodSelectproperty renamed toShippingMethodsProps.onSelectionChange.
Additionally, the following properties have been added:
-
ShippingMethodsProps.onCartSyncErrorproperty added: This property allows performing some actions if an error is thrown during the shipping method selection. -
ShippingMethodsProps.UIComponentTypeproperty added: This property allows using a different UI component type as a selector for each shipping method. The available UI components are:ToggleButtonandRadioButton.
Additionally, the following properties have been added, extending the TitleProps interface:
-
ShippingMethodsProps.displayTitleproperty inherited: This property allows displaying the container title. -
ShippingMethodsProps.slots.Titleproperty 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
Checkout v1.3.0
Section titled āCheckout v1.3.0āA new TermsAndConditions container has been added.
February 11, 2025
Checkout v1.2.0
Section titled āCheckout v1.2.0āThe PlaceOrder container configuration structure has been modified. A new property has been added to the PlaceOrderProps interface:
PlaceOrderProps.slots.Contentproperty 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
Checkout v1.1.0
Section titled āCheckout v1.1.0āThe PaymentMethods container configuration structure has been modified. The PaymentMethodsProps interface has been changed and some properties have been deprecated and replaced:
-
PaymentMethodsProps.setOnChangeproperty @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.Handlersproperty @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.Methodsproperty 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
displayLabelconfiguration hides the payment method label (for example, if you only want to display the icon). - The
enabledconfiguration 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
iconconfiguration 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
setOnChangeconfiguration 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
renderconfiguration is a handler used to render and configure the payment method.
- The