2.4.7-beta1

Magento Open Source 2.4.7-beta1 release notes

IMPORTANT

Beta releases may contain defects and are provided “AS IS” without warranty of any kind. Adobe will have no obligation to maintain, correct, update, change, modify or otherwise support (via Adobe Support Services or otherwise) the beta releases. Customers are advised to use caution and not to rely in any way on the correct functioning or performance of the beta releases and/or any accompanying documentation or materials. Accordingly, any use of the beta releases is entirely at the customer’s own risk.

Magento Open Source 2.4.7-beta1 includes over 140 quality fixes and enhancements. Core Composer dependencies and third-party libraries have been upgraded to the latest available versions. Support for Composer 2.5 has been added, while Composer 2.2.x remains supported.

This release boosts GraphQL coverage for custom attributes and enhanced GraphQL caching abilities.

NOTE

Adobe Commerce and Magento Open Source releases may contain backward-incompatible changes (BICs). To review backward-incompatible changes, see BIC reference. Major backward-incompatible issues are described in BIC highlights. Not all releases introduce major BICs.

Other release information

Although code for these features is bundled with releases of the Magento Open Source core code, several of these projects are also released independently. Bug fixes for these projects are documented in the separate, project-specific release information that is available in the documentation for each project.

Magento Open Source 2.4.7-beta1

Magento Open Source 2.4.7-beta1 has been tested against the following component versions:

  • Composer 2.5
  • Elasticsearch 8.5
  • MariaDB 10.6
  • MySQL 8.0
  • OpenSearch 2.5
  • PHP 8.2 and 8.1
  • RabbitMQ 3.11
  • Redis 7.0
  • Varnish 7.3

Our technology stack is built on PHP and MySQL. See System Requirements.

Magento Open Source 2.4.7-beta1 highlights

Look for the following highlights in this release.

Security enhancements

This release includes 13 security fix and platform security improvements.

No confirmed attacks related to these issues have occurred to date. However, certain vulnerabilities can potentially be exploited to access customer information or take over administrator sessions. Most of these issues require that an attacker first obtains access to the Admin. As a result, we remind you to take all necessary steps to protect your Admin, including but not limited to these efforts:

See Adobe Security Bulletin for the latest discussion of these fixed issues.

Additional security enhancements

Security improvements for this release improve compliance with the latest security best practices, including this change, which introduces a change in the default behavior of an existing REST endpoint:

Native rate limiting for payment information transmitted through REST and GraphQL APIs. Merchants can now configure rate limiting for the payment information transmitted using REST and GraphQL. This added layer of protection supports prevention of carding attacks and potentially decreases the volume of carding attacks that test many credit card numbers at once. See Rate limiting.

The default behavior of the isEmailAvailable GraphQL query and (V1/customers/isEmailAvailable) REST endpoint has changed. By default, the API now always returns true. Merchants can enable the original behavior, which is to return true if the email does not exist in the database and false if it exists.

Platform enhancements

Platform upgrades for this release improve compliance with the latest security best practices. Magento Open Source 2.4.7-beta1 introduces:

  • Composer 2.5.x. Compatibility with Composer 2.2.x remains.

  • Varnish cache 7.3 support. This release is compatible with the latest version of Varnish Cache 7.3. Compatibility remains with the 6.0.x and 7.2.x versions, but we recommended using Magento Open Source 2.4.7-beta1 only with Varnish Cache version 7.3 or version 6.0 LTS.

  • RabbitMQ 3.11 support. This release is compatible with the latest version of RabbitMQ 3.11. Compatibility remains with RabbitMQ 3.9, which is supported through August 2023, but we recommended using Magento Open Source 2.4.7-beta1 only with RabbitMQ 3.11.

Other upgrades and replacements

Outdated JavaScript libraries have been upgraded to their latest versions, including:

  • moment.js library (v2.29.4)
  • jQuery UI library (v1.13.2)
  • jQuery validation plugin library (v1.19.5)

GraphQL

This release adds enhanced GraphQL caching abilities and support to the GraphQL schema for customer EAV attributes, including:

  • Enhanced support for custom attributes. GraphQL custom attribute support has been enhanced by enriching API data so it now supports all attribute types. The GraphQL EAV attributes schema now supports extending customer attributes and customer address objects in the Admin and retrieving them using GraphQL. Specific areas of enhancement include:

    • extended/added custom attributes support to specific areas such as customer and customer address
    • added caching for custom attributes
    • enhanced existing custom attributes support for products
  • Enhanced GraphQL caching capabilities improve page load speed. Caching capability has been added to these queries, improving the speed of page load time for most PWA pages:

  • New GraphQL resolver cache types include:

    • CMS page. This caches the results of the CMS Page resolver.
    • CMS blocks. This caches the results returned from Magento\CmsGraphQl\Model\Resolver\Blocks::resolve.
  • The performance of the GraphQL parser has improved by reducing the number of times the parse method is called per request. It is now called once. Previously, the parser was called at least three times.

