Skip to content
Changelog

Boilerplate changelog

July 30, 2026

The Commerce boilerplate has been updated with a Drop-in SDK major upgrade, multi-storefront browsing history support, and accessibility fixes across boilerplate blocks:

Infrastructure

  • Drop-in SDK: @dropins/tools upgraded to 2.0.0, including a TypeScript 6.0 and ESLint 9 upgrade across the SDK. See Updated Drop-in SDK for consumer migration steps and sub-package versions. Jest upgraded to 30.4.2 and Storybook to 10.4.0 (#205).

Fixes and improvements

  • Drop-in SDK: Added a TypeScript return type for events.lastPayload (#216). Accessibility fixes:
    • Picker no longer leaves Add to Cart disabled after single-option narrowing on configurable PDPs (#219).
    • Accessible labels on password validation icons (#220).
    • Picker’s accessible name and label association (#233).
    • Screen reader announcements for Field and InLineAlert status and error messages (#253).
    • Unique accessible names for InLineAlert’s Undo/Dismiss action buttons (#242).
    • Modal focus management and dialog semantics (#244).
    • ToggleButton’s accessible name (#246) and invalid HTML ids when its value contains spaces (#262).
    • Higher-contrast keyboard focus indicators and a date-format fix in InputDate.
  • Product recommendations: getPurchaseHistory and getProductViewHistory now key browsing history by a storefront identifier, so history no longer mixes between storefronts that share a domain. A SaaS storefront and an Adobe Commerce Optimizer storefront on the same domain are a common example. Prerendered product pages (hovered but never visited) no longer pollute that history either (#1301, #1361).
  • Recommendations block: Now forwards cart SKUs to the recommendations request, so cart-based recommendation units reflect what’s actually in the shopper’s cart (#1366).
  • Cart (gift cards): Adding a gift card product from the product listing page no longer fails silently. Gift card products now redirect to the product details page to collect the required sender and recipient information, the same way bundle and configurable products already do (#1328).
  • Modal: The modal block now emits a close event with the dismissal reason (button, backdrop, or programmatic), so you can react when a modal closes (#1318).
  • Accessibility: The header sign-in dropdown, mini cart panel, and search popover now stay scrollable and reachable at reduced viewport heights, meeting WCAG 1.4.10 Reflow (#1312, #1315, #1319).
    • The My Account button (#1321) and mini cart button (#1337) now announce their expanded state to screen readers.
    • The “Updating Cart” button text has higher contrast and now announces its progress to screen readers (#1323, #1327).
    • The checkout Edit-cart link, cart Edit button, and product image and Add to Cart links each have distinct accessible names (#1330, #1334, #1340).
    • Checkout status messages now use persistent aria-live regions (#1344).
  • B2B (Checkout): Fixed an issue that could prevent the Credit Card checkout fields from rendering (#1347, B2B).

June 10, 2026

The Commerce boilerplate has been updated with Drop-in SDK bundle optimizations, seller-assisted buying blocks, Company Hierarchy (B2B), Requisition List Sharing (B2B), out-of-stock Add to Cart gating, and analytics and performance fixes:

Infrastructure

  • Drop-in SDK: @dropins/tools upgraded to 1.9.0, including @dropins/build-tools 1.2.0, @adobe-commerce/elsie 1.9.0, @adobe-commerce/event-bus 1.1.0, @adobe-commerce/fetch-graphql 1.3.0, @adobe-commerce/recaptcha 1.2.0, and @adobe-commerce/storefront-design 1.1.0. Lazy icon loading and code consolidation reduce HTTP requests by 29–85% per drop-in. Drop-ins must be rebuilt against this SDK release to benefit from the optimizations (#200).
  • AEM library: scripts/aem.js updated to 3.1.2 (#1250).

Fixes and improvements

  • PDP and PLP blocks: The Add to Cart button is now disabled for out-of-stock products on the PDP and PLP using the inStock property exposed by the drop-ins (#1223).
  • Recommendations block: Add to Cart is disabled for out-of-stock recommended products (#1235). The block also forwards currentProduct context from the ACDL data layer to the Recommendations drop-in, so recommendation results respond reactively to variant selection on the PDP (#1244).
  • Analytics: Locale is now mapped from demo-config-aco.json in the delayed script for correct event processing in Adobe Commerce Optimizer storefronts (#1238).
  • Performance: fetchPlaceholders uses force-cache to skip revalidation round-trips after the 2-hour max-age expires, eliminating redundant CDN traffic during navigation (#1273).
  • Cart block: Removed an unused routeProduct prop from the OrderSummary render call (#1230).
  • Seller Assisted Buying: New commerce-seller-assisted-buying-activity and commerce-seller-assisted-buying-settings blocks let store administrators place and manage orders on behalf of customers, with an activity log and customer consent settings. A header banner identifies the active assisted-buying session (#1283).
  • B2B (Company Hierarchy): New commerce-b2b-company-hierarchy block renders the nested team structure using the CompanyHierarchy container from the Company Management drop-in (#1240, B2B).
  • B2B (Requisition List Sharing): New commerce-b2b-requisition-list-sharing block lets B2B users share requisition lists with colleagues by email or by copying a shareable link (#1268, B2B).
  • B2B (Authentication): Fixed a bug where the X-Adobe-Company header was sent on guest GraphQL requests due to session storage being restored from local storage on page load (#1248, B2B).

April 30, 2026

The Commerce boilerplate has been updated with a Universal Editor image model fix, Drop-in SDK dependency upgrades, the Product Recommendations drop-in upgraded to v4, and B2B additions for Order Comments and Quick Order improvements:

Document Authoring

  • Image model definition: Universal Editor image model definition and component models updated to fix image handling in the authoring interface (#1159).

Infrastructure

  • Drop-in SDK: @dropins/tools upgraded from 1.8.0 to 1.8.1, which includes @adobe-commerce/elsie 1.8.1 and @adobe-commerce/recaptcha 1.1.0.

Fixes and improvements

  • Product Recommendations block: Block updated to use the Recommendations drop-in v4, which switches to the recommendationsByUnitIds GraphQL query for proper catalog view support (#1183).
  • B2B (Order Comments): New commerce-order-comments block renders order-level comments on B2B order details pages using the OrderComments container from the Order drop-in (#1210, B2B).
  • B2B (Quick Order): Quick Order block updated with consistent configurable-product Add to Cart handling, extended handleAddToCart callback payload with parentSku and optionsUIDs, and fixed duplicate event emissions on option changes (#1210, B2B).

March 24, 2026

The Commerce boilerplate has been updated with PDP video support, PLP page size configuration, 404 handling, layout improvements, multi-store wishlist integration, and B2B Quick Order and cart fixes:

Infrastructure

  • Build tools: @dropins/build-tools upgraded from ~1.0.1 to ~1.1.0 ( #1152 ).
  • Default assets: The assets enabled flag now defaults to true ( #1114 ).
  • Site config: Removed the folders reference from default-site.json ( #1148 ).

Fixes and improvements

  • PDP block: Video support out of the box for product media ( #1100 ).
  • PLP block: The page size is configurable via the block configuration; defaults to 9 ( #1143 ).
  • 404 handling: Non-existent pages now return a correct server-rendered 404 so crawlers and tools receive the right HTTP status ( #1134 ).
  • Layout: Full-width sections and padding-based gutters in columns ( #1133 ).
  • URL manipulation: URL handling moved to the boilerplate ( #1119 ).
  • Wishlist: Multi-store wishlist drop-in integration ( #1139 ).
  • Demo config: The Adobe Commerce Optimizer flag was added to demo-config-aco.json ( #1124 ).
  • B2B (Cart): The View wishlist link includes the store code prefix in the PDP and Cart blocks ( #1130 ). The cart state is cleared when switching websites to prevent 403 errors ( #1137 ).
  • B2B (Quick Order): The Quick Order drop-in is integrated into the boilerplate ( #1125 , #1156 ).

February 17, 2026

The Commerce boilerplate has been updated with Universal Editor model v2 support, new JSON block definitions for Document Authoring, infrastructure upgrades, and bug fixes:

Breaking changes:

  • Cards List block removed - The cards-list block has been removed. Use the cards block instead.
  • Fragment block behavior - Fragment blocks now replace their content directly instead of replacing the entire section wrapper, which may affect existing fragment implementations.

Document Authoring improvements:

  • Universal Editor model v2 - Upgraded component definitions to model v2 for improved authoring experience ( #1086 ).
  • Commerce block definitions - Added comprehensive JSON definitions for all commerce blocks including Account Header, Account Sidebar, Addresses, Cart, Checkout, Mini Cart, Orders List, Wishlist, and more, enabling visual authoring in Universal Editor and Document Authoring ( #1086 ).
  • Improved field naming - Block field definitions now use semantic names (such as image, text, summary) instead of CSS selector-based names ( #1086 ).
  • PDP default SKU support - Product Details Page block now supports defaultSku configuration in JSON definitions ( #1086 ).
  • PLP URL path configuration - Product List Page block now supports urlpath configuration for category detection ( #1086 ).
  • Enrichment block - Category enrichment reads URL path from PLP block configuration; preserves wrapper in Universal Editor for continued authoring ( #1086 ).

Infrastructure updates:

  • GitHub Actions updates - Workflow actions updated to latest versions (checkout@v6, setup-node@v6).
  • Automated Sidekick configuration - Sidekick configuration is now automated and no longer requires manual setup.
  • Drop-in SDK upgrade - @dropins/tools upgraded from ~1.6.0 to ~1.7.0 ( #1113 ).

Improvements and fixes:

  • Fragment block improvements - Fragment content now replaces block content directly, preserves block wrapper during DOM replacement ( #576 ), and properly handles external URLs preventing protocol-relative URL issues ( #577 ).
  • Header null safety - Navigation sections now include null checks preventing errors when sections are missing; navigation closes on focusout for improved keyboard accessibility ( #581 ).
  • AEM Assets protocol handling - createOptimizedPicture now correctly handles protocol-relative URLs (//) ( #582 ).
  • Product Details validation - PDP block now properly validates product data before rendering, preventing errors for missing products.
  • B2B address handling - Uses addressUid to prevent duplicate address entries during B2B checkout flows ( #1112 ).

January 8, 2026

The Commerce boilerplate has been updated with the following changes:

New features:

  • Universal Editor integration - The boilerplate now supports Adobe Universal Editor for in-context content editing, enabling visual authoring experiences directly within the storefront. Developers can now render PDPs in Universal Editor or Document Authoring on template pages using dedicated templates ( #866 , #891 ).
  • Payment Services v2 upgrade - Payment Services drop-in has been upgraded to version 2 with enhanced payment processing capabilities and improved user experience ( #881 ).
  • AEP analytics configuration - Adobe Experience Platform analytics configuration is now integrated, providing better tracking and insights into customer behavior ( #969 ).

Improvements and fixes:

  • Authentication flow refactor - Authentication flow now uses page reloads for more reliable state management and better compatibility with server-side rendering ( #972 ).
  • Checkout success flow enhancement - Checkout success page now redirects to order details page and preloads order data, providing customers with immediate access to their order information and improving post-purchase experience ( #882 , #831 , #913 ).
  • Configurable product links fix - Product links for configurable products now work correctly, ensuring proper navigation to product detail pages ( #994 ).
  • Empty cart checkout prevention - Checkout process now properly prevents access when cart is empty, improving user experience and preventing errors ( #1015 ).
  • Wishlist sign-up fix - Sign-up functionality from wishlist now works properly, allowing guest users to create accounts while preserving their wishlist items ( #983 ).
  • Create account overlay fix - Account creation overlay now closes properly after successful registration ( #934 ).
  • Universal Editor rendering improvements - Improved rendering stability in Universal Editor and Document Authoring environments ( #1030 ).

B2B integrations:

  • Commerce Account Navigation block - New block with GraphQL permission integration for B2B account navigation, dynamically showing menu items based on user permissions. Navigation automatically updates when company context changes ( #779 , #789 , #797 , #797 ).
  • Requisition List integration - Integrated requisition list drop-in into PDP and PLP blocks, enabling B2B users to add products to requisition lists. Includes routing between list grid and detail views ( #755 , #821 , #851 , #886 , #911 , #954 , #967 ).
  • Negotiable Quote blocks - Added B2B negotiable quote block and quote template block for managing quotes and quote templates. Includes quote checkout with dedicated summary containers, file uploads, and address management ( #778 , #884 , #890 , #892 , #906 , #916 , #1001 , #1002 , #999 , #1009 , #1013 , #1014 ).
  • Company Switcher integration - Integrated company switcher for multi-company B2B scenarios with context-aware page reloads and redirects for orders, purchase orders, and quotes. Includes inactive company filtering and product availability validation ( #701 , #914 , #976 , #982 , #1003 , #1024 ).
  • Purchase Order integration - Integrated Purchase Order drop-in with payment method, details page, and approval workflows. Includes permission-based access control and company context handling ( #736 , #826 , #900 , #902 , #909 , #931 , #938 , #942 , #964 , #966 ).
  • Company Management integration - Integrated company profile, users, structure, and roles & permissions management. Includes company creation workflow, drag-and-drop team organization, and comprehensive validation ( #726 , #745 , #816 , #832 , #838 , #865 , #926 , #960 , #974 , #984 , #986 , #993 , #996 ).
  • B2B permission system - Enabled customer permission roles in Auth initializer and checkout permissions handling. Permission system dynamically controls feature availability based on user roles ( #871 , #880 , #887 , #888 ).
  • Request quote from cart - Added ability to request negotiable quotes directly from the cart with minimum amount validation and user feedback ( #731 , #970 ).
  • Company context listeners - Added event listeners throughout the boilerplate to respond to company context changes, ensuring data consistency when switching companies ( #966 ).

October 14, 2025

The Commerce boilerplate has been updated with the following changes:

  • AEM Assets compatibility - Decimal dimensions now render properly, supporting image rendering with decimal width/height values ( #767 ).
  • Commerce Block documentation - Commerce blocks now include comprehensive README files for better developer onboarding and implementation guidance ( #728 )
  • Configuration error handling - Missing or invalid site configurations now show a helpful 418 error page that provides clear guidance to developers ( #714 )
  • Configuration fallback enhancement - Single-endpoint setups now automatically fall back to “commerce-endpoint”, simplifying configuration ( #700 )
  • Metadata and schema improvements - Breaking change: Product URLs now enforce lowercase SKUs. Sites with uppercase SKUs must ensure proper metadata mapping to prevent broken links ( #406 ). Metadata handling now works properly for multistore configurations with JSON-LD path resolution ( #686 )
  • Mini-PDP component reorganization - The mini-pdp component now lives in the components folder for better code organization and reusability ( #722 )
  • PDP state management - Multiple PDPs on the same page no longer overwrite each other’s state, ensuring proper product data isolation ( #696 )
  • Placeholder data preservation - Placeholder data no longer gets lost, preventing content display issues ( #689 )
  • Search functionality improvements - Search functionality now handles results better with improved styling ( #776 )
  • UI accessibility improvements - Non-interactive elements no longer show pointer cursors, improving accessibility compliance ( #681 )

August 12, 2025

The Commerce boilerplate has been updated with the following changes:

  • Account drop-in fixes - Resolved various account drop-in functionality issues
  • Added carousel and cards-list components - Integrated carousel and cards-list components for enhanced product display capabilities
  • Architecture cleanup - Removed deprecated widgets and custom PLP components
  • Checkout compatibility - Fixed shipping methods infinite loop and iOS compatibility
  • Checkout update - Updated checkout drop-in to version 2.0.0-beta6
  • Commerce Storefront compatibility improvements - Enhanced compatibility with storefront-builder for improved UE integration
  • Documentation enhancement - Added comprehensive JSDoc comments to commerce.js
  • Global placeholders - Implemented global placeholders system
  • Header optimization - Optimized header’s mini-cart and search loading performance
  • Initialization optimization - Reordered main initialization in scripts.js for improved loading sequence
  • Modal localization - Fixed modal localized text display
  • PDP image zoom fix - Fixed image zoom icon display issues
  • Product discovery search fix - Fixed search item link functionality
  • reCAPTCHA enhancement - Enhanced reCAPTCHA initialization in initializeDropins function
  • Recommendations drop-in events - Recommendations drop-in now sends Adobe Client Data Layer events
  • Recommendations update - Updated @storefront-recommendations to v1.0.0
  • Removed default content from product-details block - Cleaned up default content from product-details block for cleaner implementation
  • Scripts refactoring - Major refactoring of scripts.js for improved maintainability
  • Wishlist improvements - Enhanced wishlist mobile alerts and cart integration

For complete details, see the Boilerplate Updates changelog entry .

June 24, 2025

The scripts.js file has been refactored to align with the upstream AEM Boilerplate while extracting all commerce-specific functionality into scripts/commerce.js. This refactoring provides better separation of concerns and improved maintainability.

Key Changes:

  • scripts.js now contains only core AEM functionality (aligned with upstream AEM Boilerplate)
  • commerce.js now contains all commerce-specific functionality including:
    • GraphQL queries and commerce backend connections
    • Template handling and application
    • Commerce page type detection
    • Adobe Data Layer initialization
    • Commerce utilities (rootLink, fetchPlaceholders, etc.)
    • Modal auto-linking functionality
    • Commerce-specific preloading logic

Import Updates Required: Developers need to update import statements from scripts/scripts.js to scripts/commerce.js for commerce-specific functions:

// Before
import { rootLink } from '/scripts/scripts.js';
import { fetchPlaceholders } from '/scripts/scripts.js';
// After
import { rootLink } from '/scripts/commerce.js';
import { fetchPlaceholders } from '/scripts/commerce.js';

See Architecture for more details about the refactoring and its benefits.