Adobe Commerce 2.4.10-alpha1 release notes

Highlights in v2.4.10-alpha1

The following highlights apply to the Adobe Commerce 2.4.10-alpha1 release.

Braintree

Fastlane

Added Fastlane by PayPal support for a faster and more secure guest checkout experience.
Customers can opt in to save their payment and shipping details for faster future purchases.
Returning Fastlane customers can authenticate using a one-time code and retrieve their saved information.
Customers can also add or change their saved cards and shipping addresses during checkout.
Fastlane styling and configuration options are also supported.

BUNDLE-3521

Braintree Insights

Introduced Braintree Insights to provide merchants with centralized payment performance reporting in Magento Admin.
Provides visibility into transaction, settlement, decline, gateway rejection, and payment method data.
Supports filtering by website, date range, and daily, weekly, or monthly intervals.
Allows merchants to import up to 13 months of historical transaction data for reporting.
Includes data retention and automated cleanup to maintain up to 3 years of transaction data.

BUNDLE-3522

Swish - Local Payment Method

Introduced Swish as a new Swedish Local Payment Method in the Braintree Magento extension.
Swish is available when the required Swedish merchant, country, currency, and payment configurations are met.
Customers with a Swedish shipping or billing address can complete payments using Swish during checkout.
Added support for successful, cancelled, and failed Swish payment flows with appropriate checkout responses.
Swish is only displayed when all required configuration conditions are satisfied.

BUNDLE-3523

Upgraded version to v4.9.0

Upgraded the Braintree module from v4.8.0 to v4.9.0.
The upgrade includes the latest Braintree module changes and improvements.
Verified that Braintree checkout and payment processing continue to work as expected after the upgrade.
Existing customer checkout and order creation flows remain functional with the upgraded module.
Basic regression testing was performed to ensure no issues were introduced by the upgrade

BUNDLE-3530

Framework

[2.4.10-alpha1] Platform Component Upgrade

Adobe Commerce 2.4.10-alpha1 includes a set of platform dependency upgrades, compatibility improvements, frontend library updates, and stability fixes. The following completed changes are included in this release:

  • Predis: Upgraded predis/predis from 2.x to 3.x, improving compatibility with Redis and Valkey environments and keeping the Redis client aligned with the latest supported dependency versions.
  • Magento Composer Installer: Fixed an issue where magento-composer-installer could silently leave without completing the installation process, improving reliability of Composer-based installations.
  • Knockout.js: Upgraded Knockout.js from 3.5.1 to 3.5.3, along with the required validation and compatibility updates.
  • Chart.js: Upgraded Chart.js from 4.5.0 to 4.5.1, including the necessary validation and compatibility updates.
  • Less.js: Upgraded Less.js from 4.2.2 to 4.6.4, with associated validation and compatibility updates.
  • Uppy: Upgraded Uppy from 5.0.0 to 5.2.0, including the required validation and compatibility changes.
  • jQuery UI: Upgraded jQuery UI from 1.14.1 to 1.14.2, with the associated validation and compatibility updates.
  • PHP 8.5 Compatibility: Addressed a PHP 8.5 deprecation issue related to chr(), ensuring that the function is provided with valid byte values and improving compatibility with PHP 8.5.
  • Catalog Search: Fixed an issue where catalogsearch_fulltext reindexing could halt during processing, improving the reliability of catalog search indexing.
  • js-cookie: Upgraded js-cookie from 3.0.5 to 3.0.7 or the applicable supported version, addressing dependency and compatibility requirements.

AC-17061

Ensure compatibility of B2B 1.5.3-p1/1.5.4-alpha1 with 2.4.10-alpha1, 2.4.9-p1, 2.4.8-p6, 2.4.7-p11 and 2.4.6-p16

B2B 1.5.4-alpha1 is compatible with the following Adobe Commerce release lines: 2.4.9, 2.4.8, 2.4.7 and 2.4.6.

AC-17100

Upgrade and modernize NPM dependencies

Updated the following npm dependencies to their latest secure versions to address known security vulnerabilities:

  • underscore
  • imagemin-svgo
  • glob
  • serve-static
  • grunt
  • less
  • uglify-js
  • marked
  • clean-css
  • minimist
  • trim-newlines
  • terser
  • css-select
  • nth-check
  • semver-regex
  • http-cache-semantics
  • js-yaml
  • package-json

These dependency updates mitigate the identified security vulnerabilities while maintaining the existing application functionality.

AC-17372

Upgrade NPM dependency: underscore.js (1.13.7 → 1.13.8)

Updated underscore.js from 1.13.7 to 1.13.8 to include the latest upstream fixes and stability improvements.

AC-17486 - GitHub code contribution

Upgrade NPM Dependency: imagemin-svgo (9.0.0 → 12.0.0)

Updated imagemin-svgo from 9.0.0 to 12.0.0 to include the latest upstream fixes, security updates, and SVG optimization improvements.

AC-17657 - GitHub code contribution

Upgrade NPM dependency: eslint-formatter-junit (8.40.0 → 9.0.1)

Updated eslint-formatter-junit from 8.40.0 to 9.0.1 to include the latest upstream fixes and compatibility improvements for ESLint reporting.

AC-17659 - GitHub code contribution

Upgrade NPM dependency: glob (11.0.0 → 13.0.0)

Updated glob from 11.0.0 to 13.0.0 to include the latest upstream fixes, performance improvements, and compatibility enhancements.

AC-17660 - GitHub code contribution

Upgrade NPM dependency: grunt-eslint (25.0.0 → 26.0.0)

Updated grunt-eslint from 25.0.0 to 26.0.0 to include the latest upstream fixes and compatibility improvements.

AC-17661 - GitHub code contribution

Upgrade NPM dependency: serve-static (1.16.2 → 2.2.1)

Updated serve-static from 1.16.2 to 2.2.1 to include the latest upstream fixes, security updates, and compatibility improvements.

AC-17662 - GitHub code contribution

Upgrade latest NPM Dependencies for Grunt and Less

Updated Grunt and Less to the latest supported versions, improving frontend build stability and compatibility.

AC-17663 - GitHub code contribution

Upgrade NPM Override Dependencies to the Latest Supported Versions

Updated multiple NPM override dependencies to the latest supported versions, improving security, build stability, and compatibility.

AC-17664 - GitHub code contribution

[B2B] Purchase orders not auto-converting to sales order with ActiveMQ

Fixed an issue where purchase orders placed via the storefront with auto-approval enabled were not automatically converted to sales orders when using ActiveMQ and running consumers via cron (bin/magento cron:run). Previously, messages were added to the ActiveMQ queue but not processed unless the consumer was started manually via CLI. With this fix, the consumer now processes messages as expected after cron runs, ensuring seamless order conversion for B2B merchants using ActiveMQ.

AC-17679

Symfony L2 cache optimization and legacy cache backward compatibility

Adobe Commerce 2.4.10 now provides optimized Symfony L2 Cache support while maintaining the existing Zend-based cache implementation as the default.

Merchants who want to use Symfony Cache must explicitly enable it and update the required cache configuration specific to the Symfony L1/L2 implementation. Existing merchants who continue using the Zend-based cache do not need to make any configuration changes.

This dual-cache approach provides merchants with the flexibility to adopt Symfony Cache based on their requirements while ensuring backward compatibility with existing cache configurations and deployments.

AC-17865

Other

Admin management of country sub-regions (States and Provinces)

Merchants can now manage country sub-regions (such as states and provinces) directly from the Admin interface. This new feature allows merchants to:

  • View, add, edit, deactivate, or remove regions for any country.
  • Instantly make new regions available as dropdown options at checkout, in customer address forms, and during admin order creation—no code changes required.
  • Edit region display names (including localized names) and ISO codes.
  • Deactivate regions referenced by existing orders, addresses, or tax rules (ensuring historical data remains accurate), while preventing hard deletion of such regions.
  • All predefined regions remain unchanged and are now visible and manageable in the new interface.