New query

customAttributeMetadataV2

Deprecated queries

Magento Open Source Extension metapackage

This release introduces the Magento Open Source Extension metapackage v1.0.0-beta1, which automatically bundles the Payment Services extension with this core release. The version of this extension that is included in this metapackage is installed when composer update is run, simplifying the process of upgrading the extension when upgrading to the latest core release. This extension maintains an independent release schedule.

Future versions of this extension metapackage will contain additional extensions.

Page Builder

Page Builder v.1.7.4 is compatible with Magento Open Source 2.4.7-beta1.

PWA Studio

PWA Studio v.13.2.x is compatible with Magento Open Source 2.4.7-beta1. It includes multiple enhancements to improve accessibility. For information about bug fixes, see PWA Studio releases. See Version compatibility for a list of PWA Studio versions and their compatible Magento Open Source core versions.

Fixed issues

We have fixed hundreds of issues in the Magento Open Source 2.4.7-beta1 core code. A subset of the fixed issues included in this release is described below.

Installation, upgrade, deployment

  • The bin/magento setup:upgrade command no longer fails with this type of MySQL memory limit-related error: PHP Fatal error: Allowed memory size of 4294967296 bytes exhausted (tried to allocate 20480 bytes). Multi-select attribute migration has been optimized to consume less memory during setup:upgrade.
  • Generating a database backup now works as expected from both the Admin and command line. Previously, Magento Open Source threw this error: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'delimiter' at line 1, query was: delimiter ;;.
  • Running setup:config:set without specifying the --lock-db-prefix parameter no longer erases the current value from the env.php file.
  • Varnish configuration has been updated to prevent guest users from accessing cached content related to other customer groups.
  • bin/magento setup:upgrade now completes successfully when installing a new module that installs both tables and associated mview indexers.
  • bin/magento setup:upgrade now displays a more informative error message when a message queue topic does not include a topic name. GitHub-34246
  • bin/magento setup:upgrade now displays a more informative error message when merged XML files are invalid. The error message now includes the filename.

Bundle products

  • Bundle products are now successfully imported without duplicating SKUs in product options. Previously, Magento Open Source created multiple duplicate SKUs in product options when you imported bundle products with duplicate entries.
  • Bundle product price is now calculated properly when one of the products in the bundle is out of stock. Previously, if a product that was part of the bundle were out of stock, it was removed from the price calculation.
  • Bundle products are now displayed as out of stock when the last of their required child products are bought. Previously, bundle products were displayed as in-stock on the storefront when their simple products were out of stock.
  • Performance issues when adding bundle products with non-required options to the cart using the addBundleProductsToCart mutation have been resolved.
  • The categoryList query now returns all bundle options as expected when the Show out-of-stock products configuration setting is enabled. Previously, out-of-stock options were not included in the query response.
  • Bundle products created with POST V1/products now succeed when catalog price scope is set to website. Previously, an integrity constraint violation occurred. GitHub-35595

Cache

  • Page cache is now cleared as expected for a parent product when one of its child products has been saved from the Admin. A plugin check has been introduced to reach cache invalidation for configurable variants, similar to other product types, irrespective of indexer state (scheduled or real time). Previously, prices were not updated properly on the storefront after a configurable variation was updated from the Admin.
  • Added a caching mechanism for AWS credentials. A credentials provider now uses the Magento cache to cache credentials retrieved from AWS for EC2 configuration.
  • The plugin whose purpose is to add the configurable cache tag when a simple product associated with a configurable product is saved now works as expected. All relevant configurable cache tags are removed as expected when a simple product is updated by POST V1/products. Previously, not all prices were updated on the storefront, and caches had to be manually cleared. GitHub-36726

