Magento Open Source 2.3.4 Release Notes
Magento Open Source 2.3.4 offers significant platform upgrades, substantial security changes, and PSD2-compliant core payment methods.
This release includes over 220 functional fixes to the core product and over 30 security enhancements. It includes resolution of over 275 contributions by our community members. These community contributions range from minor clean-up of core code to significant enhancements to Inventory Management and GraphQL.
Security-only patch available
Merchants can now install time-sensitive security fixes without applying the hundreds of functional fixes and enhancements that a full quarterly release (for example, Magento 2.3.4) provides. Patch 2.3.3.1 (Composer package 2.3.3-p1) is a security-only patch that provides fixes for vulnerabilities that have been identified in our previous quarterly release, Magento 2.3.3. All hot fixes that were applied to the 2.3.3 release are included in this security-only patch. (A hot fix provides a fix to a released version of Magento that addresses a specific problem or bug.) For general information about security-only patches, see the Magento DevBlog post Introducing the New Security-only Patch Release. For instructions on downloading and applying security-only patches (including patch 2.3.3-p1), see Install Magento using Composer. Security-only patches include only security bug fixes, not the additional security enhancements that are included in the full patch.
With this quarterly release, we’ve changed how we describe these security issues. Individual issues are no longer described in the Magento Security Center. Instead, these issues are documented in an Adobe Security bulletin. Please see Security updates available for Magento (APSB20-02).
Highlights
Look for the following highlights in this release:
Substantial security enhancements
This release includes the following security enhancements:
Over 30 security enhancements that help close cross-site scripting (XSS) and remote code execution (RCE) vulnerabilities
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: IP whitelisting, two-factor authentication, use of a VPN, the use of a unique location rather than /admin
, and good password hygiene. See Adobe Security Bulletin for a discussion of these fixed issues. All known exploitable security issues fixed in this release (2.3.4) have been ported to 2.2.11, 1.14.4.4, and 1.9.4.4, as appropriate.
Security enhancements and fixes to core code
Additional security enhancements include:
-
Removal of custom layout updates and the deprecation of layout updates to remove the opportunity for Remote Code Execution (RCE). The Custom Layout Update field on the CMS Page Edit, Category Edit, and Product Edit pages has now been converted to a selector. You can no longer specify an entity-specific layout update with text but instead must create a physical file that contains the layout updates and select it for use. The name of the file containing an update must follow the conventions described here.
-
Redesigned content template features so that only whitelisted variables can be added to templates. This avoids the situation where administrator-defined templates such as email, newsletters, and CMS content can include variables and directives that can directly call PHP functions on objects. See Migrating custom email templates and Email templates.
Starting with the release of Magento Commerce 2.3.2, Magento will assign and publish indexed Common Vulnerabilities and Exposures (CVE) numbers with each security bug reported to us by external parties. This allows users of Magento Commerce to more easily identify unaddressed vulnerabilities in their deployment.
Platform upgrades
The following platform upgrades help enhance website security and PCI compliance.
-
Enhancements to the message queue framework. Magento now supports the latest release of RabbitMQ v3.8, which is the third-party technology that underlies the Magento message queue framework.
-
Improved page caching and session storage. This release has been tested on the latest stable release of Redis v5.0.6.
-
Enhanced support for MariaDB 10.2. Before Magento 2.3.4, when using declarative schema with MariaDB 10.2, Magento threw an error indicating that the schema was not up-to-date after running
bin/magento setup:upgrade
. With this release, we have normalized the values returned by MariaDB, which allows system integrators to use declarative schema with both MySQL and MariaDB. -
The core integration of the Authorize.net payment method has been deprecated. Please use the official payment integration that is available on Marketplace.
Note: Magento 2.3.4 has not been tested with PHP 7.1. PHP 7.1 reached EOL (End of Life) on December 1, 2019. We recommend updating your deployment to a supported version of PHP. See Magento 2.3 technology stack requirements for information about supported versions.
Performance boosts
Merchants and customers will see performance improvements as a result of these enhancements:
-
Redundant non-cached requests to the server on catalog pages have been eliminated by refactoring the customer section invalidation mechanism and improving banner cache logic.
-
PHTML files have been refactored to better support parsing by the bundling mechanism. Our new bundling mechanism now identifies all dependencies on JavaScript.
-
Added the ability to disable statistic collecting for Reports module by default. A new configuration setting (System Configuration > General > Reports > General Options) allows merchants to completely or partially disable Magento Reports. (Statistics collection for the Reports module is disabled by default. Magento recommends disabling Reports functionality for performance reasons when this capability is not required.)
Infrastructure improvements
This release contains 250 enhancements to core quality, which improve the quality of the Framework and these modules: catalog, sales, PayPal, Elasticsearch, import, and CMS.
Merchant tool enhancements
- Integration with Adobe Stock image galleries. The new bundled Adobe stock integration extension enables merchants to add high quality media assets to their website content without leaving the Magento Admin. Merchants can use the searchable interface in the Magento Media Gallery to explore, preview, license, and deploy stock images in website content. See Adobe Stock Integration and Using Adobe Stock Images.
Inventory Management
Inventory Management enhancements for this release include:
-
Addressed a known performance issue that caused higher than expected loads on the database server in scenarios involving the shopping cart.
-
Updated the Inventory Reservations CLI command to reduce memory usage when finding and compensating for missing reservations on large catalogs.
-
Resolved multiple quality issues, including those related to credit memos, grouped products, source and stock mass actions.
See Inventory Management release notes for a more detailed discussion of recent GraphQL bug fixes.
GraphQL
This release includes improved GraphQL coverage for search, layered navigation, cart functionality. The following mutations/queries are available:
-
Guest carts can now be merged with customer carts. The
mergeCarts
mutation transfers the contents of a guest cart into the cart of a logged-in customer. -
A customer can start an order on one device and complete it on another. Use the `customerCart query to obtain the cart ID for a logged-in customer.
-
Layered navigation can use custom filters. The
filter
attribute of theproducts
query now requires theProductAttributeFilterInput
object. You can specify a pre-defined filter in this object, or define a custom filter. As a result, layered navigation on your website filters on the attributes you need. -
You can search categories by ID, name, and/or URL key. The [
categoryList](/guides/v2.3/graphql/queries/category-list.html) query replaces the deprecated
category` query. -
The
ProductInterface
supports fixed product taxes (such as WEEE). Use thestoreConfig
query to determine whether to store supports these taxes. -
The
cart
object has been enhanced to include information about promotions and applied discounts at the line and cart levels.
See Release notes for a more detailed discussion of recent GraphQL bug fixes.
PWA Studio
-
Improved the getting-started experience through the use of
@magento/create-pwa
to scaffold your initial project using Venia as your template -
Separation of the logic (Talons) and presentation pieces (
venia-ui
) of certain React hooks in Peregrine. Developers can now swap out either the logic or the presentation side of a component -
Routing is now handled through the React Router (library of navigational components)
-
Refactored Venia state management to abstract and reduce dependency on Redux
-
Continued migration from REST to GraphQL
-
Performance improvements (service workers, cache, image optimization)
-
Breadcrumbs for improved storefront navigation
For information on these enhancements plus other improvements, see PWA Studio releases
dotdigital
-
Live Chat powered by dotdigital enables merchants to increase conversion rates, and keep customers coming back with real-time engagement. All Magento 2.3.x merchants (both Magento Open Source and Magento Commerce) can receive a free live chat agent without the need for a full dotdigital Engagement Cloud license.
-
Engagement Cloud includes a new Chat widget that makes it easy for shoppers to communicate in real time with customers as they shop in your store. Chat can be accessed from the Engagement Cloud section of the Magento configuration, or directly from your Engagement Cloud account. See Engagement Cloud Chat.
-
Merchants can now sync additional campaigns from Engagement Cloud to Magento.
Google Shopping ads Channel
Google Shopping ads Channel Release Notes describes all changes to this feature for Magento 2.3.x.
Vendor-developed extension enhancements
This release of Magento includes extensions developed by third-party vendors. It includes both quality and UX improvements to these extensions.
Klarna
Klarna Payments has a new Data sharing on load field in the Magento configuration that can be set to share customer data either after the transaction is authorized, or when the Klarna payment method is selected during checkout. See Setting Up Klarna.
Fixed issues
We have fixed hundreds of issues in the Magento 2.3.4 core code.
Installation, upgrade, deployment
- Upgrades no longer fail when deployments contain store information predefined in
app/etc/config.php
. Previously, MySQL locks occurred during the store import phase of upgrade, and Magento threw an error.
- The
setup:db-declaration:generate-patch
command now generates a patch file using therevert()
method as expected when the--revertable
option is set to true. Fix submitted by Alexander Taranovsky in pull request 23848. GitHub-23847
- You can now run
bin/magento maintenance:enable
orbin/magento maintenance:disable
on a deployment with an empty database. Previously, Magento threw an error when you switched maintenance modes with an empty database. Fix submitted by Ivan Koliadynskyy in pull request 24959. GitHub-23577
- In rare circumstances, executing
composer update
disabled all Magento caches. This issue no longer occurs. Fix submitted by adrian-martinez-interactiv4 in pull request 24892. GitHub-17634
- Vendor names can now contain numbers. Previously, Magento threw an error. Fix submitted by Jason Sylvester in pull request 24324. GitHub-8037
- Single pipes in
composer.json
files have been changed to double pipes.
- Patch dependencies no longer cause a patch to be applied twice. Previously, a patch on which there was a dependency was installed twice and entered twice in the
patch_list
table. Fix submitted by korostii in pull request 24947. GitHub-24019
- Static content deployment (
bin/magento setup:static-content:deploy
) no longer results in random deletion of CSS files or multiple exceptions. Fix submitted by Ihor Sviziev in pull request 22886. GitHub-22880
- You can successfully install Magento 2.3.4 with MySQL 8. Previously, installation stopped because the patch triggered forced indexation. However, Magento 2.3.4 is not yet fully compatible with MySQL 8, so use at your own risk. Full support for MySQL 8 is scheduled for Magento 2.4.0. Fix submitted by Anton Kaplya in pull request 25357. GitHub-25294
- You can now use SSL to connect Magento 2.x to an MySQL server. Fix submitted by Malyovanets Nickolas in pull request 25398. GitHub-13561
- Merchants can use a new system configuration setting to specify the API key for a currency provider. This key is needed when using the Currency Converter API to import currency rates. Previously, a merchant could not import currency rates as expected from Stores > Currency Rates.
Analytics
module-analytics/Model/ExportDataHandler.php
now generates data in theDocroot/var/
folder as expected. Fix submitted by Adarsh Manickam in pull request 24773. GitHub-24708
- Clicking on the ESC key no longer closes the Admin Analytics popup dialog that Magento displays when an administrator first logs in.
- Administrators can now use the TAB key only to navigate between the Allow and Don’t Allow buttons. Previously, an administrator could use the TAB key to navigate out of the dialog.
Backend
- Magento now sets the correct Admin locale scope when generating email templates. Previously, email sent from the Admin included incorrect static file paths.
Bundle products
- The price and subtotal shown in the cart and mini cart for bundle products is now based on the quantity of items and tier price as expected. Previously, if you added a second product to the cart, Magento doubled the product price that was displayed in the cart.
- The shopping cart now displays correct prices for bundle products when you use the Add to Cart Button to add them to cart twice.
- Bundle products now show the correct price when bundle options include only one multiple select option. Fix submitted by Rani Priya in pull request 23902. GitHub-23886
- The price attribute of a bundle product is now disabled as expected when dynamic prices are enabled. Previously, when the Allow Alert When Product Comes Back in Stock setting or the Allow Alert When Product Price Changes setting were enabled, prices remained enabled. Fix submitted by Arushi Bansal in pull request 24077. GitHub-23890
- Magento no longer strips bundled options from a bundle product when you duplicate it. Previously, when you duplicated a bundle product in the Admin, Magento removed the bundled options from the first product and transferred them to the duplicate product. Fix submitted by Pieter Hoste in pull request 24703. GitHub-13126, GitHub-14112
Cache
- Full-page caching now works as expected for non-default store views.
Cart and checkout
- Magento now applies the conditions that are imposed by multiple cart price rules correctly. Previously, Magento ignored conditions to remove free shipping when other discounts were valid.
- Magento now correctly applies cart price rules that apply a 100% discount.
- Guest users can now checkout after persistent shopping cart has been disabled. Previously, Magento displayed this error:
No cart with such entityId=0
.
- Magento no longer displays custom dropdown customer address attribute option IDs on the Review & Payment section of the checkout workflow when a guest checks out. Previously, Magento displayed the option ID instead of the option label for the selected attribute option.
- Billing and Shipping information no longer disappear from the Payment section of the checkout workflow when an AJAX POST request fails.
- Magento now displays an error when you upload an incorrect product SKU while creating an order in a non-default store in a multi-store deployment. Previously, Magento displayed an error when this scenario occurred in the default store.
- Magento no longer displays customer address attribute option IDs on the dropdown menu of the Shipping section of the checkout workflow. Previously, Magento displayed the option ID instead of the option label for the selected attribute option.
- Magento no longer drops or updates the shipping address after a customer update or adds a new billing address zip/postal code when the My billing and shipping address are the same setting is disabled.
- Magento no longer throws a fatal error when you open the shopping cart in a separate window during multishipping checkout.
- Cart Price Rules tables in multi-site deployments now show existing cart price rules as expected. Previously, the Cart Price Rules page displayed the Search button, number of records found, and navigation buttons, but did not display the grid of rules.
- You can now use REST to add a product with customizable options (for example, type checkbox) to the cart. Previously, Magento threw an informative error when you used the POST
/V1/guest-carts/{cartId}/items
endpoint. Fix submitted by Denis Kopylov in pull request 23871. GitHub-23863
- Validation logic has been added to the Minimum Qty Allowed in Shopping Cart field on Store > Configurations > Catalog > Inventory. Fix submitted by Eden Duong in pull request 23896. GitHub-23895
- Magento now displays correct product quantities on the Items Ordered tab of the order page when the price includes a decimal value. Fix submitted by Eden Duong in pull request 23943. GitHub-23940
- Magento now saves the schedule update settings that are set in Admin > Catalog > Categories > Category > Schedule Design Update as expected when you change store view. Fix submitted by kcnariya in pull request 23983. GitHub-23982
- You can now enable the uploaded file of file type custom option for a product from the shopping cart. Fix submitted by Rani Priya in pull request 24240. GitHub-24239
- Validation logic has been added to the Send Payment Failed Email Copy To field of Admin > Store > Configurations > Sales > Checkout > Payment Failed Email. Fix submitted by Eden Duong in pull request 24313. GitHub-24307
- Magento now refreshes the shopping cart as expected when you remove a product from the cart side block. Previously, when you deleted a product from the shopping cart side block, Magento did not update the shopping cart. Fix submitted by Ravi Chandra in pull request 22478. GitHub-11292
- Magento now correctly calculates minicart height when child items contain margins. Fix submitted by Shankar Konar in pull request 24451. GitHub-24441
- Magento now displays an informative error message when a customer updates a shopping cart with a product quantity that is not in stock. Previously, under these conditions, Magento displayed an inaccurate error message. Fix submitted by Gustavo Vicente Dauer in pull request 24380. GitHub-24366
- You can now update the quantity of a product measured in decimals from the shopping cart when the Qty uses decimal setting is enabled. Previously, Magento did not update the product quantity. Fix submitted by Rani Priya in pull request 24510. GitHub-24509
- The Shopping Cart label has been changed to Mini Cart in the sidebar. Fix submitted by Sunil in pull request 24411. GitHub-24409
- The Clear Shopping Cart button now works as expected when running Magento with Internet Explorer. Fix submitted by Eden Duong in pull request 24499. GitHub-24491
- Magento no longer empties the contents of a customer’s shopping cart when she presses Enter after changing a product’s quantity. Fix submitted by Eden Duong in pull request 24499. GitHub-21499
- Magento now includes the downloadable links associated with a downloadable product when you add the product to the shopping cart and then edit the cart. Fix submitted by Rani Priya in pull request 24580. GitHub-24579
- Discount descriptions are now displayed consistently throughout the product interface. Fix submitted by Max Souza in pull request 24595. GitHub-3594
- Magento now displays the Update and Delete buttons as expected in the minicart in mobile view. Previously, these buttons overlapped. Fix submitted by Adarsh Manickam in pull request 25206. GitHub-25137
- The storefront and Admin shopping cart summary fields are now displayed consistently and follow setting preferences. Fix submitted by Eden Duong in pull request 25037. GitHub-25036
- The
QuoteManagement::assignCustomer()
method now allows you to merge a guest cart with an active customer cart. As a result, thePUT /V1/guest-carts/:guest-cart-id
call works as expected. Fix submitted by Ivan Koliadynskyy in pull request 24862. GitHub-24808
- Magento no longer displays a disabled product in a cart or on the storefront if it is disabled after a customer has added it to the cart using a coupon code. Previously, under these conditions, Magento threw an error, and the customer could not complete the order.
- Magento now removes the
aria-invalid
attribute or sets the attribute value to false after successful validation of the address entered into the checkout email field. GitHub-21573
- You can now add products from a non-default website to a cart from the Admin in a multi-site deployment. Previously, when you created a cart from the non-default site and tried to create an order in the Admin by adding items to the cart, Magento did not add the items, but emptied the cart.
- Magento no longer adds attribute values to the cart URL when you add a configurable product to the shopping cart from the product details page. Fix submitted by Geeta Modi in pull request 24254. GitHub-21450
- Persistent shopping cart now works as expected. Previously, Magento changed the customer group to
NOT_LOGGED_IN
before collecting quote totals if an order was placed using persistent shopping cart.
- The shopping cart that contains items no longer displays a subtotal and order total of zero when the Clear Persistence on Sign Out setting is disabled and the Redirect Customer to Account Dashboard after Logging in setting is enabled.
- Quote item prices are no longer NULL in cart-related events. Fix submitted by Eden Duong in pull request 23839. GitHub-18685
- Magento now successfully saves the shipping information that a customer enters when persistent cart is enabled and after a customer has logged in after her session has expired but before the interval specified by the Persistence Lifetime value has been exceeded. Previously, Magento did not save the shipping information, and displayed an error. GitHub-23908
Catalog
- Editing the attribute set of a disabled product no longer enables the product on the storefront.
- Magento now displays category banner images as expected on the category edit and the storefront category pages.
- Magento no longer throws a fatal error during compilation of code that contains a preference for the category product indexer. GitHub-22769
- When an administrator sets the out-of-stock threshold for a product to a negative value and allows backorders below a quantity of 0, customers can backorder a product until the out-of-stock-threshold value matches the product’s stock quantity. Previously, the out-of-stock threshold had no effect, and the given product stayed in stock and could be backordered without limit.
- Storeview-specific attributes are now included in layered navigation results even when the All Store Views setting is not enabled.
- Magento now displays the
Refresh Cache
message as expected when you change the layout of the category page.
- Catalog search layered navigation results now include product attributes of type price.
- Magento now highlights only the most recently selected category as expected on storefront pages that contain multiple categories. Previously, all selected category menus remained highlighted.
- The performance of the Product Categories indexer has been improved. Previously, reindexing product categories could take up to 30 minutes.
- Corrected an issue that caused category tree values to return null after upgrading from Magento 2.3.1 when multiple store views exist. GitHub-23951
- Clicking Delete on a Product page twice after selecting one or more products no longer deletes all products. GitHub-15935
- The catalog product lists are now displayed as expected when products contain custom attribute conditions.
- Magento now successfully loads pages that implement the catalog product list widget when products contain custom attribute conditions. Previously, Magento threw this error:
Error filtering template: Notice: Undefined offset: 0 in .../app/code/Magento/CatalogWidget/Model/Rule/Condition/Product.php on line 221
.
- Merchants can now scroll down the Create New Product page to determine whether the product has been saved if they enter invalid values in the Schedule Design Update fields. Previously, customers could not scroll to see if the product had been saved. Fix submitted by Eden Duong in pull request 24242. GitHub-24241
- Quote model extension attributes are now properly encoded and present on the checkout page as expected. Previously, these attributes were present as empty objects {}. Fix submitted by skylineop in pull request 24771. GitHub-15959
- Changing attributes sets now removes the attribute from the layered navigation and search results as expected.
- The Date field customizable option for products now saves accurate values for stores in different time zones.
- Custom attributes listed on the Stores > Attributes > Product > Add New Attribute page are now sorted alphabetically as expected. Previously, custom product attributes were sorted by value ID.
- You can now change the page layout of the
catalog_product_view
page from a custom theme by changing<theme_dir>/Magento_Catalog/layout/override/base/catalog_product_view.xml
. Fix submitted by ochnygosch in pull request 24367. GitHub-24362
CatalogInventory
- You can now add a child product to the shopping cart if it does not have a default source assigned.
Cleanup and simple code refactoring
- The Are you sure you want to delete this category? message is now translatable. Fix submitted by Eden Duong in pull request 24039. GitHub-24038
- The PayPal setting section of the Admin > Stores >Configuration > Sales > Payment Methods page now has an expand/collapse icon. Fix submitted by Eden Duong in pull request 24119. GitHub-24118
- An incorrect XML namespace url was removed from the generated sitemaps displayed at Marketing > SEO & Search > Sitemap. Previously, Magento returned a 404 error when you clicked on the sitemap link. Fix submitted by Sunil in pull request 23716. GitHub-23706
- The minicart now displays a product’s file type custom option. Fix submitted by Rani Priya in pull request 24237. GitHub-24236
- The spacing of the Select Input box on Admin pages with grids is now consistent with other pages in Magento. Fix submitted by Nagamaiah333 in pull request 24359. GitHub-24152
- Fixed misalignment of the scope icon and the store view-specific label on the Admin > Store > Settings > Order status > Create New Status page. Fix submitted by Eden Duong in pull request 24449. GitHub-24440
- The What’s this? link in the Remember me section of the storefront login page now behaves as expected. Fix submitted by Vinicius Rafael Dziuba in pull request 24602. GitHub-24511
- Corrected misalignment of the checkboxes and associated labels on the Admin > Catalog > Products > Update Attributes page. Fix submitted by Adarsh Manickam in pull request 24761. GitHub-24740
- Fixed inconsistent and improper capitalization in the Admin > Marketing > Communications > Email Templates > Create a New Template page. Fix submitted by Adarsh Manickam in pull request 24804. GitHub-24803
- The
Magento\CatalogUrlRewrite\Model\Storage\DynamicStorage::getCategoryUrlSuffix()
method return value has been changed to typestring
. Fix submitted by Brent Robert in pull request 24907. GitHub-24903
- The drop-down icon now remains visible when you click on Load Template while creating an email template from the Admin. Fix submitted by Gaurav Agarwal in pull request 25022. GitHub-24840
- Fixed alignment of the wishlist icon on the shopping cart in mobile view. Fix submitted by Shubham Sharma in pull request 25200. GitHub-20502
- Corrected misalignment and standardized design of the Other PayPal Payment Solutions header on the Store Configuration page. Fix submitted by Arvinda Kumar in pull request 25241. GitHub-25240
- Duplicate labels in the Admin Sales > Transactions Payment Method table have been removed. Fix submitted by Eden Duong in pull request 24041. GitHub-24040
- Added a missing label on Marketing > Search Synonyms > New Synonym Group. Fix submitted by Eden Duong in pull request 23954. GitHub-23953
- Corrected the misalignment of the Cache Type checkboxes throughout the Admin. Fix submitted by Mateusz Krzeszowiak in pull request 25443. GitHub-25429
- Fixed display issue with the placeholder text in the newsletter subscription block in the global footer that occurred in mobile view. Fix submitted by Christos Stergianos in pull request 25184. GitHub-21592
- The default value for the Products per Page on Grid setting was updated to 12. This setting affects the number of products that are displayed on the storefront for products when the list view is specified. This change will affect new customers and customer who have not previously saved this setting.
CMS content
- The checkboxes in the Dynamic Block Rotator (used when inserting a widget during the creation of a CMS page) have been corrected, and the widgets are now fully clickable as expected.
- You can now save CMS blocks with no content. Fix submitted by Eden Duong in pull request 23801. GitHub-23800
Command-line interface (CLI commands)
- Exception handling messages for CLI commands have been edited to be specific, informative, and relevant to the context in which the error occurs. Fix submitted by Pavel Bystritsky in pull request 24734. GitHub-24678, GitHub-24043
bin/magento setup:backup --media
now successfully backs up a symbolically linkedpub/media
directory. Fix submitted by Ivan Koliadynskyy in pull request 24755. GitHub-13218
Configurable products
- Magento now maintains the sort order of uploaded simple images when they are uploaded through the Create Configurations wizard.
- A configurable product’s options list now shows out-of-stock products as expected when the Display Out of Stock Products option is enabled.
- You can now remove special prices from a product without affecting the price of associated products. Previously, after removing the special price from one simple product, Magento stopped displaying the regular price for all associated simple products.
- The performance of edit and save operations on configurable products has been improved.
- The Admin configurable product list now displays all simple products with a quantity of 0 as expected. Previously, a simple product disappeared from this list when a product quantity was set to 0.
- Magento no longer throws an error when you try to add new attribute options to a configurable product. Fix submitted by federeggiani in pull request 24659. GitHub-14240
- Custom attribute loading now works as expected. Previously, the
getUsedProducts()
method’s optional$requiredAttributeIds
parameter was not used, which prevented the loading of custom attributes. Fix submitted by Laura Folco in pull request 24875. GitHub-24483
Cookies
- Magento no longer redirects customers to the Cookie CMS page upon login when the Redirect to CMS-page if Cookies are Disabled setting is disabled. Fix submitted by Eden Duong in pull request 25152. GitHub-25148
Cron
- A new flag has been added to the
bin/magento cron:install
command that permits you to add only mandatory entries to thecrontab
file of the server on which Magento is running. The--non-optional
flag (or-d
for short) adds only one of three possible lines to thecrontab
file. Without this flag,bin/magento cron:install
adds three lines to thecrontab
of the serve. Only one of those added lines is necessary to run Magento, and many installations are configured such that the two optional lines are not needed. Fix submitted by Alexander Taranovsky in pull request 24187. GitHub-10040, GitHub-24186
- The
bin/magento cron:run
command now adds an entry forcurrency_rates_update
in thecron_schedule
table as expected. Fix submitted by Bruno Roeder in pull request 24590. GitHub-23846
Customer
- The Date of Birth field on the customer registration form no longer defaults to 1/1/1970 in deployments that already contain a registered customer with the same email in stores using the
en_AU
locale.
- The list of countries accessible from the Add New Address field of the checkout workflow now displays only countries that have been defined in Admin > Stores > Configuration > General.
- Delegated account creation no longer fails when the customer address contains custom attributes. GitHub-22952
- Magento now clears the State/Province field on the customer address page when you change the value for country while editing a customer address. Fix submitted by Lucas Calazans in pull request 24597. GitHub-23460
- Magento now runs validation checks on the values entered into the Date of Birth field in the Admin Add New customer page. Fix submitted by Tiago de Oliveira Castro Teixeira Pinto in pull request 24588. GitHub-22692
- Spaces are now trimmed as expected from values entered into the customer account Phone field.
- The Reset Password Confirmation Link email is now scoped appropriately for global customers. Previously, Magento always sent email from the default store, not the store to which the customer was assigned. Fix submitted by Roman Kis in pull request 24783. GitHub-23295
Custom customer attributes
- Magento now displays an informative error message when a customer tries to place an order without adding an address for the payment method and the My billing and shipping address are the same checkbox is unchecked.
Database media storage
- The
bin/magento catalog:image:resize
command now processes images from the database as expected when files do not exist locally. Fix submitted by gwharton in pull request 23913. GitHub-23911
- Enabling Flush Catalog Images Cache on System > Cache Management now clears all cached image files from both the filesystem and database. Previously, Magnto removed images from the filesystem only. Fix submitted by Wgwharton in pull request 24088. GitHub-23516
Declarative schema
- The data/schema patch
getAliases()
method now works as expected. Fix submitted by korostii in pull request 25265. GitHub-23031
- The
WISHLIST_ITEM_OPTION_PRODUCT_ID_CATALOG_PRODUCT_ENTITY_ENTITY_ID
foreign key has been removed from declarative schema.
Downloadable products
- Magento no longer displays a console error when you select all links for a downloadable product on the storefront. Fix submitted by Rani Priya in pull request 24634. GitHub-24633
- Magento now displays the Unselect all button on the shopping cart page when a customer selects a downloadable product with multiple options. Fix submitted by Adarsh Manickam in pull request 24800. GitHub-24785
EAV
- The product attribute edit page now loads successfully when you try to edit an attribute value from the Admin. Previously, Magento threw a 500 error.
- The Attribute Option update API no longer creates multiple options with the same value.
- The
catalog_product_entity_varchar/catalog_product_entity_int
tables are now updating with correct values. Previously, when you tried to access the product using REST, Magento displayed deleted custom attribute option values.
- Magento now correctly saves the values assigned to the
sort_order
andattribute_group_code
attributes by thePOST /V1/products/attribute-sets/groups
call. Fix submitted by Eden Duong in pull request 23690. GitHub-23634
- You can now perform mass actions on items in a grid that uses an EAV collection. Previously, grids created with the now-deprecated Magento\Backend\Block\Widget\Grid (as many third-party extensions are) threw an exception when you tried to performa a mass action. Fix submitted by Thomas Klein in pull request 23452. GitHub-23451
- The Registration and Contact us pages now correctly handle customer names that contain non-ASCII characters. Previously, if the customer name contained non-ASCII characters, the user did not receive the email. Fix submitted by elvinristi in pull request 24906. GitHub-24902
- The product page Send Email to Friend email form is now sent from the email address configured as sender in the system configuration General Contact field. Previously, Magento displayed an error because the value in this field was handled as a user-defined value, not a static value. Fix submitted by Eden Duong in pull request 23684. GitHub-23646
- Validation logic has been added to the email fields on Admin > Stores > Configuration > Sales > Sales Emails. Fix submitted by Eden Duong in pull request 24138. GitHub-24137
- Validation logic has been added to the Send Payment Failed Email Copy To field of Admin > Stores > Configuration > Sales > Checkout. Fix submitted by Eden Duong in pull request 24313. GitHub-24312
Frameworks
- Customers no longer have problems logging in to a Magento deployment on which
bin/magento customer:hash:upgrade
has been run and that also runs PHP 7.2.19 and has the sodium extension installed (libsodium 1.0.13 or greater). GitHub-23517
- The
bin/magento setup:db:status
command now returns successfully after you’ve runbin/magento setup:upgrade
on a deployment running Maria DB version 10.2. Previously, thebin/magento setup:db:status
command returned this message:Declarative Schema is not up to date
and indicated that we need to runbin/magento setup:upgrade
. GitHub-19597
- Country lists now provide a translation of Taiwan as Taiwan, Province of China.
- Magento now sends sales-related email to the correct customer when
sales_emails
cron has an error.
- The
magento/framework/Mail/Template/TransportBuilder.php
class has been refactored to make sure that$this->messageData
is updated when$email
is anarray
andisset($this->messageData[$addressType])
is set to false.
- Magento no longer throws an error when you open an image from the product image gallery from the storefront product detail page. Previously, Magento returned this JavaScript error in the console:
TypeError: The expression cannot be converted to return the specified type
.
- Order-related
save_after_commit
callbacks are now called for guest checkouts as expected. Previously, they were not dispatched.
- The product counter and page lister on Catalog > Products now works correctly after the Add Store Code to Urls setting has been enabled or disabled.
JavaScript framework
- Unnecessary define checks have been removed from JavaScript modules that are used by requireJS. Fix submitted by Bartłomiej Szubert in pull request 24833. GitHub-22747
- Excluding minified JavaScript files from the generated JavaScript bundles using the
view.xml
file inside a theme now works as expected. Previously, you needed to explicitly provide both the non-minified filename and the minified filename. Only the exact filename as it exists on the filesystem is needed now. The other variant is handled automatically. This reduces the size of the generated JavaScript bundle files in default Magento themes and may also improve the JavaScript bundle file size in custom themes. Fix submitted by Pieter Hoste in pull request 24506. GitHub-4506, GitHub-13558, GitHub-14357
General fixes
- Basic validation steps have been added to fields on the Store > Configuration > Catalog page. Fix submitted by Eden Duong in pull request 23723. GitHub-23721
- Magento now displays an error message when validation fails when you click Generate on the Manage Coupon Codes page and the applicable sales rule has the Use Auto Generation setting enabled. Fix submitted by Eden Duong in pull request 23781. GitHub-23778
- Magento now correctly redirects you to the customer account page when you click the Back button on the Manage Addresses page. Fix submitted by Eden Duong in pull request 24079. GitHub-24058
- The New Block form no longer displays a Store View field when your deployment is in single-store mode. Fix submitted by Eden Duong in pull request 24397. GitHub-24387
- Images now change as expected when you swipe over the image when using a touch screen. Fix submitted by Eden Duong in pull request 25061. GitHub-25060
- Magento now displays an informative error message if validation fails when clicking Generate when managing coupon codes from the Admin. Fix submitted by Eden Duong in pull request 23781. GitHub-23778
- Access Control Permissions (ACLs) have been improved for the following cart-related tasks: export CSV and Excel file of abandoned cart and abandoned products reports. Previously, administrators with no permission to this information could export these reports. Fix submitted by Eden Duong in pull request 23925. GitHub-23924
- Validation logic has been added to the Sort order field of the New Rating form (Stores > Rating). Fix submitted by Eden Duong in pull request 23985. GitHub-23984
- You can now successfully filter products by multiple attributes in the Step 2: Attribute Values section of the Admin Create Product Configuration page. Previously, only one of the selected values were retained when you tried to filter. Fix submitted by Eden Duong in pull request 24000. GitHub-23999
- Problems with less compilation in Magento’s blank theme when using an alternative less compiler than the one that ships with Magento by default have been resolved. Fix submitted by Pieter Hoste in pull request 24001. GitHub-23619
- Magento now extracts handles from layout updates before merging layouts. Fix submitted by Sergey Solo in pull request 23918. GitHub-5901
- The
Convert to Plain Text?
confirmation message that Magento displays when you click Delete on the Admin Edit Email Template page now follows Magento design guidelines. Fix submitted by Eden Duong in pull request 24083. GitHub-24082
- The outdated URL for the HTTP Strict Transport Security page (accessed from Admin > Store > Configuration > General > Web) has been updated to
app/code/Magento/Backend/etc/adminhtml/system.xml
. Fix submitted by Eden Duong in pull request 24165. GitHub-24164
- Validation logic has been added to the Layered Navigation Price Step field of the Admin > Catalog > Categories page. Fix submitted by Eden Duong in pull request 24170. GitHub-24169
- Validation logic has been added to the Oauth field of the Admin > Store > Configuration > Service page. Fix submitted by Eden Duong in pull request 24173. GitHub-24172
- Validation logic has been added to the Connection Timeout in Seconds field of the Admin > Store > Configuration > General > Currency Setup page. Fix submitted by Eden Duong in pull request 24205. GitHub-24204
- Magento now displays a confirmation message when you choose a mass delete operation on subscribers on the Admin > Marketing > Newsletter Subscribers page. Fix submitted by Eden Duong in pull request 24249. GitHub-24248
- Validation logic has been added to the sort order field on the Admin > Stores > All Stores > Create Store View or Website page. Fix submitted by Eden Duong in pull request 24294. GitHub-24293
- XML attributes are now encoded to allow special symbols in tag attributes. Fix submitted by Sergey Solo in pull request 24336.
- Validation logic has been added to options for dynamically created product attributes before Magento adds these attribute values to the product database. Magento now checks whether the
optionArray
exists in the database before adding it. Previously, Magento created duplicate options for the same store. Fix submitted by Maksym Novik in pull request 21424. GitHub-16852
- Calls to
catalogProductTierPriceManagementV1GetListGet
now handle requests as expected. Previously, calls failed when querying a configurable product. Fix submitted by Ashutosh Srivastva in pull request 24502. GitHub-24410
- The HTML
br
tag is now an allowed tag. Fix submitted by Denis Solovyov in pull request 24392. GitHub-24329
- The Admin notification counter now correctly handles double-digit values. Fix submitted by Alexandre Thurow in pull request 24589. GitHub-23473
- You can now successfully select an image from the image gallery when you configure a theme ( Admin > Content > Configuration). Fix submitted by Rani Priya in pull request 24431. GitHub-24430
- Modal triggers can now be added after module initialization. Fix submitted by Mateusz Krzeszowiak in pull request 25435. GitHub-9671
- You can now swipe on different images in the fullscreen product gallery on touch devices or when touch emulation is enabled in Chrome. Fix submitted by Mateusz Krzeszowiak in pull request 25233. GitHub-25231
- The Admin Address Country drop-down list now takes its values from the Allow Countries setting that is configured for the Website Store View where the order was made. Fix submitted by Oleksii Lisovyi in pull request 24345. GitHub-12560
- Magento no longer serializes user data multiple times when data is loaded by the
loadByUsername
method. Fix submitted by Jamie Saunders in pull request 23827. GitHub-23824
- The Available Countries list (Stores > General) has been updated to include the countries identified in the latest version of the Common Locale Data Repository (version 36). Fix submitted by Bartłomiej Szubert in pull request 24927. GitHub-24710
- Method chaining now works as expected in extensions and customizations that are based on a product collection entity. Fix submitted by Mahesh Singh in pull request 24973. GitHub-24964
- The use of ObjectManager in the core code has been replaced with factories and constructor dependency injections wherever possible. Fix submitted by Yurii in pull request 24661. GitHub-24646
- Magento now displays a bad request error message when the confirmation link sent to the new customer email is not valid. Fix submitted by Alexander Taranovsky in pull request 24331. GitHub-24330
- Catalog event start and end dates are not changed when you edit the event.
- Running
diff -rq ./build-1/ ./build-2/
on two different builds of the same commit now yields the same results in generated/metadata folders. Previously, these results were not reproducible. Fix submitted by Ihor Sviziev in pull request 23325. GitHub-23324
Image
- The size of images displayed in RSS feeds is now determined by the
view.xml
file. Fix submitted by Sunil in pull request 23533. GitHub-23516
- The content attribute for
msapplication-TileImage
now resolves to a localised theme path. Fix submitted by Burlacu Vasilii in pull request 21798. GitHub-5023
- When you move a category, the list of categories prepared for re-indexing now includes all affected subcategories when Flat Catalog is enabled. Previously, the order of categories on the storefront remained incorrect until the flat category was re-indexed. Fix submitted by Sergey Solo in pull request 23820. GitHub-3993
- Watermarks cannot be configured for swatch images.
Import/export
- Magento now creates an advanced price export file as expected when exporting more than 5000 products. Previously, Magento threw an error and did not create the file. Fix submitted by Mahesh Singh in pull request 24831. GitHub-24722
- The Scheduled Import Settings page no longer displays fields that have been disabled in configuration settings. Fix submitted by Eden Duong in pull request 25102. GitHub-25101
- Removed redundant quotation marks from the CSV field title of the exported order CSV file. Fix submitted by Alexander Lukyanov in pull request 24969. GitHub-23465
- The Export page now displays exported files in a grid. Previously, Magento did not list files but instead displayed a message indicating that the CDATA section was too large to display when more than 20,000 records were exported. Fix submitted by Eduard Chitoraga in pull request 24954. GitHub-24311
- Exported CSV are now sorted based on time when you run
bin/magento cron:run
. Previously, exported CSV results were displayed randomly, and you could not filter or sort exported items.
- You can now import empty values (
__EMPTY__VALUE__
) from a CSV file at the store-view level.
- Magento now handles URL rewrites correctly when you import data for an existing product.
- You can now exclude attributes from a CSV file when setting up an export (System > Data Transfer (Export)). Previously, the checkboxes on this page did not work.
- Magento now correctly processes product prices during export when the All Store Views scope is set. Previously, the logic for updating the price in custom options in non-default websites was missing when the Catalog > Price setting is set to Website.
- Magento now respects website scope settings when you export product data in a CSV file.
- Magento now adds newly imported images after previously imported ones. Previously, Magento added these most recently imported images randomly.
- You can now successfully import customer data that has not been modified when generating the CSV file with the Add/Update Complex Data behavior option.
- Corrected spacing issue in the
Magento_Config
file. Fix submitted by Alexander Taranovsky in pull request 24420. GitHub-5246
- Magento now correctly imports product quantity from a CSV file. Previously, the quantity field for a product could be 0, but the status field would indicate in stock. Fix submitted by kristiancharb in pull request 24053. GitHub-23042
- Magento now displays an error message as expected when you select Import Tax Rates without selecting a file for import on (Admin > Import & Export Tax Rates). Fix submitted by Eden Duong in pull request 24643. GitHub-24642
- You can now successfully import an image from an external URL.
Index
- The
POST /V1/products/tier-prices
call now considers account indexer mode as expected.
- Magento no longer throws a fatal error when you create a preference for the category product indexer before running
bin/magento setup:di:compile
. Fix submitted by Diego Cabrejas in pull request 23300. GitHub-22769
- During re-indexing, Magento now deletes only products that have been identified as out-of-stock when filtered by
$entityIds
. Fix submitted by Bruce in pull request 24415. GitHub-24414
Infrastructure
- File permissions for non-executable files in GitHub have been changed from 755 to 664 where appropriate. Fix submitted by Pieter Hoste in pull request 24005. GitHub-1453
- An incorrect Bool return type for the
setIsActive()
method inSalesrule Module RuleInterface.php
has been corrected toRuleInterface
. Fix submitted by Bartłomiej Szubert in pull request 24814. GitHub-13278
- Magento no longer adds a
form_key
field to POST forms that have external action URLs. (External action URLS are URLS that do not belonging to shop’s base URL.) Fix submitted by Mateusz Krzeszowiak in pull request 25336. GitHub-23382
- The dictionary was removed from the
zxcvbn.js
library, and the following performance improvements have resulted: 1) The size of thezxcvbn
library has been reduced from 395 KB to 11.3 KB on customer registration, customer edit, and customer forgot password pages; 2) The time required for asynchronously loading this library has been reduced by 90%.
- The
scopeData()
method now returns aDateTime
value that is scoped to the specified store locale. Previously, this method was not fully implemented. Fix submitted by Eden Duong in pull request 23693. GitHub-23359
- The
getAttributeRawValue
method now returns a store-specific value even when there is no default value. Previously, no store value was returned when a default value was not present. Fix submitted by semajeg in pull request 23369. GitHub-16382
- The performance of the
ProductMetadata::getVersion
method has been improved as a result of adding the caching of the product version. This method is called by many third-party extensions to determine the version of Magento. Fix submitted by David Verholen in pull request 24030. GitHub-24025
- You can now add products with custom options of all types to the shopping cart. Fix submitted by Alexandr Skrashuk in pull request 25055. GitHub-24726
- Decimal numbers have been added to the Sample File in Import CSV section. Previously, using the Download Sample File option on the product’s import CSV page created a sample CSV file with a weight of 1, which was of limited use. Fix submitted by Cristian Sanclemente in pull request 25317. GitHub-23920
- A deprecated method in
\Magento\MysqlMq\Model\Driver\Exchange
has been replaced. Previously, this method caused an exception. Fix submitted by Tjitse in pull request 25289. GitHub-21904
- You can now add handlers directly to the
di.xml
. Previously, you needed to extend the helper class and register the handlers. Fix submitted by Thomas Klein in pull request 24405. GitHub-12371
- You can now add a handler directly to the
di.xml
of a product template instead of adding a handler by extending the helper class and registering the handlers. Fix submitted by Tomash Khamlai in pull request 25466. GitHub-25468
- Magento no longer returns an empty string when calling
$this->_escaper->escapeXssInUrl(“0”);
, but instead returns the expected 0 value. Fix submitted by Will Palmer in pull request 23988. GitHub-23987
Inventory
- You can now save an edited product when
max_sale_qty
is set to the Magento default value. GitHub-23319
Layered navigation
- Layered navigation is no longer visible when you set display mode to Static Block only on a particular category. Fix submitted by Mahesh Singh in pull request 24497. GitHub-24031
Media storage
- Magento now retrieves images from the proper cache in multi-store deployments.
Newsletter
- Magento now displays empty Customer First Name and Customer Last Name fields on the Admin > Marketing > Newsletter Subscribers page. Previously, these fields contained the unexpected string
—
. Fix submitted by Eden Duong in pull request 25058. GitHub-25057
- Corrected alignment of the Newsletter label and associated checkbox on the Admin customer edit page. Fix submitted by Arvinda Kumar in pull request 25208. GitHub-25207
- The Subscribe button is now visible on the Subscribe form as expected. Previously, an sr-only element hid this button. Fix submitted by KrielkipNL in pull request 24028. GitHub-24027
- The Subscribe to Newsletter checkbox now works as expected when Stores > Configuration > Customer > Customer Configuration > Account Sharing is set to Global.
- Customers are no longer sent unsubscribe to newsletter emails when they register for a new account and the Sign Up for Newsletter setting is set to on. Fix submitted by Eden Duong in pull request 23737. GitHub-23729
- The newsletter template preview now displays images as expected. Previously, any images included in the template were not correctly displayed, and you need to scroll to view the entire image.
Orders
- The Order list now displays order information in the currency in which the order was placed, not the current base currency of the store. Fix submitted by Eden Duong in pull request 23817. GitHub-23805
- You can now open a storefront from Sales > Orders > Customer View. Previously, the Admin froze, and the page never reloaded. Fix submitted by Adarsh Manickam in pull request 24845. GitHub-24779
- The checkbox on the Admin > Create New Order > Add Products page now works as expected in Internet Explorer 11.x. This checkbox now behaves the same across all supported browsers. Fix submitted by Adarsh Manickam in pull request 24913. GitHub-12855
- Magento now displays the customer middle name in the customer details on orders and in the new order email sent to customers. Fix submitted by Sergiy Vasiutynskyi in pull request 24746. GitHub-23627
- Magento now updates the
сustomer_email
value in thequote
andsales_order
tables as expected when a customer changes their email address. Fix submitted by Artem Voloznov in pull request 24049. GitHub-24012
- Customers can now cancel an order that they created using a coupon while logged in as a guest. Previously, when they tried to cancel the order, Magento threw an error. Fix submitted by Pavel Bystritsky in pull request 20577. GitHub-19230
- Magento now displays a warning message when you click the Apply Coupon Code button without filling in the coupon code when creating an order. Fix submitted by Eden Duong in pull request 24016. GitHub-24015
- Magento now sends New Order email as expected when the Send Order Email Copy To field contains a comma followed by a blank space. Fix submitted by Eden Duong in pull request 25085. GitHub-25072
- An incorrect critical log entry (
No such entity with customerId = xxx
) in theexception.log
file has been corrected. Previously, Magento logged this entry, which was a false positive that was created when a logged-in customer did not have an active quote. Fix submitted by Pieter Hoste in pull request 25307. GitHub-24009
Payment methods
- You can now use Paypal Payflow Pro to complete an order in deployments running Internet Explorer 11.x.
- Magento now successfully processes orders that are shipped to multiple addresses when Braintree with PayPal is used as the payment method. Previously, Magento successfully completed only one order, and Magento declined to process the other orders.
- Guests can now successfully pay for an order using PayPal Express Checkout. Previously, Magento did not process the order and displayed this message:
To check out, please sign in with your email address
.
- You can now successfully complete an order using Braintree with PayPal when Shipping Flat Rate is activated. Previously, Magento displayed an informative error.
- Magento no longer displays the PayPal Credit option on the checkout workflow on the storefront when this option is disabled in the Admin.
- Magento now properly concatenates first and last names in PayPal Express address fields.
- The Saved Credit Card Feature with Vault feature nows displays accurate card information in the order information page as expected for orders paid for with Payflow Pro.
- The Qty to Refund field on the credit memo of an order paid for with Authorize.net is now editable.
- Magento no longer throws a fatal error when you enter an invalid shipping address when placing an order with Braintree with Paypal.
- Magento no longer displays duplicate Place Order buttons on the Review Order page for orders made with PayPal Express.
- You can now successfully add new products to the cart when placing a re-order from the Admin when the original order used a coupon and the Braintree payment method.
- Magento no longer displays the PayPal Express Checkout button on product pages or the shopping cart when the Display on Product Details Page and Display on Shopping Cart (Advanced Settings) settings are disabled.
- Magento no longer displays the PayPal Credit button when the Checkout with PayPal button is displayed on the shopping cart. Fix submitted by Oleksii Lisovyi in pull request 24121. GitHub-22525,GitHub-22528
- Validation logic has been added to the Send Payment Failed Email Copy To field of Admin > Store > Configurations > Sales > Checkout. Fix submitted by Eden Duong in pull request 24313. GitHub-24302, GitHub-24304
- The Stored Payment Methods section of the customer dashboard no longer depends on Braintree being enabled. Removing this dependency permits custom payment methods to also use this section. Fix submitted by prabhatrawat-webkul in pull request 24501. GitHub-23205
- Magento no longer throws JavaScript errors when a customer tries to pay for an order using PayPal when the shipping address fields are incomplete. Fix submitted by Anton in pull request 24622. GitHub-24618
- Removed the redundant XML code in the
<payflow_advanced>
node of the PayPalconfig.xml
configuration file. Previously, this redundancy caused errors. Fix submitted by yupik in pull request 24694. GitHub-23880
- The Enable this Solution setting is now set back to no for PayPal Express as expected when a customer clicks on Cancel on the “There is already another PayPal solution enabled. Enable this solution instead?” popup during PayPal Express checkout.
- The Braintree
ClientToken
is now disabled when the Braintree payment method is disabled for the current store view. Fix submitted by Andrey Legayev in pull request 25223. GitHub-25343
Performance
- The Cache User Defined Attributes system configuration option was added to Admin > System Config > Advanced > Developer section > Caching Setting. This option supports the caching of user-defined EAV attributes while they are being retrieved. Caching system EAV attributes during retrieval improves the performance of many tasks by decreasing the number of insert and select requests to the database. With this release, all system EAV attributes are cached by default. However, developers can also cache user-defined attributes by setting Cache User Defined Attributes to yes. System EAV attributes that should be cached while being retrieved are defined in
di.xml
in theattributesForPreload
argument ofMagento\Eav\Model\Config
.
- Statistics collection for the Reports module is now disabled by default. A new configuration setting (System Configuration > General > Reports > General Options) allows merchants to completely or partially disable Magento Reports. (Statistics collection for the Reports module is disabled by default. Magento recommends disabling Reports functionality for performance reasons when this capability is not required.)
- The performance of sales order update operations has improved.
- Redundant non-cached requests to the server on catalog pages have been eliminated by refactoring the customer section invalidation mechanism and improving banner cache logic.
- PHTML files have been refactored to better support parsing by the bundling mechanism. Our new bundling mechanism now identifies all dependencies on JavaScript.
Reports
- Sorting has been disabled on the New Account column of the New Accounts report. Fix submitted by Eden Duong in pull request 25034. GitHub-25033
- A missing newline has been added to the end of
var/report
report output, which has improved the automatic parsing of log files. Fix submitted by Mathew Beane in pull request 24559. GitHub-24588
- Magento no longer throws a console error when you click Select All on the Newsletter Problems Report page. Fix submitted by Eden Duong in pull request 24104. GitHub-24102
Reviews
- The Reset button now works as expected on Admin > Marketing > All Reviews > New Review page. Fix submitted by Shankar Konar in pull request 24318. GitHub-23990
- Select All on the coupon list of the Manage Coupon Codes page now works as expected.
- Magento no longer displays the Add New Review button on the Admin > Marketing > All Reviews > New Review page if no product is present. Fix submitted by Eden Duong in pull request 24399. GitHub-24310
- The product detail page now scrolls as expected when you click on the Review or Add Your Review link. Previously, the page did not scroll, and Magento displayed a JavaScript error. Fix submitted by Gaurav Agarwal in pull request 25051. GitHub-25039
Sales
- Validation has been added to Minimum Order Amount field on the Stores > Settings > Configuration > Sales page. Fix submitted by kcnariya in pull request 23898. GitHub-23897
- Invoice email is now sent automatically as expected when the Payment Action setting for a payment method set to Authorize and capture.
- The order view section of the checkout workflow now shows the correct shipping price for an order to be shipped to multiple addresses.
- Tax rates and amounts now change as expected when the billing address for an order is changed from the Admin.
- Magento now sends email to customers when an invoice is created. Previously, even when the relevant configuration setting was enabled, Magento did not automatically send this email. GitHub-13466
- Coupon codes for free shipping are displayed like other coupon codes. Previously, coupon codes for free shipping were not displayed on the order summary of the checkout workflow.
- You can no longer add disabled variations of a configurable product to a shopping cart from the Admin.
- The Quote Lifetime (days) setting, which specifies the number of days that a quoted price remains valid, now works as expected.
Sales Rule
- You can now change action settings for a scheduled update of a Cart rule. Previously, Magento did not save an action condition if you added it to the cart rule’s scheduled update.
- Magento no longer displays an error when a customer clicks Subscribe to Order Status on an order page, and now subscribes the customer to the XML feed as expected.
- The counter values on the Marketing > Cart Price Rules grid now match the number of rules listed in the grid as expected.
- Magento now applies coupon codes correctly when an order subtotal dips below the threshold specified in the applicable cart price rule. Previously, Magento applied the coupon correctly momentarily, then removed the coupon code during the tax and shipping sections of the checkout workflow.
Search
- The pagination of multipage search results now works are expected. Previously, if you navigated away from the first page of search results, Magento displayed this error:
We can't find products matching the selection
.
- MySQL performance for search queries has been optimized, and merchants running sites with many search queries will notice improvements in query speed.
- Quick search now successfully handles search phrases that contain fewer characters than the configured value. Previously, quick search ignored the search phrase and returned all products when search string length was lower than configured.
- Magento no longer requires a full search reindex in order for a new product attribute to be searchable on the storefront.
- The storefront now displays a newly added product in its assigned category after you run
bin/magento cron:run && bin/magento cron:run
.
- Searching on categories from the New Product page now works as expected when you enter a search string that does not match an existing category. Previously, Magento displayed incorrect results instead of indicating zero search results. Fix submitted by Eden Duong in pull request 23698. GitHub-23697
- Elasticsearch now successfully finds products on the storefront using the values of dropdown attributes.
- Elasticsearch now correctly handles search queries that include words that contain diacritics as well as spellings of those words that are entered without the correct diacritics.
- You can now search the Sales > Orders list by email address.
- Running
bin/magento indexer:reindex catalogsearch_fulltext
no longer results in the deletion of an index-related database table.
- Elasticsearch results now display all products as expected when the Configuration > Catalog > Storefront > Allow All Products Per Page is set to yes. Previously, Magento displayed this error:
We can't find products matching the selection
.
- Category pages now work as expected when Price Navigation Step Calculation is set to Automatic (equalize product counts).
- Magento no longer throws an exception when you initiate an advanced search using product name and SKU.
- Elasticsearch now successfully handles search queries that contain a question mark followed by a semicolon (?;).
- Validation logic has been added to the Number of results and Number of Uses fields of Admin > Marketing > Search Terms. Fix submitted by Eden Duong in pull request 24101. GitHub-24100
- Magento no longer logs a warning when a catalog search query contains multiple custom option values. Fix submitted by Eden Duong in pull request 23687. GitHub-23557
- The undefined variable in the
getStoreValuesForForm
method has been defined. Fix submitted by Ronak Parmar in pull request 23059. GitHub-23055
- Elasticsearch 6.x now works only with Elasticsearch 6.x clients on the storefront. Fix submitted by Pavel Bystritsky in pull request 24974. GitHub-24781
- Elasticsearch clients can now use SSL without enabling HTTP Auth. Fix submitted by Ihor Sviziev in pull request 24636. GitHub-22297
- Elasticsearch no longer creates a double index when Magento throws an exception when it saves an index as a cron job fails. Fix submitted by Vladislav Slesarenko in pull request 24552. GitHub-24550
Shipping
- The code for offline shipping methods has been optimized to remove redundant carrier codes. Fix submitted by Alexander Taranovsky in pull request 23144. GitHub-23143
- VAT ID is now included on the Shipping page of the checkout workflow as expected. Fix submitted by Eden Duong in pull request 24403. GitHub-24402
- The Back button on the Check Out with Multiple Addresses page now returns you to the correct page. Previously, clicking the Back button from this page returned a 404 error. Fix submitted by Max Souza in pull request 24827. GitHub-24701
- UPS Mail Innovations tracking now works as expected. Previously, Magento displayed this error:
Tracking information is currently not available. Please contact us for more information or email us at support@example.com
.
- Cart Price rules now work as expected for orders that are shipped to multiple addresses.
- Shipping notification emails sent to customers now contain a link to order tracking.
- Shipping calculations now load correctly from the shopping cart.
- You can now successfully re-order a configurable product when shipping the order to multiple addresses. Previously, Magento duplicated this product during re-order.
- Magento now displays the correct cost for shipping in the shopping cart when you return to the cart from the checkout page for an order being shipped to multiple addresses.
- You can now create a shipping label as expected. Previously, Magento displayed this error:
Cannot do shipment for the order","Invalid security or form key. Please refresh the page
.
- Magento now loads shipping methods as expected in the checkout workflow when running in Internet Explorer 11.x. Previously, when you tried to load shipping methods in the checkout workflow, Magento did not load these methods and displayed this error:
SCRIPT438: Object doesn't support property or method entries
. GitHub-22119
- Magento no longer displays Shipping Method: undefined - Fixed on the final page of the checkout workflow when a shipping method with an undefined or empty method name is selected. Fix submitted by wbeltranc in pull request 24265. GitHub-19853
- New order pages for orders that contain only virtual products no longer display a Shipping and Handling total. Fix submitted by Eden Duong in pull request 24213. GitHub-24212
- Validation logic has been added to the Sort Order field of Admin > Store > Configuration > Sales > Shipping methods. Fix submitted by Eden Duong in pull request 24296. GitHub-24295
- The
POST /V1/shipment/track
call now throws an error. GitHub-7760
Sitemap
- Magento no longer displays multiple success notifications when you click on the Save button on Marketing > Sitemap. Fix submitted by Bartłomiej Szubert in pull request 24482. GitHub-21610
- The path that you specify when creating a sitemap is no longer transferred to the beginning of the URL that is included in any sitemap-related error message. Fix submitted by Hailong in pull request 24675. GitHub-24623
- We’ve corrected several problems with image URLs in sitemap generation. Previously, sitemap image URLs had the wrong cache path, and image size was incorrect. Fix submitted by Krzysztof Daniel in pull request 24605. GitHub-4511, GitHub-4511, GitHub-24484
- We’ve corrected several problems with image URLs in sitemap generation. Previously, sitemap image URLs had the wrong cache path, and image size was incorrect. Fix submitted by Krzysztof Daniel in pull request 24605. GitHub-4511, GitHub-4511, GitHub-24484
Store
- Redirect URLs are no longer truncated after three slashes.
- Magento installation no longer fails with pre-defined stores in
app/etc/config.php
due to MySQL locks.
- CMS pages no longer redirect to the home page of the original store when you change store view in a multi-store deployment.
Swagger
- Swagger schemas no longer fail when the GET endpoint has parameters that contain extension attributes. Fix submitted by Oleksandr Kravchuk in pull request 24627 and 24117. GitHub-24626, GitHub-24116
Swatches
- Magento now displays selected swatch options for a configurable product when you edit that product from the shopping cart. Fix submitted by Rani Priya in pull request 24308. GitHub-24306
- You can now add options values to text swatch and visual swatch attributes using
POST V1/products/attributes/<attribute_code>/options
.
- Magento now loads product images as expected when you switch between product variations (for example, size or color).
- Magento now displays the correct “as low as” price on the storefront for a configurable product with multiple attributes that include a
color
attribute. Previously, Magento did not display the lowest price.
Tax
- Validation for maximum length has been added to Zip/Post Code field of the New Tax Rate page. Fix submitted by Eden Duong in pull request 23968. GitHub-23967
- Corrected inconsistent style on the messages displayed when you click the Validate VAT Number button on Stores > Configuration > General. Fix submitted by Eden Duong in pull request 23739. GitHub-23738
- Magento now correctly calculates VAT for products when you add them to the cart. Fix submitted by Bruno Roeder in pull request 24737. GitHub-23116
- You can now successfully save a fixed product tax (FPT) to a product that is assigned to a specific website.
- Inconsistent sorting of fixed product tax (FPT and tax totals has been resolved on the Admin order, create invoice, invoice, create credit memo, and credit memo pages. Fix submitted by Mahesh Singh in pull request 24663. GitHub-24225
Testing
- Integration tests have been added for ProductAlert Stock notifications. Fix submitted by Yurii in pull request 24291. GitHub-23279
Translation and locales
- Serbian Latin language support has been added to this release, and merchants can now distinguish between Latin and Cyrillic Serbian locales. Locales are now identified as Serbian (Cyrillic, Serbia) and Serbian (Latin, Serbia). Fix submitted by Bartłomiej Szubert in pull request 22293. GitHub-12256, GitHub-13263
- The Arabic Date Selector now shows the date in the correct format. Previously, when the site was set to Arabic (Saudi Arabia), the storefront date selector always displayed a date of
GGGG
.
- The country names on the checkout, shipping, and billing address forms are now translatable. Fix submitted by Bartłomiej Szubert in pull request 24179. GitHub-22956
UI
- Media gallery thumbnails are no longer stretched when images have a horizontal ratio. Previously, these images were pixelated on the product page. Fix submitted by Nick de Kleijn in pull request 23884. GitHub-23877
- The tax amount in sales order emails is now displayed before the row that displays the order’s grand total. Fix submitted by Nazar Klovanych in pull request 23406. GitHub-21768
- The Billing ZIP Code field on the Orders and Returns page now works as expected. Previously, it was not consistently visible. Fix submitted by Eden Duong in pull request 23747. GitHub-23746
- A missing header label has been added to the Admin > System > Integrations table. Fix submitted by Eden Duong in pull request 24097. GitHub-24096
- The New Key field is now marked as a required field with an asterisk when changing an encryption key on the Admin > System > Manage Encryption Key page. Fix submitted by Eden Duong in pull request 24099. GitHub-24098
- Corrected misspelling of “tier” (as in “tier price”) throughout the code base. Fix submitted by Sunil in pull request 24160. GitHub-23567
- Standardized the confirmation popup invoked from the Admin Add New Tax Rules page. Fix submitted by Eduard Chitoraga in pull request 24538. GitHub-24537
- The Suggested Terms drop-down text in Admin > Marketing > SEO & Search > Search Terms are now in camel case. Fix submitted by Eden Duong in pull request 24741. GitHub-24739
- Email previews are now fully responsive. Fix submitted by Brent Robert in pull request 24881. GitHub-23754
- You can now confirm changes to the structure of the category tree by either clicking the confirmation dialog OK button or using the Enter key on your keyboard. Previously, if you used the Enter key to confirm your changes, the UI reflected your change, but your changes were lost when you refreshed the page. Fix submitted by MaxRomanov4669 in pull request 24817. GitHub-24452
- Client validation has been added to shipment tracking numbers. Fix submitted by Eduard Chitoraga in pull request 24818. GitHub-24745
- Magento now displays checkout steps in the custom order that is set in
uiComponents SortOrder
. Fix submitted by Anuj Gupta in pull request 25015. GitHub-24652
- Removed a redundant asterisk on the Configure Product page. Fix submitted by Adarsh Manickam in pull request 25149. GitHub-25135
- Removed the box shadow that appeared when you clicked on a disabled swatch for a product on the storefront. Fix submitted by Adarsh Manickam in pull request 25145. GitHub-25144
- Magento now displays a pointer icon for the cursor when the cursor hovers over the Collapse All/Expand All button on Catalog > Category > Content Select from Gallery option. Fix submitted by Eden Duong in pull request 25109. GitHub-25108
- The Get Video Information button on the Product > Images and Videos > Add Video page now responds as expected. Fix submitted by Eduard Chitoraga in pull request 25090. GitHub-25088
- The storefront now reflects height settings for conditions that are added to Terms and Conditions (Store > Terms and Conditions > Add New Condition). Previously, you could set a value for height when creating a condition, but the storefront did not apply this setting. Fix submitted by Rahul Mahto in pull request 25168. GitHub-25167
- The Edit Attribute Set Name label was corrected to Attribute Set Information on Admin > Store > Attribute Set > New Attribute Set. Fix submitted by Eden Duong in pull request 24148. GitHub-24147
- Corrected issue with highlighting on the storefront sales order page. Fix submitted by Rani Priya in pull request 24396. GitHub-24395
- Corrected multiple misspellings throughout the Admin and corrected a comment in the Admin that was not translatable. Fix submitted by Bruno Roeder in pull request 24832. GitHub-22169, GitHub-24721
- You can now use
@submenu-desktop__padding
to override the padding in the.lib-main-navigation-desktop
mixin by using@submenu-desktop__padding
. Fix submitted by Mahesh Singh in pull request 25176. GitHub-23170
- The performance of the accordion widget has been improved. Previously, when you clicked to open a closed element, the currently open element closed instantaneously without a transition. Fix submitted by Gabriel da Gama in pull request 24994. GitHub-24807
- Corrected misalignment of page elements on the minicart checkout page when the cart contains a configurable product. Fix submitted by Arvinda Kumar in pull request 25368. GitHub-25366
- The tooltip associated with the Product Additional Options field for the order on the customer dashboard is now fully visible. Fix submitted by Torben Höhn in pull request 25393. GitHub-25392
- The Credit Memo page now has an Update Totals button as expected.
- You can now filter orders by date in stores running the
en_GB
locale.
- Checkboxes that occur within widgets are now fully clickable in the Admin.
- Redundant attributes that were present in the CMS widget body have been removed.
- UI components configuration has been corrected to eliminate potential for overlapping text labels.
- The weight attribute label is now displayed for attributes in attribute sets.
- Corrected issues with the Admin > Marketing > User Contents > Reviews Created date display. Fix submitted by Syed Imtiyaz Hasan in pull request 23699. GitHub-23575
- The current tab is now marked as active as expected in the customer account sidebar. Fix submitted by Eden Duong in pull request 24078. GitHub-24068
bin/magento app:config:import
andbin/magento setup:upgrade
no longer fail due to aTEXT
field limitation fromflag_data
in the flag table. Theflag_data
field has been increased toMEDIUMTEXT
(accepting 16MB). Fix submitted by Andreas Schrammel in pull request 13580. GitHub-11657
- The Unselect all text string is no longer appended to the
HTML
element of the Compare icon on the product details page when you click this icon. Fix submitted by Shankar Konar in pull request 23774. GitHub-23705
- Clicking on the Visibility header on Admin > Marketing > All Reviews or Pending Review now disables the sort ability as expected. Fix submitted by Eden Duong in pull request 24106. GitHub-24105
- The Action column is now the last column of the Admin > Content > Configuration grid. Fix submitted by Eden Duong in pull request 24140. GitHub-24139
- Validation logic has been added to the required fields on Admin > Content > Widget > Add Widget. Fix submitted by Eden Duong in pull requests 24155 and 24163. GitHub-24154
- You can now perform bulk delete operations on widgets in Admin > Content > Widgets. Fix submitted by Burlacu Vasilii in pull request 20765. GitHub-20764
- The Admin navigation sidebar menu now has toggle functionality for opening and closing menu items. Fix submitted by Sudheer Kumar Gajjala in pull request 24211. GitHub-24210
- The TinyMCE editor now saves content with inline style tags as expected. Fix submitted by gwharton in pull request 24114. GitHub-22867
- Merchants can now use virtual configurable variants to assign a weight to a virtual product. Fix submitted by Arushi Bansal in pull request 24013. GitHub-23977
URL rewrites
- We have reverted the following fix, which was included in 2.3.3, because it changed expected system behavior: “Magento no longer removes the query string from URLs when the query string is preceded by a slash. Previously, when a customer opened a URL that contained a trailing slash and query string (for example, http://magento.host.com/sample-url-key/?cupcakes), Magento redirected the user to a URL that omitted the slash (http://magento.host.com/sample-url-key)”.
- Magento now populates the
url_rewrite
table with the new product URL rewrite when you create a new product when single-store mode is enabled. Previously, Magento did not generate a user-friendly URL upon the creation of products when single-store mode was enabled.
- URL rewrites are no longer lost if an exception is thrown or a deadlock occurs during URL regeneration. Previously, when exceptions or deadlocks occurred, URLs were not regenerated, and Magento displayed 404 pages. Fix submitted by Stanislav Ilnytskyi in pull request 23430. GitHub-23429
- CMS pages now redirect correctly after you change the store view.
- A category schedule update no longer unchecks the Use default value setting on the URL key for the store view.
- The performance of MySQL queries on
url_rewrite
operations has been improved. Previously, Magento ran a full scan of the table, and the query was very slow.
CatalogURLRewrite
no longer generates an extra product URL during product creation.
- Magento now correctly stores the attribute
url_path
for non-default stores. Fix submitted by Dmytro Androshchuk in pull request 25143. GitHub-25120
- The following reserved keywords cannot be used as URL keys:
admin
,soap
,rest
,graphql
, and any custom Admin path.
Web API framework
- When you use a call such as
POST V1/carts/mine/items
to add a product to a cart but do not include thequote_id
parameter, Magento now returns a400 Bad Request
error as expected. Previously, Magento generated a404 Not Found
error.
- Added the Stores > Settings > Configuration > General > Currency Setup > Currency Converter API > API Key field to enable currency rate retrievals from http://free.currencyconverterapi.com. Fix submitted by Eden Duong in pull request 24008. GitHub-24007
- You can now set expiration times for REST API Auth tokens in minutes and seconds. Previously, expiration times were defined in hours only. Fix submitted by Ivan Koliadynskyy in pull request 24769. GitHub-24716
- The
GET V1/attributeMetadata/customerAddress/attribute/prefi
x andGET V1/attributeMetadata/customerAddress/attribute/suffix
calls now return options as expected. Fix submitted by Eden Duong in pull request 24519. GitHub-24518
Wishlist
- Wishlists now display values for product custom file types. Fix submitted by Rani Priya in pull request 24320. GitHub-24319
- Verification logic has been added to the wishlist so that it reflects accurate stock status of listed products. Fix submitted by Rus0 in pull request 24300. GitHub-21519
- Magento no longer displays a JavaScript error when you try to remove an item from a wishlist. Previously, Magento removed the Item from the wishlist but displayed a JavaScript error in the console.
- Wishlist SKU counts now reflect the actual products listed. Previously, the SKU count was incorrect after a product was disabled.
- Products that are deleted from a wishlist from the Admin are now deleted from the storefront wishlist, too.
- The Admin wishlist display now lists the correct configurable products for all wishlists no matter which stores the wishlists were assigned to. Previously, wishlists viewed from the Admin displayed only products that belonged to the default website.
WYSIWYG
- The Admin WYSIWYG editor no longer hangs when an image upload dialog opens. Previously, Magento displayed the spinner cursor until you refreshed the page. Fix submitted by Pavel Bystritsky in pull request 24333. GitHub-23966
- You can now open the Media Gallery without error. Previously, when you tried to open the Media gallery, Magento displayed the spinner icon on Media Gallery popup.
- You can now upload a video from the WYSIWYG editor.
- The WYSIWYG editor now saves quotation marks correctly. Previously, quotation marks were converted to
"
.
Known issue
This release introduces an enhancement to the invalidation logic for customer data sections that is not compatible with pre-2.3.4 deployments. You can no longer invalidate custom customer sections in etc/frontend/sections.xml
files by declaring an action node without specifying any related sections. See Magento 2.3 backward incompatible changes for a discussion of this change.
Community contributions
We are grateful to the wider Magento community and would like to acknowledge their contributions to this release. Check out the following ways you can learn about the community contributions to our current releases:
-
If a community member has provided a fix for this release, we identify the fix in the Fixed Issue section of these notes with the phrase, “Fix provided by community member @member_name”.
-
The Magento Community Engineering team Magento Contributors maintains a list of top contributing individuals and partners by month, quarter, and year. From that Contributors page, you can follow links to their merged PRs on GitHub.
Partner contributions
The following table highlights contributions made by Partners. This table lists the Partner who contributed the pull request, the external pull request, and the GitHub issue number associated with it (if available).
Individual contributor contributions
The following table identifies contributions from our community members. This table lists the external pull requests, the GitHub issue number associated with it (if available), and the community member who contributed the pull request.
Contributing community member | Pull Requests | Related GitHub Issues |
---|---|---|
Jacob Brown | 23428 | |
Eden Duong | 23723 | 23721 |
Mr Khoa | 23772 | |
Eden Duong | 23817 | 23805 |
Alexander Taranovsky | 23868 | |
Denis Kopylov | 23871 | 23863 |
Ravi Chandra | 23882 | |
Eden Duong | 23896 | 23895 |
Eden Duong | 23939 | |
Hailong | 21831 | |
Nick de Kleijn | 23884 | 23877 |
Eden Duong | 23968 | 23967 |
Will Palmer | 23988 | 23987 |
Pieter Hoste | 24005 | 1453 |
Eden Duong | 24039 | 24038 |
Eden Duong | 24041 | 24040 |
Alexander Shkurko | 23792 | |
Vitaliy | 23859 | |
kcnariya | 23898 | 23897 |
Rani Priya | 23902 | 23886 |
gwharton | 23913 | 23911 |
Eden Duong | 23943 | 23940 |
kcnariya | 23983 | 23982 |
Alexander Menk | 18624 | |
Nadim Qureshi | 20431 | 20377 |
Stijn Bernards | 23725 | |
Eden Duong | 23801 | 23800 |
Eden Duong | 23926 | |
Aapo Kiiso | 23283 | |
Nazar Klovanych | 23406 | 21768 |
Eden Duong | 23781 | 23778 |
Arushi Bansal | 24013 | 23977 |
Eden Duong | 24079 | 24058 |
Syed Imtiyaz Hasan | 23699 | 23575 |
Eden Duong | 23747 | 23746 |
Eden Duong | 23925 | 23924 |
Eden Duong | 23985 | 23984 |
KrielkipNL | 24028 | 24027 |
Thomas Klein | 23576 | |
Eden Duong | 23839 | 18685 |
Eden Duong | 23954 | 23953 |
Anshu Mishra | 24081 | |
Alexander Taranovsky | 23144 | 23143 |
Sunil | 23533 | 23516 |
Eden Duong | 23684 | 23646 |
Eden Duong | 23739 | 23738 |
Dmitry Shevtsov | 24036 | |
Dmitry Shevtsov | 24076 | |
gwharton | 24088 | 23936 |
Cristian Pini | 24086 | |
Eden Duong | 24097 | 24096 |
Eden Duong | 24099 | 24098 |
Eden Duong | 24101 | 24100 |
kcnariya | 23856 | 23852 |
Denis Kopylov | 23862 | |
Eden Duong | 24000 | 23999 |
Pascal Brouwers | 24044 | 24043 |
Raul E Watson | 24129 | |
Eden Duong | 24138 | 24137 |
Eden Duong | 23687 | 23557 |
Eden Duong | 23698 | 23697 |
Eden Duong | 24078 | 24068 |
Eden Duong | 24119 | 24118 |
Andreas Schrammel | 13580 | 11657 |
Stanislav Ilnytskyi | 23430 | 23429 |
Sunil | 23716 | 23706 |
Oleksandr Kravchuk | 23762 | |
Eden Duong | 24008 | 24007 |
maslii | 24142 | |
Raul E Watson | 24145 | |
Raul E Watson | 24146 | |
Teun Lassche | 20877 | |
Eden Duong | 23690 | 23634 |
Shankar Konar | 23774 | 23705 |
Artem Voloznov | 24049 | 24012 |
Eden Duong | 24106 | 24105 |
Eden Duong | 24140 | 24139 |
Jose Luis Narváez | 21064 | |
Eden Duong | 23737 | 23729 |
Rick Kuilman | 23867 | |
Lukasz Bajsarowicz | 23894 | |
Pieter Hoste | 24001 | 23619 |
Renon Stewart | 24054 | 22338 |
gwharton | 24114 | 22867 |
Ronak Parmar | 23059 | 23055 |
Bartłomiej Szubert | 24109 | |
Malyovanets Nickolas | 24111 | |
Oleksandr Kravchuk | 24117 | 24116 |
Alexander Taranovsky | 23848 | 23847 |
Eden Duong | 23693 | 23359 |
Sergey Solo | 23918 | 5901 |
Eden Duong | 24083 | 24082 |
Oleksii Lisovyi | 24121 | 22525, 22528 |
Eden Duong | 24155 | 24154 |
Ihor Sviziev | 24150 | |
Eden Duong | 24165 | 24164 |
Eden Duong | 24167 | |
Eden Duong | 24171 | |
Eden Duong | 24170 | 24169 |
Eden Duong | 24173 | 24172 |
Raul E Watson | 24177 | |
Raul E Watson | 24178 | |
Bartłomiej Szubert | 24179 | 22956 |
Sunil | 24158 | |
Burlacu Vasilii | 21798 | 5023 |
Geeta Modi | 23253 | |
Rafael Kassner | 23372 | |
Sergey Solo | 23820 | 3993 |
websnap | 24072 | |
p-bystritsky | 20577 | 19230 |
Stanislav Idolov | 23621 | |
Eden Duong | 24016 | 24015 |
Eden Duong | 24163 | 24162 |
Eden Duong | 24174 | |
Raul E Watson | 24176 | |
Eden Duong | 24182 | |
Andrii Lugovyi | 24195 | |
Eden Duong | 24205 | 24204 |
Dmitry Shevtsov | 24226 | |
Diego Cabrejas | 23300 | 22769 |
Nicolas Medina | 24244 | |
Raul E Watson | 24280 | |
Vincent Marmiesse | 22003 | |
Ihor Sviziev | 23325 | 23324 |
Eden Duong | 24017 | |
Eden Duong | 24104 | 24102 |
Luke Rodgers | 18678 | |
semajeg | 23369 | 16382 |
Eden Duong | 24242 | 24241 |
Eden Duong | 24249 | 24248 |
KrielkipNL | 24252 | 24251 |
Tomash Khamlai | 24253 | |
wbeltranc | 24265 | 19853 |
Raul E Watson | 24278 | |
Raul E Watson | 24326 | |
Raul E Watson | 24328 | |
Raul E Watson | 24327 | |
Ravi Chandra | 24341 | |
Burlacu Vasilii | 20765 | 20764 |
Hailong | 22810 | |
Sankalp Shekhar | 23085 | |
Thomas Klein | 23818 | |
Alexander Taranovsky | 24187 | 10040, 24186 |
Scott Buchanan | 24193 | |
Eden Duong | 24213 | 24212 |
Rani Priya | 24237 | 24236 |
Eden Duong | 24294 | 24293 |
Rani Priya | 24240 | 24239 |
Sudheer Kumar Gajjala | 24211 | 24210 |
Eden Duong | 24272 | |
Raul E Watson | 24276 | |
Eden Duong | 24296 | 24295 |
kickDominic | 23764 | |
Eden Duong | 24283 | |
Alexander Taranovsky | 24285 | |
Eden Duong | 24313 | 24302, 24304, 24307, 24312 |
Alexander Taranovsky | 24331 | 24330 |
Ravi Chandra | 24369 | |
Ravi Chandra | 22478 | 11292 |
Shankar Konar | 23600 | 19921 |
Eden Duong | 24148 | 24147 |
Geeta Modi | 24254 | 21450 |
Eden Duong | 24286 | |
ochnygosch | 24367 | 24362 |
Rani Priya | 24396 | 24395 |
Tjitse | 24406 | |
Alexander Taranovsky | 24420 | 5246 |
latenight | 22123 | 22490 |
Hailong | 22182 | 22183 |
Tan Sezer | 23021 | 22928 |
kristiancharb | 24053 | 23042 |
Bartłomiej Szubert | 24255 | 7200 |
Jason Sylvester | 24324 | 8037, 24323 |
Eden Duong | 24403 | 24402 |
Eden Duong | 24425 | 24419 |
Navarr Barnier | 22996 | |
Jeroen Van Leusden | 23819 | |
Sankalp Shekhar | 24093 | |
Eden Duong | 24282 | |
Sergey Solo | 24336 | 2228 |
Ravi Chandra | 24358 | |
Eden Duong | 24397 | 24387 |
Eduard Chitoraga | 24434 | |
Eduard Chitoraga | 24437 | 24436 |
Alexander Taranovsky | 24447 | |
Sunil | 24160 | 23567 |
Rani Priya | 24308 | 24306 |
Shankar Konar | 24318 | 23990 |
Nagamaiah K | 24359 | 24152 |
Eden Duong | 24399 | 24310 |
Eden Duong | 24449 | 24440 |
Shankar Konar | 24451 | 24441 |
Alexander Taranovsky | 24489 | 5246 |
Maksym Novik | 21424 | 16852 |
Arushi Bansal | 24077 | 23890 |
Eden Duong | 24274 | |
Gustavo Vicente Dauer | 24380 | 24366 |
Oskar Olaussen | 24457 | |
iGerchak | 24467 | |
Leland Clemmons | 24476 | |
Ravi Chandra | 24478 | |
Aapo Kiiso | 24461 | |
Pieter Hoste | 24477 | |
Bartłomiej Szubert | 24482 | 21610 |
prabhatrawat-webkul | 24501 | 23205 |
Ashutosh Srivastva | 24502 | 24410 |
Rani Priya | 24510 | 24509 |
Eden Duong | 24514 | |
Ihor Sviziev | 22886 | 22880 |
Rani Priya | 24320 | 24319 |
Denis Solovyov | 24392 | 24349 |
Sunil | 24411 | 24409 |
Mahesh Singh | 24497 | 24031 |
Eduard Chitoraga | 24516 | |
Eduard Chitoraga | 24538 | 24537 |
Eden Duong | 24499 | 21499, 24491 |
Eden Duong | 24519 | 24518 |
Raul E Watson | 24279 | |
William Johnston | 24534 | |
Ravi Chandra | 24549 | |
Mathew Beane | 24559 | 24558 |
Pieter Hoste | 24506 | 4506, 13558, 14357 |
Alexander Taranovsky | 24340 | |
p-bystritsky | 24333 | 23966 |
Eden Duong | 24183 | |
Raul E Watson | 24613 | |
Raul E Watson | 24614 | |
Alexandre Thurow | 24589 | 23473 |
Ravi Chandra | 24577 | |
Raul E Watson | 24277 | |
Eden Duong | 24643 | 24642 |
Oleksandr Kravchuk | 24627 | 24626 |
Anton | 24622 | 24618 |
Krzysztof Daniel | 24605 | 4511, 5321, 24484 |
Rani Priya | 24580 | 24579 |
Hailong | 24530 | |
Rus0 | 24300 | 21519 |
Torben Höhn | 24270 | |
Ravi Chandra | 24089 | |
Raul E Watson | 24679 | |
Hailong | 24675 | 24623 |
Patrick Schnell | 24638 | |
Vinicius Rafael Dziuba | 24602 | 24511 |
Max Souza | 24595 | 3594 |
Bruno Roeder | 24590 | 23846 |
Rani Priya | 24431 | 24430 |
Yurii | 24291 | 23279 |
Adarsh Manickam | 24661 | 24646 |
Malyovanets Nickolas | 24655 | |
Bartłomiej Szubert | 24665 | |
Rani Priya | 24634 | 24633 |
Vinai Kopp | 24153 | |
David Verholen | 24030 | 24025 |
vahir2016 | 23767 | |
Pieter Hoste | 24703 | 13126, 14112 |
Yupik | 24694 | 23880 |
Adarsh Manickam | 24674 | |
Alexander Taranovsky | 24645 | |
utietze | 24542 | |
Jamie Saunders | 23827 | 23824 |
Eden Duong | 24741 | 24739 |
p-bystritsky | 24734 | 24043, 24678 |
Ravi Chandra | 24728 | |
Roman Kis | 24783 | 23295 |
Adarsh Manickam | 24761 | 24740 |
Alexander Taranovsky | 24754 | |
Ivan Koliadynskyy | 24755 | 13218 |
Ravi Chandra | 24753 | |
Vinai Kopp | 22228 | |
p-bystritsky | 20181 | 15775 |
Lukasz Bajsarowicz | 23200 | |
Adarsh Manickam | 24804 | 24803 |
Ravi Chandra | 24790 | |
Adarsh Manickam | 24773 | 24708 |
Artem Voloznov | 24720 | 24718 |
Raul E Watson | 24680 | |
KaushikChavda | 24682 | 24581 |
LucasCalazans | 24597 | 23460 |
Bruce | 24415 | 24414 |
Bartłomiej Szubert | 22293 | 12256, 13263 |
YevheniiKR | 24891 | |
Daniel Ruf | 24890 | |
Gabriel Caruso | 24885 | |
Gabriel Caruso | 24872 | |
Archit | 24864 | |
p-bystritsky | 24858 | |
Alex | 24853 | |
Daniel Ruf | 24851 | |
Daniel Ruf | 24848 | |
Adarsh Manickam | 24845 | 24779 |
Adarsh Manickam] | 24835 | |
Eduard Chitoraga | 24829 | |
Mahesh Singh | 24831 | 24722 |
Andrey Legayev | 24828 | |
Max Souza | 24827 | 24701 |
Valerii Naida | 24792 | |
Ivan Koliadynskyy | 24769 | 24716 |
federeggiani | 24659 | 14240 |
Thomas Klein | 23452 | 23451 |
Bartłomiej Szubert | 24927 | 24710 |
Adarsh Manickam | 24913 | 12855 |
Brent Robert | 24907 | 24903 |
elvinristi | 24906 | 24902 |
Daniel Ruf | 24884 | |
Brent Robert | 24881 | 23754 |
Daniel Ruf | 24888 | |
Daniel Ruf | 24883 | |
Daniel Ruf | 24867 | |
Daniel Ruf | 24852 | |
Daniel Ruf | 24850 | |
Bruno Roeder | 24832 | 22169, 24721 |
MaxRomanov4669 | 24817 | 24452 |
Volodymyr Zaets | 25049 | |
Serhii Dzhepa | 24966 | |
Mahesh Singh | 24973 | 24964 |
Tomash Khamlai | 24943 | |
Andrey Legayev | 24904 | |
Andrey Legayev | 24900 | |
Fooman Kristof | 24855 | |
Bartłomiej Szubert | 24833 | 22747 |
Eduard Chitoraga | 24818 | 24745 |
Adarsh Manickam | 24800 | 24785 |
Sergiy Vasiutynskyi | 24746 | 23627 |
Bruno Roeder | 24737 | 23116 |
George Babarus | 24692 | |
Tiago de Oliveira Castro Teixeira Pinto | 24588 | 22692 |
Eduard Chitoraga | 25094 | |
Eden Duong | 25102 | 25101 |
Eden Duong | 25085 | 25072 |
Gaurav Agarwal | 25022 | 24840 |
p-bystritsky | 24974 | 24781 |
Gabriel Caruso | 24870 | |
Thomas Klein | 24405 | 12371 |
Namrata | 25064 | |
Eden Duong | 25034 | 25033 |
Leandro F. L. | 25024 | |
Gaurav Agarwal | 24981 | |
Ivan Koliadynskyy | 24959 | 23577 |
Andrey Legayev | 24898 | |
Andrey Legayev | 24899 | |
Oleksii Lisovyi | 24345 | 12560 |
Anuj Gupta | 25015 | 24652 |
Vinai Kopp | 24983 | |
Ronak Patel | 24988 | |
Jeroen Van Leusden | 24975 | |
Alexander Lukyanov | 24969 | 23465 |
Eduard Chitoraga | 24954 | 24311 |
Andrey Legayev | 24901 | |
Roman | 24866 | |
Mykola Orlenko | 24810 | |
Andrey Legayev | 24686 | |
Andrey Legayev | 24677 | |
adrian-martinez-interactiv4 | 24556 | |
Alexander Taranovsky | 24197 | |
Shubham-Webkul | 25200 | 20502 |
Mahesh Singh | 25176 | 23170 |
Daniel Ruf | 25169 | |
Daniel Ruf | 25170 | |
Andrey Legayev | 25164 | |
Pieter Hoste | 25160 | |
Adarsh Manickam | 25149 | 25135 |
Adarsh Manickam | 25145 | 25144 |
Tomash Khamlai | 25134 | |
Eden Duong | 25132 | |
Eden Duong | 25109 | 25108 |
bradleyfrye | 25100 | |
Eduard Chitoraga | 25090 | 25088 |
Eden Duong | 25058 | 25057 |
Gaurav Agarwal | 25051 | 25039 |
Andrey Legayev | 24905 | |
Timon de Groot | 24896 | 22346 |
adrian-martinez-interactiv4 | 24892 | 17634 |
Gabriel Caruso | 24871 | |
Bartłomiej Szubert | 24814 | 13278 |
Adarsh Manickam | 24714 | 24646 |
korostii | 25265 | 23031 |
Eduard Chitoraga | 25251 | |
Arvinda Kumar | 25241 | 25240 |
Mateusz Krzeszowiak | 25233 | 25231 |
Arvinda Kumar | 25208 | 25207 |
Adarsh Manickam | 25206 | 25137 |
Rahul Mahto | 25168 | 25167 |
Alexandr Skrashuk | 25055 | 24726 |
Eden Duong | 25037 | 25036 |
Adarsh Manickam | 24918 | |
Laura Folco | 24875 | 24483 |
Ivan Koliadynskyy | 24862 | 24808 |
Eden Duong | 25331 | |
Eden Duong | 25329 | |
Cristian Sanclemente | 25317 | 23920 |
Eden Duong | 25305 | |
Eden Duong | 25298 | |
Eden Duong | 25290 | |
Eden Duong | 25286 | |
Adarsh Manickam | 25283 | |
Mahesh Singh | 25273 | |
Alexander Taranovsky | 25248 | |
Christos Stergianos | 25184 | 21592 |
Ihor Sviziev | 24636 | 22297 |
Eden Duong | 25340 | |
Eden Duong | 25327 | |
Pieter Hoste | 25316 | |
Eden Duong | 25257 | |
Andrey Legayev | 25223 | 25343 |
Dmytro Androshchuk | 25143 | 25120 |
Eden Duong | 25061 | 25060 |
Eden Duong | 25361 | |
Mateusz Krzeszowiak | 25336 | 23382 |
Rodrigo Mourão | 25318 | |
Pieter Hoste | 25296 | |
Adarsh Manickam | 25281 | |
Adarsh Manickam | 25264 | |
Eden Duong | 25152 | 25148 |
korostii | 24947 | 24019 |
Malyovanets Nickolas | 25398 | 13561 |
Tomash Khamlai | 25466 | 25468 |
Mateusz Krzeszowiak | 25443 | 25429 |
Mateusz Krzeszowiak | 25435 | 9671 |
Eden Duong | 25422 | |
Torben Höhn | 25393 | 25392 |
Eduard Chitoraga | 25382 | |
Arvinda Kumar | 25368 | 25366 |
Anton Kaplya | 25357 | 25294 |
Pieter Hoste | 25307 | 23411, 24009 |
Tjitse | 25289 | 21904 |
Vova Yatsyuk | 25204 | |
Gabriel da Gama | 24994 | 24807 |
skylineop | 24771 | 15959 |
Mahesh Singh | 24663 | 24225 |
Vladislav Slesarenko | 24552 | 24550 |
Sergii Ivashchenko | 25459 | |
Sergii Ivashchenko | 25464 |
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.3.4 using Composer.
Migration toolkits
The Data Migration Tool helps transfer existing Magento 1.x store data to Magento 2.x. This command-line interface includes verification, progress tracking, logging, and testing functions. For installation instructions, see Install the Data Migration Tool. Consider exploring or contributing to the Magento Data Migration repository.
The Code Migration Toolkit helps transfer existing Magento 1.x store extensions and customizations to Magento 2.x. The command-line interface includes scripts for converting Magento 1.x modules and layouts.