This feature is fully backward-compatible and ensures that customer-facing and API address behavior remains consistent.

AC-16192

Upgrade predis/predis from 2.x to 3.x

The Redis client library predis/predis was upgraded from version 2.x to 3.x. This major version upgrade aligns with the latest dependency standards, improves compatibility, and ensures long-term maintainability.

AC-17101 - GitHub code contribution

Upgrade knockout.js from version 3.5.1 to 3.5.3

Upgraded the knockout.js library from version 3.5.1 to 3.5.3. This update brings upstream bug fixes and stability improvements for all UI components using Knockout bindings in both storefront and admin.

AC-17366 - GitHub code contribution

Upgrade Varnish to version 9 for 2.4.10-alpha1

Adobe Commerce 2.4.10 is compatible with Varnish version 9.0.

AC-17972

Fixed issues in v2.4.10-alpha1

We have fixed 169 issues in the Adobe Commerce 2.4.10-alpha1 core code. A subset of the fixed issues included in this release is described below.

APIs

[Issue] TypeError in Creditmemo\Validation\QuantityValidator caused by min() with string quantity

To stabilize financial logging pipelines and prevent API request failures during bulk automated order refunds, data type casting guardrails have been added to the internal sales credit memo factory and validation layers.

AC-16056 - GitHub issue - GitHub code contribution - GitHub code contribution

REST API Attribute Update fails without attribute_id

Fixed an issue where updating an existing product attribute through the REST API failed when attribute_id was not provided. The API now correctly identifies the attribute using the attribute_code from the URL and updates it successfully.

AC-16424 - GitHub issue - GitHub code contribution

Show an authentication error when Adobe Stock credentials are invalid

Admins now see an authentication error when Adobe Stock credentials are invalid.

AC-17123

Visual Swatch is deleted when updating option through REST API

To protect catalog data integrity and streamline automated integrations, a bug has been resolved in the EAV Swatch management layer where existing visual or textual swatch values were inadvertently wiped out during standard option updates.

AC-9199 - GitHub issue - GitHub code contribution

Bulk tier price API fails entire batch when one SKU is missing

Previously, the bulk tier price update API (POST /V1/products/tier-prices) failed the entire request when any SKU in the payload did not exist, leaving valid SKUs without updates. Now, valid SKUs are processed successfully while missing SKUs are reported as per-item errors, so a single bad entry no longer aborts the whole batch.

ACP2E-4998 - GitHub code contribution

Attribute update fails with label Value matching with existing Option value ID

Fixed the issue where a new dropdown/multiselect product attribute option could not be created via the REST API when its label matched an existing option’s ID. Previously, the API returned an “already exists” error (and could return the wrong option ID) even though the same option could be created successfully through the Admin UI.

ACP2E-5107 - GitHub code contribution

APIs, Import and export

REST API allows negative product prices while Admin UI blocks them

Product import via the REST API endpoint now rejects negative values for price-type attributes (price, special_price, cost, and related MSRP fields), consistent with the behavior of the Admin UI import. Previously, the API accepted negative prices silently and persisted them.

ACP2E-4941 - GitHub code contribution

APIs, Order

Order Rate Limit feature incompatible with Valkey cache backend

Previously to this fix rate limiting was silently bypassed and each request was allowed through regardless of the configured limit. After the fix, requests exceeding the configured limit are correctly rejected with HTTP 429.

ACP2E-4899 - GitHub code contribution

Account

[Issue] fix: login form incorrect password label

Fixed an issue where the Password field on the customer login page had an incorrect label association. The password label now correctly targets the Password field, allowing it to be identified properly by automated testing tools.

AC-16193 - GitHub issue - GitHub code contribution

[Issue] Validate frontend input type for file uploads

Customer address file uploads now validate that the target attribute’s input type is file or image before processing, so text and other non-file attributes cannot be abused as upload targets. Invalid upload attempts return a clear validation error instead of failing unpredictably or accepting disallowed file types.

AC-17076 - GitHub issue - GitHub code contribution

Customer token generated on website A can be used on website B in website-scoped customer configuration

To enforce strict customer data isolation on multi-website instances, a security gap has been resolved in the GraphQL authentication layer where tokens were being incorrectly validated across separate boundaries.

AC-17299 - GitHub issue - GitHub code contribution

[Issue] Fix PHP 8.5 deprecation: Using null as the key parameter for array_key_exists()

Fixed an issue on PHP 8.5 where customer login during guest checkout failed due to a deprecated array_key_exists() call with a null key. Customer login now works successfully without generating the deprecation error.

AC-17395 - GitHub issue - GitHub code contribution

[Issue] magento/magento2: Add i18 translations to requestPasswordResetEmail and resetPassword GraphQL mutations

To ensure a fully localized headless storefront experience, internationalization (i18n) translation capabilities have been added to the customer account recovery API endpoints

AC-9356 - GitHub issue - GitHub code contribution

Admin UI

Dashboard should show Last 7 days by default when aggregate data is used

Fixed an issue where the Dashboard showed Today by default when aggregated sales data was enabled. The Dashboard now shows Last 7 days by default when using aggregated data.

AC-13799 - GitHub issue - GitHub code contribution

FPT value in cart page and product page are different for same configurations for a simple product

Fixed an issue where Fixed Product Tax (FPT) values were displayed differently on product and cart pages for the same tax configuration. FPT values are now displayed consistently across the product, catalog, mini cart, and shopping cart pages.

AC-17007 - GitHub code contribution

Lazy configuration implementation

Performance optimization that improves configuration loading performance by lazily resolving scoped system configuration data while preserving existing configuration behavior.

ACP2E-4751 - GitHub code contribution

HugeRTE editor blocks emojis - javascript validation failed

Fixed the issue where HugeRTE blocked saving content containing utf8mb4 emojis (e.g. 🔵⚪🔴) when editing inside PageBuilder content-type modals (Text, Banner, Slide). Previously, the wysiwyg validation config for these modal forms resolved allowUtf8mb4 to false, causing the editor to reject 4-byte UTF-8 characters even on installations where the database fully supports utf8mb4.

ACP2E-4822 - GitHub code contribution

Restricted admin cannot delete customers post-upgrade

Fixed an issue where restricted admin cannot delete customers after upgrade, with a red banner at the top of the customer grid saying: “More permissions are needed to view this item.”

ACP2E-4838

Admin is logged out when viewing customers with large address books in customer edit page in Admin Panel

Fixed an issue when Admin is logged out when viewing customers with large address books in customer edit page in Admin Panel

ACP2E-4875 - GitHub code contribution

Orders do not appear in Sales Grid

Fixed an issue where new orders were delayed in appearing in the Sales grids when asynchronous grid indexing was enabled, due to the reconciliation cursor resetting once it caught up to the most recent entity. New entries now appear in the grid on the next cron run.

ACP2E-4893 - GitHub code contribution

[Cloud] Missing Assigned Products filter in Category Product Grid when Magento_VisualMerchandiser is enabled

Fixed the issue where the “Assigned” filter was missing from the Add Products modal Search All Products grid when Visual Merchandiser is enabled. Previously, admin users had no way to filter products by their assigned/unassigned status in that modal, making it difficult to identify which products were already in the category.

ACP2E-4974

Fixed the issue where the Return Number/Return ID was not displayed in Action Log entries for return-related admin actions. Previously, actions such as viewing or saving an RMA were recorded in the Action Log without any return identifier, unlike order-related actions which correctly showed the Order Number.

ACP2E-5050

“Use Default Value” unchecked for Price and Tax Class on Admin product save at store-view scope

Restricted admin users can now save products at store-view scope without losing the “Use Default Value” state for Price, Status, and Tax Class attributes. Previously, saving a product as a restricted admin (with price and status editing denied) would silently uncheck “Use Default Value” for those fields, causing store-view-level overrides to be written even when none were intended.