Cart and checkout

  • The cart tax and shipping estimator now accurately reflects the default destination configuration. Previously, when you configured default tax destination calculation settings and specified State/Region and ZIP, only the ZIP value was shown in the cart under Estimate Tax and Shipping. This resulted from Magento Open Source setting the region ID to undefined before invoking the conditional statement that set the default region ID from the Admin.
  • Magento Open Source no longer throws this error during checkout when persistent shopping cart is enabled: Invalid state change requested. Previously, when this error was thrown, multiple orders with the same quote_id were occasionally created.
  • The mini cart now displays bundle product prices that reflect cart tax configuration settings. Previously, the mini cart always included taxes in the prices of bundle products.
  • The shipping estimate provided from the cart page is now accurate. collectShippingRates is now set only once. Previously, the shipping estimate was duplicated. GitHub-36648
  • The cart query no longer returns an error when a product in the specified cart is out of stock. Previously, shoppers using this query to make a purchase could not complete their purchase when an item was out of stock, and their checkout page was blank.
  • Guest API requests to POST V1/default/V1/guest-carts/<cartId>/shipping-information no longer return a cancel status if the page reloads during login in a mobile environment. Previously, Magento Open Source threw a 500 error and logged this exception: TypeError: Argument 2 passed to Magento\CustomerCustomAttributes\Model\Plugin\ProcessCustomerShippingAddressCustomAttributes::beforeSaveAddressInformation() must be of the type string, null given.
  • Free shipping eligibility is now calculated as expected when the Subtotal (Excl. Tax) condition for cart rules is applied. GitHub-36760
  • The cart query now returns the correct tier pricing for a product. GitHub-29655
  • Informative error messages have been added to the checkout page to guide shoppers when application of a coupon on the shipping page conflicts with the selected shipping method. Previously, a message told shoppers to return to the previous page.
  • The authentication popup is now initialized only when it is needed instead of whenever guest checkout is enabled. It is now initialized when the guest shopper tries to proceed to checkout, and guest checkout is disabled. GitHub-30672

Cart price rule

  • Cart price rules are now applied as expected when a cart price rule related to one shipping method is configured for the store, and this shipping method is changed to another during check out. Previously, the applied_rule_ids value was never changed in the sales_order_item table, and the cart price rule was not applied to the order.
  • Coupons are now applied successfully to an order when a shopper applies the coupon after selecting the flat rate shipping method where a cart price rule with shipping method set as a condition applies. Previously, the cart page displayed the Coupon is Not valid error, and the coupon was not applied. GitHub-34866

Catalog

  • Magento Open Source no longer displays a warning message when you save a product that was created with custom options after deleting its image.
  • Product thumbnail images are now displayed as expected in the product stock alert email that is sent when a product is back in stock. Previously, this image was not displayed in the alert email
  • The product count in the category tree (Admin Catalog > Category) is now accurate. Previously, the category products count could not be retrieved from the catalog_category_product_index table. The typo that triggered this bug has been fixed. GitHub-35417
  • The main product image on the product details page no longer visibly shifts downward during page load when product_image_white_borders in theme view.xml is disabled. Previously, the product image visibly shifted downward during page load due to incorrect height settings in Fotorama JS.
  • Customers are now notified about drops in product price when the customer is subscribed to price drop alerts. Previously, price-drop notifications were not always sent due to application-level caching.
  • Server-side validation has been added to the process of creating product attributes through the web API. You cannot enable the Use in Layered Navigation Catalog field when the Catalog Input Type for Store Owner field value is Text Field, Text Area, Text Editor, Date, or Date and Time. Previously, products were omitted from categories and search results.
  • The category page now re-loads with the correct pagination after a shopper opens the page, changes the pagination, navigates to a product page, and then returns to the category page. GitHub-36563
  • Out-of-stock simple products that are options for a configurable product are now displayed as disabled on the storefront when Display Out of Stock Products is set to Yes. Previously, all options were displayed as available, despite their status and real availability.
  • Updating the website scope attribute in a specific store view no longer overrides the value of that attribute in global scope. Previously, importing product prices when multiple rows are available with the same SKU and store_view_code resulted in inaccurate prices for the default and All Store view scopes.
  • Merchants can now add a GIF image to a product’s image gallery from the Admin. Previously, Magento Open Source displayed this error: imagecolorsforindex(): Argument #2 ($color) is out of range.
  • Checks have been added to handle errors that result from undefined array keys. Previously, an error occurred during declarative schema whitelist generation.
  • Magento Open Source now returns a valid result for the custom date 01/01/1970. Previously, the custom attribute returned this error: Invalid input datetime format of value '1/01/1970. GitHub-37274
  • routes queries that use fragments now return category information as expected. Previously, an internal server error occurred on the category page. GitHub-35906
  • Issues with the cataloginventory_stock partial re-indexing process have been resolved, and indexer performance has improved. Previously, stock and product categories were not accurately updated.
  • Magento Open Source now generates a 301 redirect for a product when the category it belongs to has been moved to a new parent. GitHub-37039

Catalog rules

  • Catalog rules are now applied as expected in a multi-website environment.

Coupons

  • Shoppers can now use two separate auto-generated coupon codes that have been generated by the same cart price rule. The Uses per Coupon field is now enabled when the coupon type selected to Auto (similar for coupon type =Specific Coupon) . This in turn enables the shopper to apply multiple coupon codes to the same cart price if the codes are different.
  • A shopper’s single-use coupon value is now restored as expected when the order to which it was applied is canceled.
  • The GET V1/coupons/<couponId> endpoint now returns the full expected response for manually created coupons just as it does for autogenerated coupons. Previously, some fields were omitted (for example, usage_limit, usage_per_customer, and created_at).

cron

  • Admin users can now view which task the bin/magento cron:run process is currently performing. The title of the currently running process now lists the group and job names. GitHub-34321

Customer

  • Magento Open Source now displays the Date of Birth, Tax/VAT Number, Gender, Telephone, Company, and Fax fields on the edit customer page based on configuration settings. GitHub-36196

Email

  • Company Admin details are now saved as expected, and admins are correctly redirected, when Assign Company Admin emails contain a CMS Block URL variable.
  • Customer email addresses can now include diacritics. Previously, front-end validation prohibited the creation of a user with diacritics in their email address. GitHub-12075
  • Stock and price alert emails are now translated according to the language configured for the website default store view. Previously, these emails were not translated.
  • POST V1/order/notify-orders-are-ready-for-pickup now sends an email alerting customers that an order is ready for pickup only when the order is ready. Email is now triggered only when the request has been fulfilled without an exception.

Frameworks

  • Mutex has been implemented for orders to prevent race conditions during update by concurrent requests. Previously, concurrent requests (race conditions) for order cancellations caused duplicated entries in the inventory_reservation table.
  • The populateWithArray function now transforms object properties to snake case correctly, making it compatible with the AbstractModel getters and setters. Previously, the snake case formatting was incorrect when the data attribute name contained several uppercase letters in a row.
  • The auto increment value in the catalog_product_entity_varchar table now increments correctly after a product is saved. Previously, this value increased by ten.
  • Magento Open Source no longer throws this file system exception when you try to flush the JavaScript/CSS cache: No such file or directory.
  • The value of value_id in customer_entity_int is now incremented correctly. An update query is executed instead of insert on duplicate key update when updating an entity that incorporates these attributes. As a result, the auto-increment columns used within the EAV model now grow in a linear fashion. Previously, the auto-increment process for columns skipped values due to failed insert queries. GitHub-28387
  • Removed unnecessary white space from id attributes that do not require it. (This bug was introduced by a Magento Open Source 2.4.6 code change.)
  • Store codes no longer appear in the store URL when the store is in single-store mode. GitHub-36831
  • Minor updates have been made to around plugins. GitHub-31443
  • The swatches Helper has been refactored to remove misleading import aliases. GitHub-31373
  • Admin users can now delete or rename a sitemap.xml file as expected. Previously, an admin user could delete the file from the Admin, but it remained in the file system. GitHub-37468
  • Coupons are no longer flagged as used when payment fails for the order to which they have been applied. Queue messages are now processed in the order in which they are published when the consumer is started. Previously, the first message was pulled from the queue to simply check whether messages were queued, and was rejected afterward, which caused the first message to be processed last.
  • Magento Open Source no longer throws an exception in the log file when a user tries to print a shipping label. Previously, if an extension modifies response headers that contain an attachment, the system threw an exception in the log file.
  • Support for more HTML classes has been added to elements.xsd. GitHub-36891

General fixes

  • Errors no longer occur during requests for an RSS feed for categories when RSS Feed Top Level Category is enabled. Previously, browsing the RSS feed category page resulted in Elasticsearch CRITICAL errors in log files when RSS Feed Top Level Category was enabled.
  • The correct value is now saved for gws_store_groups when role scope is changed during user role creation. Previously, when role scope was selected as All, the gws_store_groups value was saved as null during user creation but not during role editing. Also, if role scope was selected as Custom, then the gws_store_groups value was always saved as null.
  • The reset password page can now be accessed by clicking the Admin reset password link on the Admin login page when the Add Store Code to Urls setting is enabled. The Admin reset password link previously opened the login page or 404 page.
  • The date range in the Admin statistics dashboard is now calculated based on the time zone that is set in configuration settings, then converted to UTC in order to fetch data from the database.
  • The CMS hierarchy filter works as expected after you filter a store view then click Save on Admin Content > Hierarchy. Previously, clicking Save refreshed the page, but the context was lost, and the selected store view was no longer displayed.
  • Clicking the Send invitation button (Admin Marketing > Private sales > Invitation) now submits a POST request along with the form key and sends the invitation successfully. Previously, when you clicked this button, neither the HTTP POST method nor the form key were present.
  • Zero-byte files can now be successfully copied to remote storage with AWS S3.
  • Admin users can now add a new customer address from the Admin when that customer has been created for another website whose store ID does not match the website ID. Previously, Magento Open Source displayed this pop-up message: Something went wrong. GitHub-36582
  • The CMS block editor page now displays the correct widget block_id value. GitHub-29644