ACP2E-5081

Admin UI, Order

Incorrect price shown for grouped product in Admin Create Order when two grouped products share the same simple product

Fixed an issue where the price of a grouped product in Admin Create Order was incorrectly calculated when two grouped products sharing the same simple product were both configured without being added to the cart.

ACP2E-4965 - GitHub code contribution

Admin UI, UI Framework

Magento2 redirects to homepage instead of showing error with wrong menu declaration

To optimize the extension development workflow and ensure stable backend loading, a structural routing defect has been resolved where invalid admin menu declarations triggered silent browser loop failures instead of displaying actionable diagnostic messages.

AC-7543 - GitHub issue - GitHub code contribution

Analytics / Reporting

[QUANS] Can it be possible to display the customer email ID and name in the Customer KPI Table under Advanced Reporting

Adobe Commerce now includes the customer first, middle, and last name in the data exported to Advanced Reporting, allowing the Customer KPI Table to display the customer name. Previously, only an encoded customer identifier was exported, so merchants could not identify customers by name in Advanced Reporting.

ACP2E-3928 - GitHub code contribution

Heavy INSERT on sales_bestsellers_aggregated_monthly

Improved performance for aggregate_sales_report_bestsellers_data cron.

ACP2E-4559 - GitHub code contribution

Add to Cart event payload is in the legacy Universal Analytics Enhanced Ecommerce format instead of the GA4 ecommerce format.

Before the fix, ecommerce events sent to Google Analytics 4 through Google Tag Manager used the legacy Universal Analytics format and were missing several checkout events. After the fix, all ecommerce events use the correct GA4 format and the full checkout funnel is tracked.

ACP2E-5176 - GitHub code contribution

B2B

placeNegotiableQuoteOrderV2 returns total.total_shipping = null for orders placed from a negotiable quote

Fixed an issue where placeNegotiableQuoteOrderV2 returned a null shipping total for orders placed from a negotiable quote with paid shipping. The API now correctly returns the shipping amount, matching the shipping charge included in the order total.

AC-18083

[B2B] Missing Bundle Option Prices in Quote Details After Quote Is Converted to Order

Fixed an issue where bundle product option prices were missing on the negotiable quote detail page after the quote was converted to an order.

ACP2E-5055

B2B, Order

Help on cleaning 59M+ quote tables (sales_clean_quotes is unable to run)

Fixed the issue where the sales_clean_quotes cron job timed out on instances with large quote tables. Previously, the cleanup query selected all columns from the negotiable_quote table unnecessarily, causing MySQL to perform a full filesort on millions of rows; and each quote was deleted individually via the PHP model layer, compounding the performance cost.

ACP2E-4891 - GitHub code contribution

Cart & Checkout

Fixed an issue where the Add to Cart notification did not include the related product when adding a product and its related product together.
The notification now displays the names of both products added to the cart.

AC-11976 - GitHub issue - GitHub code contribution

[Issue] Update CartRepositoryInterface.php

Updated CartRepositoryInterface.php to declare the exceptions that can be thrown when saving a cart. This keeps the interface consistent with the underlying cart save implementation.

AC-13323 - GitHub issue - GitHub code contribution

[Bug] Company field in shipping address is set to null in multi-store setup when adding a new address during the checkout shipping step

Fixed an issue where the Company field was not saved when customers added a new shipping address during checkout in a multi-store setup. The Company value is now correctly saved in the quote, placed order, and customer address book.

AC-13456 - GitHub issue - GitHub code contribution

Paypal > Customer data mismatch (prefix, firstname, lastname)

Fixed an issue where customer name details were mapped incorrectly during the PayPal SEPA checkout flow. Prefix, First Name, and Last Name are now populated correctly in the order without any mismatch.

AC-15366 - GitHub issue - GitHub code contribution

Incorrect free_shipping flag for virtual products

Fixed an issue where the free_shipping flag was set incorrectly for virtual products when multiple items were added to the cart. The flag is now correctly set for all items when the applicable free shipping rule is applied.

AC-15648 - GitHub issue - GitHub code contribution

Guest add-to-cart: mini-cart / customer-data “cart” section under-reports cart as empty despite item being correctly persisted

Fixed an issue where the guest mini-cart did not reflect items immediately after adding a product to the cart. The mini-cart counter and dropdown now correctly update, and added products are displayed in the cart as expected.

AC-17973 - GitHub code contribution

AJAX add-to-cart inline error messages lost role=“alert” semantics

Fixed an issue where AJAX add-to-cart error messages were visible on the storefront but were not announced by screen readers. Add-to-cart errors are now displayed within an accessible role=“alert” region for proper accessibility support.

AC-18036 - GitHub code contribution

Discard subsequent rules for shipping amount

To ensure accurate promotional pricing and strict compliance with configured discount rules, a flaw in the shopping cart price rules calculator has been resolved where lower-priority shipping discounts were incorrectly applied

AC-9612 - GitHub issue - GitHub code contribution

Duplicate orders created even though the error is triggered

Fixed an issue where orders could still be placed with an invalid customer address

ACP2E-4774 - GitHub code contribution

Configurable Product’s performance impact on checkout (totals-information, estimate-shipping-modules)

Before the fix, checkout requests such as totals-information and estimate-shipping-methods could become significantly slower for configurable products with many child products when the first salable child appeared late in the child list. After the fix, this performance degradation no longer occurs, and response times remain consistent regardless of the position of the first salable child.

ACP2E-4805 - GitHub code contribution

Cart totals recalculated on every cart page view

Optimized cart totals requests on cart page. Cart totals recalculated twice on every cart page view.

ACP2E-4817 - GitHub code contribution

Customer Address Attribute (EAV) City and Street validation rules conflicts with hardcoded validation rules.

Fixed an issue where the city validator incorrectly rejected valid city names longer than 100 characters (database limit is 255), and where street addresses longer than 255 characters could be silently truncated in the database without
returning a validation error. Both validators now enforce limits aligned with the narrowest database column constraint across all address tables.

ACP2E-4861 - GitHub code contribution

[Storefront] Add-to-cart “requested qty is not available” message intermittently not rendered on PDP

Fixed the issue where the stock unavailability message (“The requested qty is not available, please reduce the quantity.”) was intermittently not displayed on the product detail page after a failed Add to Cart attempt. Previously, the page could refresh silently with no error feedback when a shopper repeatedly clicked Add to Cart for a product whose available stock was already fully reserved in their cart.

ACP2E-5071 - GitHub code contribution

Persistent shopping cart cleared on natural session expiry when Clear Persistence on Log Out = Yes

Fixed the issue where the persistent shopping cart was cleared when the browser session expired. Previously, with Clear Persistence on Log Out enabled, an expired session emptied the cart and removed the persistent cookie even though the shopper had not logged out.

ACP2E-5088 - GitHub code contribution

Guest quote customer_email not resynced from billing address after restoreQuote() when retrying checkout

Fixed an issue where retrying a failed guest checkout placed the order with the previously entered email instead of the updated one.

ACP2E-5188 - GitHub code contribution

Cart & Checkout, GraphQL

The Quote GraphQL API may assign currency objects instead of ISO currency codes to quote fields

Updated the Quote GraphQL API to assign ISO currency codes to a quote’s store and quote currency fields instead of assigning currency objects.

ACP2E-5229 - GitHub code contribution

Catalog

[Issue] module.xml file improvements for Magento_ConfigurableProductGraphQl, Magento_MsrpConfigurableProduct, Magento_NewRelicReporting & Magento_Swatches modules.

Optimized the module declaration architecture by removing redundant Magento_Catalog dependencies from four core sub-modules. This cleanup addresses unnecessary duplication in the dependency tree, streamline module loading order calculations, and improves long-term framework maintainability without introducing breaking changes.

AC-10762 - GitHub issue - GitHub code contribution