Gift cards and wrapping

  • Emulation now starts during send() calls once the emulation has completed during the getInfoBlockHtml() call, and no error are logged. Previously, the system.log file was flooded with this error: main.ERROR: Environment emulation nesting is not allowed. GitHub-35603
  • You can now use the updateCartItems mutation to update a gift card in a shopping cart. Previously, only the card amount could be updated in the cart by this mutation.
  • The addProductsToCart query now successfully adds a gift card to a cart. Previously, this query expected the gift card recipient name, but the sender name was instead returned. Magento Open Source threw this error: Please specify a recipient name. GitHub-36665

Google ReCAPTCHA

  • The Google reCAPTCHA in the checkout workflow now works as expected for checks, money orders, and custom payment methods.
  • Magento Open Source forms can no longer be submitted before the Google ReCAPTCHA checkbox loads.
  • The reCAPTCHA widget now precedes the Place Order button on the payment page. Previously, the widget was displayed at the top of the page.

GraphQL

  • Product attributes of type DateTime now map to the FilterRangeTypeInput filter in products queries. Previously, these attributes were mapped to FilterMatchTypeInput. As a result of this change, queries filtering on DateTime attributes require from and to values instead of match values.
  • The customer mutation now returns only customer reviews related to a specific store view as expected when filtered by store ID.
  • The categories query no longer returns an error when the items.redirect_code response value contains a null value. GitHub-36675
  • The changeCustomerPassword mutation now triggers email as expected after successfully resetting a password.
  • urlResolver and route queries now return a result when the Target Path of URL rewrite is an absolute URL. Previously, the urlResolver query returned NULL when you used it to retrieve redirect data.
  • The products query now returns correct labels. GitHub-29635
  • The categoryList query now returns a populated product section of the options block for bundle products’ child products as expected. Previously, no information about bundle product child products was returned.
  • The route query now returns routes for categories and products as expected without an internal server error. GitHub-36544
  • The products query now fetches url_key values when multiple categories are selected.
  • product queries now return aggregations only for products that are assigned to the specified shared catalog.
  • Transaction names have been added to New Relic GraphQL transactions. GitHub-36874
  • The OptionValueProvider class get() method now returns an attribute option value based on the given option_id as expected. Previously, it returned an error. GitHub-35910
  • The searchProducts query now returns all available aggregations (filters) and their correctly translated labels. Previously, price and category aggregation labels were not translated as expected. GitHub-36140
  • You can now use a fragment ProductCard when querying related_products, upsell_products, and crossell_products on ProductInterface. GitHub-29769
  • The products query now returns related, upsell, and cross-sell products in the order in which they were saved. GitHub-36461
  • GraphQL queries now return related products data sorted by position. GitHub-33010
  • category_url_path has been added to ProductAttributeFilterInput, which supports requesting all products for a category in a single query. GitHub-32460
  • Corrected an error in which the method that sets the current store in a GraphQL mutation executed before the method that handles validation. GitHub-31336

Image

  • The Admin favicon icon upload form now supports .ico file types. GitHub-34858

Import/export

  • The product import process is no longer interrupted when product images are missing. Previously, when a product image was missing during the import of a third-party service using a CSV file, Magento Open Source displayed this error: Maximum error count has been reached or a system error is occurred!.
  • The performance of customer export from the Customer grid has been improved in deployments where B2B is enabled.
  • The product import process no longer throws a validation error when an attribute value in configurable_variations column contains a comma.
  • Decoding has been excluded from the export process. The CSV export file text remain unchanged after import. As a result, the description does not change after re-import. Previously, HTML tags were removed in the Page Builder editor after product export and import.
  • Non-default configurations (website or store scope) that are added as environment variables no longer break the app:config:import process with a recursion error.
  • Catalog search and price indexers in Update on Save mode are no longer invalidated after import. Previously, the Elasticsearch Indexer document version changed version when new and existing products were imported.
  • Product reports are now exported to the var directory. Previously, these reports were exported to the document root directory, which is a read-only directory in cloud instances.
  • Empty multi-select customer address fields no longer interrupt or halt the export process.

Index

  • The performance of the Catalog Rule Product indexer in deployments where rules are not assigned to all websites has been improved.
  • Creating a custom product type when indexers are set to Update on schedule no longer causes the index update cron task to fail. GitHub-36471
  • bin/magento indexer:reindex customer_grid no longer fails with a MySQL error when the customer grid includes newly created custom customer attributes. GitHub-36233
  • Changing indexer mode for multiple indexers (that is, a mass action indexer mode change) now changes an indexer’s mode only when the current mode differs from the one being applied. This improves performance by preventing unnecessary trips to the database. GitHub-36823
  • Indexing products with many attribute options has been improved. GitHub-36386