Possible memory leak in getUsedProducts function for configurables

Fixed an issue where processing multiple configurable products caused execution time and memory usage to increase over time.
Configurable products can now be processed without the progressive slowdown and memory increase.

AC-10942 - GitHub issue - GitHub code contribution

Shop By Category filter visible on non-anchor categories

Fixed an issue where the Shop By Category filter was displayed on non-anchor categories even when the category filter was disabled in Admin.
The filter is now hidden on the storefront according to the configured setting.

AC-10945 - GitHub issue - GitHub code contribution

Data Type of applied_rule_ids in Quote and Quote Item is different

To ensure absolute database schema consistency and prevent critical cart data mismatches on high-volume promotional stores, the data column tracking active promo definitions has been expanded across parent checkout structures.

AC-14518 - GitHub issue - GitHub code contribution

Unable to get product collection scoped decimal attribute if price is globally scoped

To ensure precise storefront pricing and attribute rendering on international setups, a core data collection bug has been resolved where store-specific decimal values were erroneously replaced by default global values.

AC-15806 - GitHub issue - GitHub code contribution

Incorrect handling of the GET params

To improve platform stability and safeguard the checkout funnel, a block-level input validation layer has been added to prevent malformed URL queries from crashing storefront product pages.

AC-16262 - GitHub issue - GitHub code contribution

Magento\SalesRule\Model\Plugin\QuoteConfigProductAttributes::afterGetProductAttributes getting triggered on all Cart Queries

To reduce database execution strains and eliminate unoptimized database hits during customer checkouts, the sales rule product configuration plugin has been optimized to execute conditionally and leverage caching structures.

AC-16559 - GitHub issue - GitHub code contribution

[Issue] [PHPDOC] Fix functions orderComment in Magento\Sales\Model\Order

To eliminate strict typing restrictions, enhance static analysis accuracy, and improve developer experience under rigorous linting engines like PHPStan (Level 5 or higher), inline structural documentation blocks have been standardized within the sales order core subsystems.

AC-16759 - GitHub issue - GitHub code contribution

[Issue] [Bug] GraphQL SearchCriteriaValidator not loaded — removed by module-graph-ql di.xml array override

To preserve robust query validation and enforce platform guardrails, a dependency injection (DI) configuration defect has been resolved where the SearchCriteriaValidator layer was being inadvertently disabled.

AC-16959 - GitHub issue - GitHub code contribution

strpos() expects parameter 1 to be string, array given | magento/module-eav

To protect storefront stability and deliver an uninterrupted customer discovery experience, a critical type-mismatch defect has been resolved within the advanced catalog search processing engines.

AC-1706 - GitHub issue - GitHub code contribution

Empty quote records are being created when customer visits a page

Visiting product page on the storefront doesn’t create empty quote records in some situations.
Previously an empty quote records were created when customer visits a product page on the storefront

ACP2E-4682 - GitHub code contribution

Product details page “Weight” attribute doesn’t show unit suffix in “Additional Information” section

Fixes the issue where the Weight attribute on the Storefront product page displayed only a raw numeric value in the “Additional Information” or “More Information” section without the configured unit of measurement (lbs or kgs).

ACP2E-4808 - GitHub code contribution

[Cloud] Catalog price rule activation not reflected in Live Search until next force resync — price feed sync delay

Fixed an issue where activating a catalog price rule did not update prices in Live Search until a later force resync. The price feed indexer could run before the catalog rule indexer it depends on had finished, and so exported stale prices. Indexers with unfinished dependencies are now deferred to the next cron run, so the price feed always runs against up-to-date prices.

ACP2E-5029 - GitHub code contribution

[CLOUD] Adobe Commerce Cloud category rule OR operator logic issue

The Contains operator now accepts multiple comma-separated values, evaluated as an OR match. A single rule row can therefore match any of several terms instead of just one.

ACP2E-5061

Alt text (label) is not saved for a newly added product image

Fixed an issue where the alt text (label) of a newly uploaded product image was not saved when the uploaded file was renamed on save due to a filename collision in the media gallery. Previously, the image role attributes (image, small_image, thumbnail) were stored correctly, but their corresponding *_label attributes were silently dropped, leaving alt text empty on storefront search and listing pages. The gallery create handler now resolves the renamed file back to its originating image entry, so the label is persisted for all assigned image roles. As a result, alt text entered during product creation is reliably saved and rendered across the storefront.

ACP2E-5216 - GitHub code contribution

PHP 8.5 “null as array offset” deprecation error opening Add Product page in admin when user lacks Edit Product Status resource

Previously, admin users without the “Edit Product Status” permission could encounter a “null as array offset” deprecation error when opening the Add Product page. This has been fixed so the page loads correctly regardless of the user’s product status permissions.

ACP2E-5248 - GitHub code contribution

Catalog, GraphQL

[GraphQl] products query price filter issues with net prices entered in adminhtml

Fixed an issue where the GraphQL products query did not consider tax when applying a price filter.
The price filter now uses the displayed tax-inclusive price, so only products within the specified price range are returned.

AC-6883 - GitHub issue - GitHub code contribution

Catalog, Performance

[CLOUD] customer_group_excluded_website are not honored by the Catalog Permissions indexing pipeline

Catalog Permissions index now excludes the website that is excluded from the customer group.

ACP2E-5223

Catalog, SEO

Category url_path not syncing on url_key change for all store views

Previously, changing a category’s URL Key at the “All Store Views” scope could leave store-scoped descendant categories with a stale or incorrectly-prefixed url_path, and editing a category with its own store-specific url_path override could pick up its pre-edit URL Key instead of the newly entered one. This is now fixed — URL Key changes correctly cascade to all store-scoped descendants in the right hierarchical order with the correct parent path, and a category’s own store-scoped url_path override is recalculated using its just-changed URL Key, so store-scoped URLs stay accurate immediately after saving.

ACP2E-5113 - GitHub code contribution

Cloud, Framework

Performance Regression and incorrect cache storage with SymfonyL2 enabled

Fixed an issue where configuring the L1 cache storage path as an absolute path (e.g., /dev/shm) caused it to be silently redirected to the var/ directory, and a separate performance issue where invalidating cache tags on large catalogs could cause significant response time delays due to a blocking Redis operation.

ACP2E-4989 - GitHub code contribution

Content

CMS pages created for different websites are displaying wrong pages in frontend

Previously, in multi-website setups where the Website Restriction landing page cache key was not scoped per website, causing the wrong CMS page to be served on the secondary website storefront. The cache key in WebsiteRestriction/Controller/Index/Stub.php now correctly includes the current website ID resolved via the store manager.

ACP2E-4593

Customer Segment evaluation returns customers from only the first website instead of all assigned websites when Global customer sharing is enabled

Fixed an issue where Customer Segment evaluation returns customers from only the first website instead of all assigned websites when Global customer sharing is enabled.

ACP2E-5079

Page Builder ajax preview request returns 500 error with translate cache disabled

PageBuilder preview now renders correctly regardless of whether the Translations cache is enabled or disabled. Previously, PageBuilder preview failed to render when the Translations cache was disabled.

ACP2E-5118 - GitHub code contribution

Fixed an issue where animated GIF images uploaded through the media gallery were converted to PNG when the legacy media gallery was enabled. Previously, when Enable Frontend Resize was turned on, animated GIFs uploaded through the Old Media Gallery lost their animation and were saved as static PNG files. Animated GIFs are now uploaded and stored in their original format.

ACP2E-5232 - GitHub code contribution

Content / CMS

To ensure a reliable and uninterrupted catalog management experience in the administration panel, a JavaScript formatting defect has been resolved that completely broke the backend product workspace interface

AC-16474 - GitHub issue - GitHub code contribution

[Issue] Improve performance when resized image URL is accessed but does not yet exist.