Infrastructure

  • Magento Open Source no longer includes the full path to the root of the server in the error message it displays when a malformed HTTP request has been sent to the server. Only strings are now passed to the explode method as a second argument.
  • restricted_classes.php has replaced Zend_Validate_File_Upload. Previously, the validator crashed during upload of an import file larger than the value configured in php.ini . GitHub-37281
  • The email template engine can now correctly process certain nested directives (for example, {{if}}{{depend}}...{{/depend}}{{/if}}). GitHub-36438
  • product queries with aggregation data now return the correct label values for Boolean type product attributes. GitHub-29123
  • Added Ukrainian regions to the directory_country_region table. GitHub-35187
  • CSS files are no longer corrupted when merged when var/tmp and pub/static are on different filesystems and CSS Merging Enabled is enabled. Temporary files have been created in the same static directory as the target file to ensure that both files are on the same filesystem. As a result, the call to rename it is atomic. GitHub-29172
  • Call to a member function getId() no longer triggers an exception.
  • Type checks are now enforced for array type in the design theme config processor. GitHub-34440

Logging

  • Admin users can now see the logs for bulk actions that are created by integrations in the Bulk Actions Log section of the Admin.

Login

  • Resetting a password in one browser and subsequently logging in through a different browser no longer results in an exception. GitHub-36447
  • Customers are now redirected to the login page after activating an account as expected. Previously, customers were automatically logged in.

Orders

  • Shoppers can no longer order a product using a custom price when an order is first generated from the Admin using the one-off custom price. Previously, if an order contained an item with custom prices, this custom price was applied for other orders placed with the re-order functionality.
  • Shoppers can no longer save incorrect order statuses on the order page. Order status is no longer changed from Complete to Processing when an item is shipped. Previously, Magento Open Source did not check current order status before saving order status after a shopper entered a comment. GitHub-36562
  • The sales order grid is now asynchronously synced with all orders as expected. GitHub-36562
  • The filter-by-purchase-date functionality in the customer orders section of the orders page now works as expected. Previously, a JavaScript error occurred when the timezone conversion logic threw an error when the same time zone was provided to the method.
  • The Magento Open Source dashboard now displays the correct orders statistics on first load. Previously, the dashboard displayed incorrect order information, but displayed the correct information once the time period was updated.
  • Admin users are now redirected as expected to the order page after selecting a store view during new order creation from the Admin.
  • The Orders REST API now returns information on both the configurable and simple products in the order regardless of the stock status of the simple products. Admin users can place orders now only if the selected items (products) are in stock or salable. Previously, this API returned information only about the products that were in stock.
  • The credit memo page no longer crashes when free shipping is enabled when shipping price includes tax, and tax calculations are applied after discounts. Previously, Magento Open Source threw a Division by zero exception. GitHub-36800
  • Using the rest/V1/orders/{id}/comments endpoint to post a comment about an order without providing order status no longer affects the display of the order. Previously, order status was logged as NULL in the sales_order and sales_order_grid tables, and neither the My Orders page or the Admin order grid displayed the order. GitHub-34180

Page Builder

  • Adding a product to a shopping cart from the Page Builder carousel no longer duplicates item quantity from pages with two different widgets displaying the same products.
  • Page Builder no longer adds the tabindex HTML attribute to hyperlink tags a when you edit a hyperlink then save a template.
  • The products widget and Page Builder preview now handle HTML special characters properly. Previously, the product widget did not correctly display SKUs that contained the & character.
  • Page Builder text element content is now updated as expected when you select and update the complete content block in preview mode.
  • Copying and pasting text from one Page Builder text editor to another now works as expected. Previously, the page into which you tried to paste text could not saved, and Magento Open Source displayed this console error: [ERROR] Page Builder was rendering for 5 seconds without releasing locks..
  • Page Builder column-block content type that was created in older versions of Page Builder is now displayed correctly.
  • Filtering for the product metadata description during product creation from the Admin has been improved. Previously, if Page Builder were enabled, the product metadata description was generated based on the default {{name}} {{description}} mask. The default product meta description mask is now composed of {{name}}. GitHub-36107
  • Adding a dynamic block with no content no longer triggers an error.
  • Issues with the display of columns in Page Builder content have been resolved. Previously, column-line content type content was not rendered. GitHub-3949

Payment

  • The Vault payment method option no longer appears in the Admin checkout workflow when the shopper does not have a vault token. GitHub-36273
  • The Venmo button now can be hidden when the PayPal buttons are enabled. Previously, the Venmo button could not be removed from the cart, mini cart, product detail, or the checkout pages.
  • Shoppers are now redirected to the success page after successfully completing a Paypal Payflow link payment. GitHub-36520

Braintree

  • The Braintree Vault payment method option is no longer automatically deselected in the checkout workflow when a shopper updates their billing address. Previously, the payment method was deselected when the shopper deselected the My billing and shipping address are the same button.
  • Resolved issues with checking out with PayPal through Braintree after upgrading from Adobe Commerce 2.4.5-p2. GitHub-37242
  • Phone numbers are now rendered as expected with addresses in the Google Pay modal popup shipping address fields. Previously, phone numbers were missing.
  • Orders are now placed successfully with Braintree when the Braintree response includes an empty value for threeDSecureInfo/eciFlag. Previously, a PHP error occurred during checkout when this value was empty.
  • Magento Open Source no longer throws an error when a shopper applies a coupon on the order review page when checking out with Google Pay from the mini cart. Previously, shoppers were redirected to a 404 page.
  • Shoppers can now complete checkout using Braintree Payments and Magento Open Source 2.4.6 with invisible ReCAPTCHA v2 or v3. GitHub-37241
  • Shoppers can no longer click the PayPal button to purchase a configurable product without first selecting required options. Previously, shoppers could click the PayPal button and were subsequently redirected back to the product page with an error:
  • The PayPal button is now displayed as expected on the cart and mini cart pages. Previously, this button was not displayed on the cart page and duplicated on the mini cart page.
  • Partially invoiced orders are now captured as expected in the correct account in deployments where merchants have two different merchant account IDs for the same currency in their Braintree account.
  • Magento Open Source no longer throws an error when creating a second partial invoice for an order paid for by Braintree when the Enable Vault for Card Payments is enabled. Previously, when a merchant tried to create a second invoice, Magento Open Source threw this error: Your payment could not be taken. Please try again or use a different payment method. Payment method token is invalid.
  • Braintree payment information is now saved per store, and shoppers now see only card information that has been saved in the store in which they they are shopping. Previously, shoppers could see stored card information from all stores during checkout. GitHub-34253

Promotion

  • The effects of the Fixed amount discount for whole cart price rule, when applied with the Apply to shipping amount rule, is now proportionally distributed as expected between products and shipping amounts. Previously, discount calculations were incorrect.
  • The Discard Subsequent Rules setting is now applied as expected. When this setting is enabled, other rules with low priority can be applied to a different product only. GitHub-35707

Reports

  • The Orders report (REPORTS > Sales > Orders) now includes correct order values when orders are generated by stores that use non-default currencies. Previously, this report included incorrect values. GitHub-36742
  • Misleading information in the sales order report form has been revised for clarity.
  • Admin users can now search for records with emails that contain + (plus) signs from the Abandoned Carts Report page. GitHub-36560

Search

  • Search results now display relevant results based on search weight of the attributes as expected.
  • Informative text under the Search Weight attribute’s Storefront Properties input field on Admin Stores > Attributes > Product now describes possible values. GitHub-36646

Shipping

  • The Shipping Policy text box is now visible in the Admin Store View scope when Apply custom Shipping Policy is enabled and a custom shipping policy is available. GitHub-36425
  • The cart query now returns a selected_shipping_method value that matches one of the available_shipping_methods carrier and method codes. Previously, when one of the selected shipping methods contained an underscore, these carrier/method codes were mismatched. GitHub-36606
  • The setShippingAddressesOnCart mutation no longer throws an error when the second value in the street array is null. Previously, this exception was thrown: The address failed to save. Verify the address and try again. GitHub-35160

Tax

  • You can now edit the value of Tax Rate Country and Region from the Tax Rule edit page as expected. Previously, edits made from that page were not saved.
  • The tax amount in the cart estimation area is now refreshed as expected when the shipping method is updated. Previously, the tax rate was not updated after a shopper changed country during check out.
  • The tax class value for newly created simple products is now set to the parent product’s value when creating new variations of an existing configurable product in Store View scope. Previously, this value was set to none. As a result, no tax was added to these products in the cart, and customers were undercharged tax. GitHub-37180

Test

  • Performance issues with large arrays in TableNameSniff have been resolved.
  • CollectionTest::testGetDateRangeFirstPart() now accounts for Daylight Savings time.