To maximize asset delivery responsiveness, significantly reduce server disk I/O, and prevent severe server processor spikes, the catalog image generation subsystem has been optimized to handle missing media URLs strictly on demand.

AC-16547 - GitHub issue - GitHub code contribution

Regression: Non UTF-8 encoded URI component still throws “Unable to serialize value” in CatalogWidget on 2.4.7-p5

To eliminate critical rendering failures caused by bad production web traffic, the catalog widget block has been fortified to gracefully handle non-UTF-8 data sequences inside requested URLs.

AC-17264 - GitHub issue - GitHub code contribution

Using null as an array offset is deprecated, use an empty string instead when editing global design config scope

Fixed an issue where editing the Global scope under Content > Design > Configuration returned an HTTP 500 error on PHP 8.5 due to a deprecated null array offset. The Global design configuration now opens successfully without the error.

AC-17456 - GitHub issue - GitHub code contribution

Framework

SELECT from media_storage_file_storage when media DB storage is not in use or disabled

To reduce unnecessary database query overhead and eliminate noisy system exceptions, the media file synchronization layer has been optimized to bypass database storage checks when the system is explicitly configured to use the local filesystem

AC-10586 - GitHub issue - GitHub code contribution

Fatal error thrown on exception constructor when cookies store is an array

Fixed an issue where an invalid store cookie value caused a PHP fatal error.
Magento now correctly throws an “Invalid store parameter” exception when the store cookie contains an invalid value.

AC-10888 - GitHub issue - GitHub code contribution

[Issue] Use static const in Magento\Customer\Model\Address\Config

Fixed an issue where custom address configuration classes had to duplicate getFormats() to use a custom address template path. Custom address configurations can now define their own template path using a static constant without duplicating the method.

AC-12906 - GitHub issue - GitHub code contribution

Cannot use processFilter on product Collection

Fixed an issue where applying multiple filters to a product collection using FilterProcessor caused a PHP error. Product collections can now be filtered correctly using multiple filter conditions.

AC-15018 - GitHub issue - GitHub code contribution

Potential Indexer Performance issue for large catalogs - Bulk Insert & Locking Entire CL table to identity the latest version

To safeguard database performance on large enterprise-scale catalogs, the system database indexer pipeline has been hardened to parse scheduled data modifications in bounded batches, eliminating high-pressure database locks.

AC-16238 - GitHub issue - GitHub code contribution

[Issue] Performance Improvement

To eliminate unnecessary memory allocation and reduce runtime processing overhead, several core string manipulation routines have been refactored to utilize optimized PHP native behavior.

AC-16565 - GitHub issue - GitHub code contribution

[Issue] Fix support for GLOB_BRACE on non-GNU Linux systems

To guarantee seamless deployment capability across lightweight virtualization environments, a critical path discovery bug has been fixed to fully restore execution support for systems utilizing non-GNU libraries, such as Alpine Linux Docker images.

AC-16568 - GitHub issue - GitHub code contribution

Marketing params added back into query used for built-in FPC identifier creation

To improve cache hit rates and eliminate server performance regressions, a structural flaw has been fixed in the native built-in Full Page Cache (FPC) system where marketing and tracking query parameters were accidentally reintroduced into cache identifier signatures.

AC-16583 - GitHub issue - GitHub code contribution

Add support for plain objects with promoted properties in message queue communication

To support modern PHP development practices and simplify asynchronous architecture workflows, the framework reflection engine has been enhanced to natively process Data Transfer Objects (DTOs) utilizing public, promoted, and readonly constructor properties.

AC-16672 - GitHub issue - GitHub code contribution

[Issue] Fix: Real column type introspection skips unsigned/nullable processors, uses defaults

To ensure accurate system setup tracking, a database abstraction defect has been resolved where declarative schema verification commands perpetually reported pending modification changes for DOUBLE UNSIGNED columns lacking explicit precision or scale attributes.

AC-16758 - GitHub issue - GitHub code contribution

[Feature] Support “disabled” state for individual select options in the admin config

To enhance backend form flexibility and provide developers with granular layout control, framework-level support has been introduced to mark individual option tags as non-selectable inside form elements.

AC-16761 - GitHub issue - GitHub code contribution

⚡ Performance: Missing memoization in StoreManager and plugin overhead in Store module

To drastically lower CPU execution strain and minimize unnecessary application memory churn, a critical configuration value caching routine has been implemented to intercept redundant store check processes.

AC-16838 - GitHub issue - GitHub code contribution

[Issue] fix: remove dead openssl_free_key() code path in JwkFactory

To clean up structural tech debt and align cryptography tools with modern execution profiles, legacy resource-freeing hooks have been purged from the JSON Web Key utility backend.

AC-16958 - GitHub issue - GitHub code contribution

[Issue] PHPDoc correction spelling

To maintain high code quality standards and improve integrated development environment (IDE) code-hinting accuracy, structural cleanups have been applied to inline code documentation layers across the core framework modules.

AC-16960 - GitHub issue - GitHub code contribution

[Issue] perf(di:compile): cache ReflectionClass instantiations in Type, Config/Reader and ClassReader

To significantly accelerate compilation times and maximize continuous integration (CI) deployment throughput, the internal dependency injection compiler backend (setup:di:compile) has been optimized to eliminate redundant PHP reflection cycles.

AC-17077 - GitHub issue - GitHub code contribution

[Issue] Update Filter.php to allow {{block template="Magento_Module::path/to/template.phtml"}} and setting \Magento\Framework\View\Element\Template as default class

To simplify content creation and align CMS directives with template layout standards, the core markup tag processing system has been enhanced to support block declarations without an explicit class definition.

AC-17078 - GitHub issue - GitHub code contribution

[Issue] perf(di:compile): memoize Interception Config scope reads during compilation

To dramatically speed up site deployments and automated backend compilation, the dependency injection compiler (setup:di:compile) has been optimized to eliminate redundant XML parsing operations.

AC-17313 - GitHub issue - GitHub code contribution

Upgrade underscore.js to 1.13.8 for preventing against security vulenerability

The bundled Underscore.js library (lib/web/underscore.js) has been upgraded from 1.13.7 to 1.13.8 No configuration changes are required.

AC-17349 - GitHub issue - GitHub code contribution

Fixed an issue where magento-composer-installer could silently fail to populate setup/ and other Composer-mapped directories when the deployment destination was configured as a symbolic link. This could result in missing files and an incomplete Commerce deployment.

AC-17360 - GitHub issue

Cache preload keys no longer need ID prefix when using Symfony Cache adapter

Preload keys (preload_keys) for the Symfony Cache adapter can now be configured without the cache id_prefix. Previously, following the documented configuration and including the prefix on each key (for example, 061_SYSTEM_DEFAULT) caused the keys not to be preloaded. You can now specify the keys exactly as the application requests them (for example, SYSTEM_DEFAULT), and Adobe Commerce applies the id_prefix automatically.

AC-17407 - GitHub issue - GitHub code contribution

[Issue] Fix PHP 8.5 deprecation when category attribute has ‘frontend_input’ …

Fixed an issue where opening a category in the Admin panel caused an error on PHP 8.5 when a category attribute had frontend_input set to null. Category pages now open and can be edited successfully without the deprecation error.

AC-17499 - GitHub issue - GitHub code contribution

[Issue] Replace deprecated PHPUnit assertions and test-stub configuration

Updated Magento 2’s core unit test suite for future PHPUnit upgrades by replacing seven deprecated PHPUnit usages. The changes address isType() assertions and with*() configuration on test stubs—patterns that trigger deprecation notices in current PHPUnit versions and are slated for removal in PHPUnit 13 or later.

AC-17750 - GitHub issue - GitHub code contribution

GraphQL order_date and comment timestamps return wrong calendar date under non-en_US locales (IntlDateFormatter misparse) — AC-14431 fix incomplete

Fixed an issue where GraphQL order dates could show an incorrect calendar date for French and German locales.
Order dates and related comment timestamps now return the correct date and time.
Improved date formatting so GraphQL date values can be reliably parsed by applications.
Existing behavior for the en_US locale remains unchanged.

AC-18084 - GitHub code contribution

[Issue] Remove forbidden @author tag

To ensure strict alignment with core technical guidelines, an incremental code maintenance sweep has been completed to clean up inline resource documentation blocks across multiple system modules.

AC-8366 - GitHub issue - GitHub code contribution

[Issue] Remove forbidden @author tag from Magento_Catalog (part 2)

To ensure full alignment with Magento’s unified code delivery guidelines, an incremental cleanup pass has been executed to systematically strip out non-compliant file comments across core storefront resource models.

AC-8370 - GitHub issue - GitHub code contribution

Tier Price Storage Interface Delete Bug doesn’t delete all Tier Prices

Resolved an issue in TierPriceStorage where deleting product tier prices across multiple websites failed to delete all prices by updating the price ID matching logic to account for the assigned website ID.

AC-9738 - GitHub issue - GitHub code contribution

[B2B] Purchase orders not auto-converting to sales order with ActiveMQ

Fixed an issue where consumers started by cron did not process messages when ActiveMQ was used with the STOMP protocol. As a result, auto-approved purchase orders were not converted to sales orders. Message processing for STOMP queues is now more reliable and consistent with the DB and AMQP queue implementations.

ACP2E-4349 - GitHub code contribution - GitHub code contribution

Exports failure with configured AWS S3 storage

Product export now works correctly when AWS S3 remote storage is configured. Previously, exported files could not be written to S3 due to invalid path resolution in the storage driver.

ACP2E-4786 - GitHub code contribution

Indexers stuck in self-lock loop with ‘use_application_lock’ and ‘file’ provider

Fixed an issue where indexers hung indefinitely during reindexing when the indexer use_application_lock setting was enabled together with the file lock provider. Reindex operations now complete as expected.

ACP2E-5027 - GitHub code contribution

Slow performance with MAGENTO_DC variables set under cloud UI

After the fix, the deployment config is not reloaded each time the requested key is not present and some env variables are defined.

ACP2E-5094 - GitHub code contribution

[CLOUD] Malformed URL path returns HTTP 500 instead of 404 in URL rewrite router

Fixed the issue where a malformed storefront URL returned an HTTP 500 error page instead of a standard 404 Not Found. Previously, certain malformed request paths caused an uncaught error during URL rewrite resolution.

ACP2E-5154 - GitHub code contribution

[CLOUD] PHP 8.5 compatibility — ComponentRegistrar::getPath() null array offset crashes setupdeploy (compact strategy) on 2.4.9

Fixed an issue where setup:static-content:deploy failed on PHP 8.5 with a “Using null as an array offset” error when compiling module LESS files that use the //@magento_import directive. Static content deployment now completes successfully on PHP 8.5.

ACP2E-5183 - GitHub code contribution

[CMS] False-positive “Invalid HTML content provided” when saving CMS block with an anchor href followed by another attribute

CMS content containing a standard anchor link (e.g. <a href="https://example.com/page" target="_blank" rel="noopener">) no longer triggers a false “Invalid HTML content provided” validation warning or a save failure when cms/wysiwyg/force_valid is enabled.

ACP2E-5203 - GitHub code contribution

Framework, GraphQL

di.xml array item gets replaced if later config used numeric key

To protect architectural data integrity and improve modular extensibility, a core bug has been resolved within the Dependency Injection (DI) XML parsing engine where array configurations using the numeric key “0” were silently overwritten or dropped during module compilation.

AC-8102 - GitHub issue - GitHub code contribution

GraphQL

addProductsToCart throws errors on custom_attributesV2 if attribute code is model

Fixed an issue where addProductsToCart returned an internal server error when a product had a custom attribute with the code model. The custom attribute can now be retrieved correctly through custom_attributesV2.

AC-16987 - GitHub code contribution

GQL Quantity null while stock_status is IN_STOCK

The quantity field in the products GraphQL query incorrectly returned null for products that were in stock on a custom MSI stock. The resolver was gating the response on the cataloginventory/options/not_available_message config value before fetching the actual stock quantity, and the XML default of this config (2 — “Not enough items for sale”) caused null to be returned on any fresh store without an explicit admin override.
The check is now evaluated after the saleable quantity is resolved. null is returned only when the product has no available stock (saleableQty <= 0) and the store is explicitly configured with “Not enough items for sale”. Products that are in stock always return their actual saleable quantity, regardless of this config setting. The config read is also corrected to use store scope so store-level overrides are respected.

ACP2E-4840 - GitHub code contribution

[CLOUD] BundleProduct items.options.price ignores website-scoped prices when Catalog Price Scope = Website

Fixed Website-Scoped Bundle Option Prices in GraphQL: Resolved an issue where querying bundle product options via GraphQL returned global “All Store Views” prices instead of website-scoped prices when Catalog Price Scope was set to Website. The Magento\BundleGraphQl\Model\Resolver\Links\Collection resolver now properly checks price scope and joins website-specific selection prices based on the requested store scope.

ACP2E-5057 - GitHub code contribution

Duplicate active cart created for customer due to concurrent customerCart GraphQL requests race condition

The system now ensures only one active cart is created per customer regardless of request concurrency. Previously, two concurrent customerCart GraphQL queries or POST /V1/carts/mine REST requests for the same authenticated customer with no active cart could result in duplicate active cart records in the database.

ACP2E-5077 - GitHub code contribution

[Cloud] Handled GraphQlNoSuchEntityException from QuoteGraphQl logged to exception.log, causing unbounded log growth

Fixed an issue where expected GraphQlNoSuchEntityException errors, such as those returned for an expired or invalid cart ID, were written to var/log/exception.log. These handled errors are still returned to the client as normal GraphQL error responses, but they no longer fill the exception log.

ACP2E-5122 - GitHub code contribution

GraphQL, Inventory / MSI

GraphQL: store ID passed as website ID in ProductStock::isProductAvailable causes ‘website … wasn’t found’ error

Previously, some storefronts could encounter a website wasn’t found error when checking product stock availability while adding items to the cart, due to the store ID being used where a website ID was required. This has been fixed so stock availability checks use the correct website context, preventing the error.

ACP2E-5242 - GitHub code contribution

GraphQL, Order

[Feature Request] Clear redundant in store pickup data when changing shipping carrier

When switching from in-store pickup to home delivery method, the pickup location and associated store address are removed from the cart. A valid shipping address must be provided before the order can be placed.

ACP2E-4973 - GitHub code contribution

GraphQL, Product

Missing key “model” in Wishlist value data

Fixed an issue where querying wishlist details through GraphQL returned an internal server error.
The wishlist query now returns successfully without the “Missing key model in Wishlist value data” error.

AC-8062 - GitHub issue - GitHub code contribution

Import and export

[Issue] Fix import iframe visibility

To ensure a clean and polished user interface within the Magento Admin panel, a template layout defect has been resolved where an internal background execution iframe became visible to store managers during data validations

AC-13250 - GitHub issue - GitHub code contribution

[Issue] fix: hardcode xxh128 hash algorithm in product import

To clean up internal subsystems and leverage modern system optimization baselines, the product import component has been streamlined to use a single permanent hash algorithm.

AC-16967 - GitHub issue - GitHub code contribution

Import button remains available after validation errors when Validation Strategy is set to “Stop on Error”

Fixed the issue where the Import button was still shown in the validation results after a failed data validation when the Validation Strategy was set to “Stop on Error”. Previously, the button appeared and could be clicked even though all records had failed validation, so the attempted import was immediately terminated.

ACP2E-5124 - GitHub code contribution

Install & Administer

[Cloud] Correction of Outdated Existing ISO Subdivision Codes