UI

  • The customer registration form now loads as expected when it includes multi-select customer attributes. Previously, Magento Open Source threw this exception: [2023-03-05T05:57:40.032602+00:00] report.CRITICAL: Exception: Deprecated Functionality: explode(): Passing null to parameter #2 ($string) of type string is deprecated in /magento2ee/app/code/Magento/CustomAttributeManagement/Block/Form/Renderer/Multiselect.php on line 53 in /lib/internal/Magento/Framework/App/ErrorHandler.php:62. GitHub-37189
  • Welcome messages containing single quotation marks are now rendered correctly on the storefront with no console errors. Previously, if a welcome message contained a single quotation mark, then the welcome message was not loaded during storefront rendering. Magento Open Source also displayed console errors.
  • Magento Open Source no longer throws an error when you try to quickly change the view between comment history and Returns in the Admin order page. Previously, Magento Open Source displayed this generic error: A technical problem with the server created an error.
  • Admin users with privileges restricted to one website can now update website-specific product attributes set to an all stores view scope.
  • The magnifier widget now loads as expected on the product page.
  • Multi-line customizable options are now rendered properly in invoice, shipment, and credit memo PDF documents. Previously, multi-line text was preceded by an unexpected page break, and if the text exceeded the page, text was truncated.
  • Admin users can now add a new customer address from the Admin when that customer has been created for another website whose store ID does not match the website ID. Previously, Magento Open Source displayed this pop-up message: Something went wrong. GitHub-36582
  • Company Admin details are now saved as expected, and admins are correctly redirected, when Assign Company Admin emails contain a CMS Block URL variable.
  • Error messages associated with submitting comments on the order details page are now more informative. Previously, when a shopper clicked Submit comment without either changing order status or entering text into the comment area, Magento Open Source displayed this message: The comment is missing. Enter and try again.
  • The calendar icon is now displayed as expected in the date range fields on Admin Marketing > Cart Price Rules after a date is selected for one field. Previously, after you selected a date for one field, the calendar icon was no longer displayed on other fields, and Magento Open Source displayed placeholder text. GitHub-36499
  • Customer registration forms that include multi-select fields now load successfully. Previously, this form did not load when it contained multi-select fields, and the following error was triggered: report.CRITICAL: Exception: Deprecated Functionality: explode(): Passing null to parameter #2 ($string) of type string is deprecated in /magento2ee/app/code/Magento/CustomAttributeManagement/Block/Form/Renderer/Multiselect.php on line 53 in /lib/internal/Magento/Framework/App/ErrorHandler.php:62. GitHub-37189
  • Clicking on a video thumbnail in the product gallery full screen mode now displays the video as expected. Previously, the video was not displayed, and the browser console displayed a JavaScript error. GitHub-36456
  • Added a variable to the copyright line that is automatically updated each year. GitHub-36776
  • The image slider on the product page now works as expected in mobile view. Previously, only the first image was successfully displayed. GitHub-37232

URL rewrites

  • Category URL rewrites are now generated for all store views when a new category is imported from a CSV file.
  • Product URL suffix and Category URL suffix configurations now match the suffixes in the url_rewrite table. Previously, race conditions when updating URL suffix configurations occurred, and the configured URL suffixes and the url_rewrite table did not match.
  • Magento Open Source now renders the category tree at all levels when creating category URL rewrites. Previously, only the first three levels of categories were displayed. GitHub-36973
  • Category URL rewrites are now present in the CSV file during import of a new category.
  • Multi-store CMS pages without URL rewrites are now forwarded as expected. Previously, requested multi-store CMS pages without URL rewrites were redirected to the store home page, but the original CMS pages were not directed.

Web API framework

  • Customers created using the Bulk API now receive customer registration emails in the language that is configured in their assigned website. Previously, all emails were sent to the default locale, not the locale of the website to which the customer is assigned.
  • The POST V1/guest-carts call no longer submits guest orders when Allow Guest Checkout is disabled.
  • Magento Open Source now successfully returns the content attribute (base64 image code) in GET V1/products/sku/media product media API responses. The content attribute did not previously appear in the response.

Known issues

The following known issues will be fixed in Magento Open Source 2.4.7-beta2:

Issue: The UPS XML API was deprecated by UPS on June 5, 2023, affecting merchants in these ways:

  • Current customers (that is, merchants who have already generated their UPS access keys) will not be affected until June 2024.

  • Merchants who want to generate new access keys to use the Adobe Commerce out-of-the-box UPS integration cannot currently generate new keys.

Issue: Clicking the Show password button on the storefront login page does not display the password as expected.

Issue: Prices for fixed bundle products do not include assigned special prices as expected.

System requirements

Our technology stack is built on PHP and MySQL. For more information, see System Requirements.

Installation and upgrade instructions

You can install Magento Open Source 2.4.7-beta1 using Composer.

On this page