Updated region codes for 13 countries to match the ISO 3166-2 standard. Previously, some region codes did not match the standard, which could cause issues with third-party integrations and international compliance. New regions added for Belgium, Colombia, Spain, France, Italy, and Latvia. Region codes updated for Austria, Colombia, Costa Rica, Germany, Estonia, Spain, Finland, France, India, Iceland, and Latvia.

ACP2E-4495 - GitHub code contribution

Inventory / MSI

Product does not disappear when non-default stock/source is used and related (related or upsell or cross-sell) product is saved.

ACP2E-4741 - GitHub code contribution

Bundle Product stock status inconsistency

Previously, when a store admin manually updated the stock status of a bundle product from the Admin panel, the change was not reflected on the storefront for stores configured with multiple inventory sources. Customers would continue to see outdated stock status despite the admin’s changes.

This issue has been fixed. Bundle product stock status changes made in the Admin panel are now correctly propagated across all configured inventory sources and stock locations, ensuring customers always see the accurate stock availability on the storefront.

ACP2E-4866 - GitHub code contribution

NoSuchEntityException “store that was requested wasn’t found” thrown by GetStockIdForCurrentWebsite.php

Fixed the issue where visiting a storefront page with an invalid ?store= query parameter caused a NoSuchEntityException to be logged at CRITICAL level on every such request. Previously, the MSI stock data plugin passed the raw store code directly to StoreManager::getStore() without handling the case where the store did not exist, resulting in exception log clutter.

ACP2E-5003 - GitHub code contribution

Order

Cancel Order Observer not executed when scope is frontend or webapi_rest scope

Fixed an issue where canceling an order from the storefront or through the webapi_rest scope did not execute the cancel observer correctly. Gift card amounts are now restored to the customer’s store credit when the order is canceled.

AC-16353 - GitHub issue - GitHub code contribution

Cart Price Rule with limited usage is not applied when editing an existing order in Admin (e.g. “Uses per Customer = 1”)

Fixed an issue where Cart Price Rule discounts with usage limits were removed when editing an existing order in Admin. The original discount is now preserved when the order is edited, even after the usage limit has been reached.

AC-16671 - GitHub issue - GitHub code contribution

Min qty validation error in admin panel for bundle products

To improve the backend ordering experience and remove functional blocks when generating manual quotes, a validation error has been resolved where child item parameters were evaluated incorrectly during admin order creation.

AC-17193 - GitHub issue - GitHub code contribution

Bundle product child item qty inconsistency in Frontend Order View

Storefront order details page will now show the total ordered quantity for each bundle product option. Previously, the quantity column for each child option showed the parent bundle’s ordered quantity instead of the total quantity ordered per option.

ACP2E-4820 - GitHub code contribution

[ASUS] OrderMutex::execute() missing DeadlockException retry causes permanent ShipOrder/InvoiceOrder failure-

ShipOrder and InvoiceOrder operations now are successfully resolved in case of Deadlock.
Previously ShipOrder and InvoiceOrder operations fail permanently due to Deadlock

ACP2E-4913 - GitHub code contribution

Incorrect FPT/WEEE row-level calculation on parent configurable items during invoice generation

Invoice and credit memo grand totals for configurable products now correctly include the Fixed Product Tax amount. Previously, the FPT row-level amounts were not propagated to the parent configurable order item, causing the invoice and credit memo totals to be lower than the order grand total by the FPT amount.

ACP2E-4977 - GitHub code contribution

Product quantities modified on page refresh while creating order from admin

Resolved an issue where refreshing the page could cause the same SKU to be added multiple times.

ACP2E-5046 - GitHub code contribution

Concurrent async email cron workers send duplicate order confirmation emails for the same order

Resolved an issue where concurrent email workers could send duplicate order confirmation emails for the same order.

ACP2E-5059 - GitHub code contribution

[CLOUD] sales_clean_quotes cron job runs out of memory

Fixed the issue where the sales_clean_quotes cron job ran out of memory when cleaning a large number of expired quotes. Previously, the job retained every processed quote in memory and terminated with a fatal memory-exhaustion error before all expired quotes were removed.

ACP2E-5137 - GitHub code contribution

Order, Promotion

[Cloud] Issue adding multiple coupons to reorder

Resolved an issue where valid coupons were no longer applied to an order after an invalid coupon attempt failed. Now, if an invalid coupon is entered, any previously applied valid coupons will remain applied correctly.

ACP2E-4810

Fixed-amount category cart price rule discounts non-matching dynamic-bundle child when the rule matches the bundle parent

Fixed the issue where a fixed-amount cart price rule with a category condition incorrectly applied a discount to all children of a dynamic-price bundle when the rule matched only the bundle parent. Previously, bundle children that did not belong to the targeted category received a prorated share of the discount instead of zero.

ACP2E-5075 - GitHub code contribution

Payments

The config:show command doesn’t work with partial paths in newer versions

The config:show command now accepts partial configuration paths, such as payment, and displays the configuration values under that path. Previously, running php bin/magento config:show payment returned an error: The "payment" path doesn't exist. Verify and try again. instead of showing the correct values.

AC-13908 - GitHub issue - GitHub code contribution

Performance

setup:upgrade is changing indexer mode to save from schedule slowing it down immensely

Resolved a long-standing issue where running bin/magento setup:upgrade would inadvertently change indexer modes from “Save on Schedule” to “Save on Save” and unnecessarily drop and recreate database triggers, drastically reducing downtime and preventing performance bottlenecks during deployments on large catalogs.

AC-2423 - GitHub issue - GitHub code contribution

Valkey LAYOUT cache keys consume a lot of space for a big products catalog

Previously, each product generated its own LAYOUT cache entry per store view, causing excessive memory consumption in Redis/Valkey on large catalogs. Now, LAYOUT cache entries are shared across products with the same type, attribute set, and store view, bounding cache growth regardless of catalog size.

ACP2E-4908 - GitHub code contribution

Deadlock error on product query

Fixed an InnoDB deadlock on pages with a CatalogWidget Products List filtered by category, which occurred when the schedule-mode price indexer ran concurrently.

ACP2E-5052 - GitHub code contribution

[Quans] Adobe Commerce URL resolution query performance degradation

Fixed the issue where the GraphQL route query always rendered full CMS page content — including Page Builder widget execution and product collection loading — even when only URL routing metadata (relative_url, redirect_code, type) was requested. Previously, this caused unnecessary widget/product rendering and a significant increase in database queries per request for CMS pages containing Page Builder widgets.

ACP2E-5143 - GitHub code contribution

Admin Customer Edit performance tanks when Customer Account Sharing is set to Global

Fixed a performance issue on the Admin Customers Edit page where load time and HTTP response size grew quadratically when Share Customer Accounts was set to Global.

ACP2E-5164 - GitHub code contribution

Product

Add to Cart button within “Click for price” popup not working.

Fixed an issue where the Add to Cart button in the “Click for price” popup on the product listing page did not add the product to the cart.
Products can now be added to the cart successfully from the popup.

AC-11896 - GitHub issue - GitHub code contribution

BundleGraphQL Resolvers Create Separate Deferred Product Instances, Defeating Query Batching (N+1)

To drastically accelerate API response throughput and minimize server overhead, the GraphQL resolution layer has been optimized to enforce true query batching for bundle products, eliminating performance-draining N+1 database leaks.

AC-16647 - GitHub issue - GitHub code contribution

EAV Select and Multiselect attribute validation incorrectly rejects option labels with the value “0”

To improve data integrity and eliminate unexpected submission errors across customer and catalog forms, a validation flaw has been resolved where option labels containing the exact string value “0” were erroneously rejected by the EAV core framework

AC-16986 - GitHub issue - GitHub code contribution

Customizable option labels, and customizble option titles cannot be saved when a user’s role is limited to a certain scope

Fixed an issue where customizable option labels and titles were reverted when edited by an admin user with access limited to a specific store scope.
The updated labels and titles are now saved correctly for the selected scope.

AC-2684 - GitHub issue

Gift Card price is displayed incorrectly in wish list

Fixed an issue where the minimum configured Gift Card price was displayed as $0.00 in the wishlist.
The correct minimum Gift Card price is now displayed on both the My Wishlist page and the Wishlist sidebar widget.

AC-8037

Product Alert Consumer ignores store scoped system/stmp/disable

Product Alert Consumer now accounts for store scoped system/stmp/disable setting.

ACP2E-4870 - GitHub code contribution

Frontend compare page displaying incorrect Short Description label translations

Previously, on the Compare Products page, comparable attribute labels such as Short Description could display a translation from a different store view instead of the one for the current store. Now, the correct store-specific translations are displayed.

ACP2E-4929 - GitHub code contribution

Fixed an issue where products displayed in a Page Builder carousel set to sort by category position appeared in the wrong order on the storefront. Products are now shown in the order configured in Admin → Catalog → Categories → Products tab.

ACP2E-4980 - GitHub code contribution

Promotion Rules

Wrong discount calculation when one of applied cart price rules has Discount Qty Step value

Fixed an issue where the discount was calculated incorrectly when multiple cart price rules were applied and one rule had a Discount Qty Step (Buy X) value.
Discounts are now calculated correctly for all eligible quantities.

AC-12307 - GitHub code contribution

Promotion, Trageting

Fixed the issue where related products were not removed when a product’s attributes changed and it stopped matching a Target Rule. Previously, the mview indexer failed to delete stale rule-product associations and emitted a PHP Warning (Undefined array key) during reindexing.

ACP2E-4836

Returns

RMA - Add Return Comments API - Emails are triggered to Sender (Sales Representative) but not to Customer

Fixed an issue where return comment emails sent through the Returns API were sent to the sales representative but not to the customer.
Customers now receive an email notification when a return comment is added through the API with customer notification enabled.

AC-1138 - GitHub issue

Sales

[Order][REST] sales_order_items product_options column missing data when order placed from rest api V1/orders or V1/orders/create endpoints

Fixed an issue where order items created through the REST API did not include complete product_options data. Custom option labels and relevant option details are now correctly saved for orders created through the REST API.

AC-15187 - GitHub code contribution

Sales order grid permanently stuck in stale status when async grid indexing is enabled due to tied updated_at timestamps

Fixed an issue where the Sales Order Grid could remain stuck with a stale order status when asynchronous grid indexing was enabled. The order grid status now correctly updates to match the current order status, including cases where multiple order updates occur within the same second.

AC-17118 - GitHub code contribution

Security

[Issue] Update js.phtml DOM text reinterpreted as HTML

To strengthen the platform’s security baseline and minimize the risk of malicious input execution, the primary inline script template handling dynamic DOM updates has been refactored to eliminate cross-site scripting (XSS) injection vectors.

AC-12118 - GitHub issue - GitHub code contribution

Shipping

Issue with USPS REST API, incorrect rates for Maximum Package Weight

Fixed incorrect shipping estimates when an order splits into multiple packages (for example, above “Maximum Package Weight”). The carrier now requests a rate for each package and totals the amounts, consistent with the legacy Web Tools flow.

ACP2E-4813 - GitHub code contribution

Staging & Preview

Console errors in schedule update preview mode

Fixed the issue where the preview page for a staging update would fail to load correctly with JavaScript console errors when two updates shared the same start time. Previously, the signed preview URL used an incremented version ID that did not match the timestamp derived by the preview JavaScript, causing a signature mismatch and preventing the page from loading correctly in preview mode.

ACP2E-4828

Setup:upgrade takes too long on Magento_CatalogStaging data patch with high number of storeviews and categories

Fixed an issue where the CE-to-EE data migration patch did not correctly migrate scheduled category design updates and product special prices into staging updates. Categories with scheduled design dates produced empty staging updates due to an incorrect staging context approach. Products were silently skipped on PHP 8.1+ when NULL datetime values were present from a previous migration run. Also improved migration performance by loading only affected categories and products instead of iterating the full catalog.

ACP2E-5009

Content Staging Dashboard Catalog Price Rules grid displays duplicate data

The Catalog Price Rules grid now correctly displays the unique details for each Catalog Price Rule assigned to a staging update. Previously, when two or more Catalog Price Rules were assigned to the same staging update, the Catalog Price Rules grid on that update’s page in the Content Staging Dashboard displayed the correct number of rows, but every row incorrectly showed the same (last) rule’s data instead of each rule’s own details.

ACP2E-5097

Tax

base_wee_tax_applied_amount is not set for parent product

base_weee_tax_applied_amount value is now populated for the configurable product in database tables like sales_order_item, sales_invoice_item, sales_creditmemo_item, not only for its child

ACP2E-4922 - GitHub code contribution

Test Framework

[Issue] Update GraphQL tests Client.php for case-insensitive substring comparation

Fixed an issue where GraphQL API tests did not recognize Set-Cookie headers when the header used different letter casing. The tests now correctly handle Set-Cookie, set-cookie, and SET-COOKIE headers.

AC-15337 - GitHub issue - GitHub code contribution

Extremely slow WebAPI GraphQL functional tests

To optimize build delivery setups and accelerate continuous integration (CI) environments, a testing infrastructure bottleneck has been resolved by transitioning cache clearing behaviors from external system command calls to native in-process memory handling.

AC-15395 - GitHub issue - GitHub code contribution

UI Framework

Minicart cannot be used twice in the same page

To provide frontend developers with greater layout flexibility, a long-standing core UI limitation has been resolved, allowing multiple minicart blocks (e.g., one in the header and another in the footer) to exist and update independently on a single page layout.

AC-12579 - GitHub issue - GitHub code contribution

from-github

[Issue] fix(pagecache): recognize PATCH as valid HTTP method in Varnish VCL

Magento’s default Varnish VCL now recognizes PATCH as a valid HTTP method, so REST API partial-update requests (e.g. PATCH /rest/V1/products/:sku) are passed to the backend instead of being piped. This fixes PATCH calls failing or behaving incorrectly when Full Page Cache is set to Varnish.

AC-16954 - GitHub issue - GitHub code contribution

[Issue] Replace all gad_* parameters in VCL

To eliminate performance regressions caused by dynamic ad campaigns, the application’s caching layers have been updated to proactively ignore all Google Ads gad_* query strings. This prevents external campaign links from invalidating page caches and slowing down target pages

AC-16980 - GitHub issue - GitHub code contribution

[Issue] fix: update minimum PHP version check in bootstrap to 8.3

To prevent confusing runtime errors and improve developer installation troubleshooting, the native PHP environment validator inside the system bootstrap framework has been brought in line with the application’s actual core requirements.

AC-17312 - GitHub issue - GitHub code contribution

health_check.php returns 500 when igbinary is installed and default file cache is used (Varnish 503)

Fixed an issue where health_check.php returned HTTP 500 when igbinary was installed with the default file cache backend. The health check now accepts valid cache configurations without an explicit backend key, preventing Varnish from marking the backend as unhealthy and returning HTTP 503.

AC-17400 - GitHub issue - GitHub code contribution

[Issue] fix: update gzip types and remove IE6 workaround in nginx config

To improve page load speeds and optimize network asset delivery, the fallback server configuration has been modernized to better support modern storefront components and remove legacy tech overhead

AC-17498 - GitHub issue - GitHub code contribution

[Issue] Attempt to fix flaky graphql OrderStatusChangeDateTest.

To improve continuous integration (CI) reliability and reduce false-positive build failures, a race condition has been resolved in the WebAPI functional test suite. The GraphQL order status validation test (OrderStatusChangeDateTest) previously experienced intermittent failures due to subtle timing disparities between PHP memory and MySQL timestamps

AC-17959 - GitHub issue - GitHub code contribution

recommendation-more-help
commerce-operations-help-release