Magento Commerce 2.3.1 Release Notes
Release notes published on March 26, 2019 and last edited on June 3, 2020.
We are pleased to present Magento Commerce 2.3.1. This release includes over 200 functional fixes to the core product, over 500 pull requests contributed by the community, and over 30 security enhancements.
This release includes significant contributions from our community members. These contributions range from minor clean-up of core code to the development of substantial features such as Inventory Management and GraphQL. Although code for these features is bundled with quarterly releases of the Magento core code, several of these projects (for example, Page Builder and Progressive Web Applications (PWA) Studio) are also released independently. Bug fixes for these projects are not documented in these core release notes but in separate project-specific sets of notes.
Apply updated hot fix for CVE-2019-8118
The patch addresses an issue with CVE-2019-8118 that was included in Magento 2.3.3 and 2.2.10. While the original fix for that bug stopped the logging of failed login attempts, information collected prior to updating to these current versions may still exist, and previous, unpatched versions of Magento may still have this issue. This hotfix includes both a patch (first released in Oct 2019) that stops the logging of failed login attempts and a new script that clears the login attempts that were previously collected. We recommend that all merchants download and apply this patch and download and run the clean-up script. See Remove failed login attempts from the database for information on how to download and run the patch and clean-up script.
Apply patch PRODSECBUG-2233 to address critical remote code execution vulnerability (RCE)
An unauthenticated cross-site scripting vulnerability combined with an authenticated Phar deserialization vulnerability has left this version of Magento Commerce open to serious exploit. An attacker can use these vulnerabilities to inject JavaScript into the Magento Admin and subsequently launch malicious code in a store user’s browser. We strongly recommend that all users of the affected versions of Magento download and apply the appropriate patch as soon as possible.
This issue and the available patches are discussed in the Extending the June 25 Security Update to Older Versions of Magento blog post. You can directly access patch code through your Magento account for Magento Commerce. Locate the patch by the name. We provide both Git-based and Composer-based patches.
Apply the Scope parameter for Async/Bulk API patch to address an issue with the Async/Bulk REST API
In certain versions of Magento Open Source and Magento Commerce, the Asynchronous and Bulk REST endpoints support the default store view scope only. After this patch is applied to deployments running those versions of Magento, the current Magento message queue implementation will factor in the store that executes queue operations. See Patch for Magento Framework Message Queue and Store Scopes for a full discussion of this scope-related issue and patch contents. See Applying patches for specific instructions on downloading and applying Magento patches. To apply the patch, navigate to the Magento Security Center, and select the patch associated with the version of Magento you are running.
Apply the PRODSECBUG-2198 patch to address critical SQL injection vulnerability
A critical SQL injection vulnerability has been identified in 2.3.x Magento code. A fix for this issue is included in Magento 2.3.1. If you cannot immediately apply the full patch, you can quickly protect your store from this vulnerability by installing patch PRODSECBUG-2198. However, we strongly encourage all merchants to stay up-to-date on security patches. See the description of PRODSECBUG-2198 in the Magento Security Center for information on this vulnerability.
Follow these steps to download and apply this patch:
- Access My Account.
- Navigate to the Downloads tab. Select the Magento edition and version you need.
- Select Support Patches and Security Patches, then PRODSECBUG-2198.
- Download the patch and upload to a specific directory in your Magento installation such as
m2-hotfixes
(confirm that the directory is not accessible publicly). - From your project root, apply the patch.
git apply ./m2-hotfixes/<patch-file-name>
. - Refresh the cache from the Admin (System > Cache Management).
PayPal Payflow Pro active carding activity update
The PayPal Payflow Pro integration in Magento is being actively targeted by carding activity. To resolve these carding activity issues, Magento has provided Composer packages that add an option for Google reCAPTCHA and CAPTCHA to the Payflow Pro checkout form. See PayPal Payflow Pro active carding activity for a full discussion of this issue and instructions on downloading these packages. We strongly recommend that all Payflow Pro merchants download and install these packages to help enhance the security of their storefronts.
Apply the Admin Dashboard Image-Charts patch to address deprecation of Google Image Charts
Magento 2.x currently uses Google Image Charts to render static charts in Admin dashboards. Google stopped supporting Google Image Charts on March 14, 2019, and Magento is providing the Admin Dashboard Image-Charts patch to replace Google Image Charts with the Image-Charts free service. Users of Magento 2.x deployments will not be able to view static charts in Magento 2.x instances unless they download and apply this patch.
See Switch from deprecated Google Image Charts to Image-Charts for Magento for information on downloading and applying this patch.
Highlights
Look for the following highlights in this release:
Merchant tool enhancements
Page Builder
Page Builder is a drag-and-drop visual content editing tool that lets merchants customize content page layout and create shopping experiences that blend content and commerce without writing HTML or CSS. Page Builder provides merchants with a powerful set of content types to compose various types of pages and easy drag-and-drop positioning of all content elements for intuitive page editing. Page Builder is available on Magento Commerce only. See Page Builder User Guide and Page Builder Developer Documentation.
Improved order creation workflow in the Admin
The Admin order creation workflow has been refactored to eliminate delays when editing billing and shipping addresses. Processing of these fields now happens only after they are populated.
Ability to upload PDP images without compression and downsizing
Merchants can now upload PDP images larger than 1920 x 1200 without first compressing and downsizing the images. Previously, when a merchant uploaded a high quality product image (larger than 1920 x 1200), Magento resized and compressed the image. Merchants can now set requirements for resizing and compression as well as compression quality and target width and height.
Inventory Management 1.1.0 (Community-developed feature!)
The Magento Inventory (was MSI) community project has added multiple new features to this release of Inventory Management. See Inventory Management Release Notes for information about specific fixes and acknowledgements to community contributors.
-
Support for Elasticsearch and Inventory Management. All site searches now return correct products and quantities when Elasticsearch is used as the search engine. (As of this release, only default option from 2.3+) Searches return results from stock assigned to the website. Advanced features are supported, including filtering search results. Community-developed feature!
-
Distance Priority Source Selection algorithm (SSA) option. Merchants can enable this algorithm to reduce fulfillment costs by shipping orders from the closest inventory locations. This SSA option uses address geocoding through the Google Maps API to calculate the shortest distance for deliveries. See Manage source selection algorithms.
-
Enhancements to mass inventory transfers. Bulk transfer of inventory has been optimized to improve processing speed and to reduce locking during transfers.
Improved developer experience
Progressive Web Apps (PWA) Studio
PWA Studio is a set of developer tools that allow you to develop, deploy, and maintain a PWA storefront on top of Magento 2.x. See Magento PWA Documentation.
GraphQL
Community contributions for this release include major additions to cart actions (create cart, populate cart, set shipping address) and customers (create customer account). See Release Notes for information about specific fixes and acknowledgements to community contributors.
Substantial security enhancements
This release includes over 30 security enhancements that help close cross-site scripting, arbitrary code execution, and sensitive data disclosure vulnerabilities as well as other security issues. 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. See Magento Security Center for a comprehensive discussion of these issues. All exploitable security issues fixed in this release (2.3.1) have been ported to 2.2.8, 2.1.17, 1.14.4.1, and 1.9.4.1, as appropriate.
Performance boosts
Magento now supports customer accounts with more than 3,000 addresses. B2B merchants should note the multiple code enhancements that contribute to this performance boost:
-
Customer address handling has been rewritten with UI components that increase platform performance, which in turn streamlines the management of customers with 3000 and more addresses.
-
The Admin order creation page now handles customer accounts with 3000 addresses without performance issues.
-
Magento now displays the list of additional customer addresses contained in the storefront customer address book as a grid, which has improved performance for customers with many additional addresses associated with their accounts. Address Book describes how to use this enhanced feature.
-
The shipping and billing data that a user enters during checkout now persists if the user interrupts checkout to continue shopping. Previously, checkout data was deleted after a cart update.
Infrastructure improvements
Infrastructure improvements are core enhancements that underlie both merchant and developer features.
-
This release includes a new Authorizenet extension to replace the Authorizenet Direct Post module, which implemented an MD5-based hash that Authorize.Net will no longer support as of June 28, 2019. See Authorize.Net for information on configuring and using this new extension. Information about the deprecation of Authorize.Net Direct Post can be found here. Note that Magento released a patch in late February to address this issue on pre-2.3.1 installations of Magento, which is discussed in Update Authorize.Net Direct Post from MD5 to SHA-512.
-
Accept.js
library is now used for Authorize.Net payments. -
Magento now supports Elasticsearch 6.x. Fix submitted by community member Romain Ruaud in pull request 21458. Thank you, Romain!
-
Update PayPal Express Checkout to
checkout.js v4
. This introduces a modernized checkout flow, faster checkout performance, and new payment options in a single integration that does not have to be updated as new payment methods become available. It also unlocks new payment options including Venmo and PayPal Credit. See PayPal Express Checkout. -
Magento now supports Redis 5.0.
-
Magento support for PHP has changed slightly as a result of expanding our Elasticsearch support in this release. Magento 2.3.1 is compatible with PHP 7.2.x and certified on PHP 7.2.11.
-
You can now isolate and extract MySQL Views from regular database tables with no negative effects on database backup and restoration. Support for MySQL Views was introduced in 2.3.0 with unexpected consequences to the default database backups and restore mechanism. This fix restores expected backup and restore functionality while preserving MySQL View support the backward compatibility with legacy inventory. Fix submitted by community member Stepan Furman in pull request 21151. Thank you, Stepan!
-
Magento now uses version 6.0 of the DHL XML Services schema for the DHL shipping method.
-
Checkout information now persists after a cart update**. Information previously entered by a customer during check out (such as shipping address) now persists after the customer updates their shopping cart. Previously, when a customer updated their shopping cart, all information previously entered during check out (such as shipping address) was deleted.
- Upgrade of Magento Functional Test Framework (MFTF) to 2.3.13.
Bundled extension enhancements
This release of Magento includes extensions developed by third-party vendors.
Amazon Pay
- Added multi-currency support for EU and U.K. merchants. See Use multi-currency for an introduction to using this new feature with Magento 2.x.
dotdigital Engagement Cloud (formerly dotmailer)
-
dotmailer has been rebranded as dotdigital Engagement Cloud.
-
Support for Marketing preferences has been added to the customer account dashboard area.
-
If enabled, we now display the customer consent text in the customer’s account dashboard area as the general subscription text.
-
The abandoned cart and automation process now benefits from a retry function if contacts are pending in dotdigital Engagement Cloud.
Magento Shipping
New features for Magento 2.3.1 include:
-
Shipment Cancellation. You can now cancel a shipment that has not yet been dispatched by accessing the shipment and clicking Cancel Shipment.
-
Portal Access via Magento. You can now access the Magento Shipping portal directly from Magento using the Magento Shipping credentials that are stored in your Magento instance.
Enhancements to existing features include:
-
Multiple improvements to the Shipment workflow user experience.
-
Batch Processing. Error messaging and field validation has been added to the batch processing workflow. See xxx for a description of other enhancements to batch processing.
-
Collection Points. Available Collection Points have been expanded to cater for both FedEx Hold at Locations and UPS Access Points.
-
Significant user interface changes have been made to the list of locations displayed during checkout. Opening and closing hours are now included when provided by the carrier.
-
Click & Collect. The list of Click & Collect locations in checkout has been brought in line with the new Collection Points list. For a description of the new Collection Points list, see xxx.
-
Carrier Specific Packaging. Carrier-specific packaging has been added for FedEx. These packages will be available for selection during shipping if a FedEx carrier is configured.
-
Qualification Experience. The three Qualification experiences (Ship to Address, Click & Collect, and Collection Points) have been restructured and are now available as outcomes in a single Qualification experience.
-
Security. We’ve closed scenarios that could allow for third-party code execution.
-
Magento Cart Price Rules. Cart price rules can now be applied to Magento Shipping.
-
Dispatch. We’ve added additional workflow capabilities during the dispatch process to cater for future carriers.
Vertex
-
Added support for B2C VAT.
-
Added support for configurable logging.
Fixed issues
We’ve fixed hundreds of issues in the Magento 2.3.1 core code.
Installation, upgrade, deployment
- The commands to enable and disable debug logging have changed to
bin/magento setup:config:set --enable-debug-logging=true | false
. The previous commands,bin/magento config:set dev/debug/debug_logging 0 | 1
are no longer supported. See Logging.
- Magento now sets the
id_prefix
option on prefix cache keys for the cache frontend during installation. If this option is not set, Magento uses the first 12 bits of the md5 hash of the absolute path to the Magentoapp/etc
directory. But if this value is not exactly the same on all web servers, cache invalidation will not work. Fix submitted by Fabian Schmengler in pull request 18641. GitHub-15828
- The
./bin/magento config:show
command no longer fails with a fatal error after you run./bin/magento app:config:dump
. Fix submitted by Pratik Oza in pull request 18295. GitHub-17582
- The
bin/magento app:config:dump
command now disables all input fields as expected.
- Administrators that have been assigned a backup module role resource can now access the backup controller as expected. Fix submitted by Mahesh Singh in pull request 18816. GitHub-18150
- The
getHostUrl()
method has been updated to referenceHTTP_HOST
rather thanSERVER_PORT
. Fix submitted by Logan Stellway in pull request 18393. GitHub-18131
- Magento no longer displays an extraneous blank option in the country drop-down menu.
- Excessive timeouts no longer result from the discrepancy between storefront and Admin uses of HTTPS. The storefront now uses HTTPS exclusively while the Admin uses HTTP.
- The
config:set --lock-config
command now acts as expected on all scopes. Previously, after this command was run, administrators were not able to change the configuration for the default store, but could still change it for other scopes. Fix submitted by Mahesh Singh in pull request 19880. GitHub-19609
- Magento now skips disabled modules when compiling static content. Fix submitted by Shikha Mishra in pull request 19751. GitHub-19605
- The
bin/magento setup:upgrade --convert-old-scripts=1
command now supports the conversion of indexes and constraints.
- The Allow Dynamic Media URLs in Products and Categories configuration setting, which was previously accessed from Stores > Configuration > Catalog > Storefront, has been removed. The Use Static URLs for Media Content in WYSIWYG setting (Stores > Configuration > General > Content management > WYSIWYG Options) now applies to any media URLs that are entered through the WYSIWYG editor.
AdminGWS
- Magento now updates the reports table as expected when a new administrator with restricted privileges logs in and selects Report > Products > Ordered. Previously, Magento did not generate this report, and logged an error in
var/log/system.log
.
Amazon Pay
- Fixed a bug where the Magento order ID was not always correctly represented in Amazon Pay order details.
Analytics
- You can now save configuration settings from the Admin > Stores > Configuration > General > Advanced Reporting without providing an industry value. Previously, Magento did not save configuration settings, and displayed this error:
Please select a vertical.
Fix submitted by Pratik Oza in pull request 18782. GitHub-15259
Authorization
- You can now successfully save a role from the Admin. Previously, when you saved a role from the Admin, Magento removed all users from the role (no matter which checkbox was checked), and displayed this message:
This user has no tokens
.
Backend
CustomerRepository::getList()
now loads custom attributes that are namedcompany
. Fix submitted by Tegan Elizabeth Bold in pull request 19620. GitHub-17759
- Fixed icon behavior on the product customization page. Fix submitted by Kajal Solanki in pull request 19405. GitHub-19399
- The Reload Data button on the Admin now works as expected. Fix submitted by Eduard Chitora in pull request 20803. GitHub-20802
Bundle
- Bundle special prices are now correctly rounded when you load and re-save a bundle product. Previously, when you reloaded a bundle with a special price that required four positions after the decimal (for example, 78,9473), Magento rounded the price to two decimal places. Fix submitted by p-bystritsky in pull request 18987. GitHub-17638
- The Bundle Product Option Repository Delete method now removes the correct option. Previously, it removed the first option, regardless of the
optionId
that was specified. Fix submitted by Burlacu Vasilii in pull request 19027. GitHub-18979
- Magento no longer overwrites user-defined option quantities with default values when a customer edits a bundle product from a shopping cart. Fix submitted by Vishal Gelani in pull request 18520. GitHub-4942
- You can now successfully change the attribute set for a bundle product. Previously, the edit bundle page hung, and Magento threw this error:
Uncaught TypeError: Cannot read property 'length' of undefined
. GitHub-5999
- Magento now maintains the correct base price for a bundle product when you add a bundle product in one currency and then add the same bundle product option in a different currency. Previously, when you added the same bundle product option in a different currency, Magento doubled the base price.
- Bundle product SKUs are now built based on the order of the options set in the bundle product. Previously, SKUs were built based on the order of the selected product ID numbers in ascending order. GitHub-14262
- Magento now adds all selected values to the cart when a customer adds a bundle product option using an input type checkbox. Previously, if a bundle product had three values, Magento added only two options to the cart. Fix submitted by Mahesh Singh in pull request 19261 and pull request 19437. GitHub-19205
- Fixed inconsistently sized title box border on the edit bundle product page when adding an item to a bundle product from the Admin. Fix submitted by Abrar Pathan in pull request 19510. GitHub-19509
- You can now add a bundle product to a requisition list from the category page. Previously, Magento threw this error:
PHP Fatal error: Uncaught Error: Call to a member function getParentProductId() on string in app/code/Magento/RequisitionList/Model/RequisitionListItem/Options/Builder.php:118
.
B2B
- You can now filter customers by status. Previously, Magento threw an SQL ERROR when you clicked on Apply Filters after setting the filter to status.
- Magento now loads the company profile, roles, and permissions information for a company account when Enable Reward Points Functionality is set to no in the Admin and you flush cache storage.
- Magento now displays products that merchants have added to the public catalog through Product > Edit page > Shared Catalog. Previously, these items appeared if added through Catalog > Shared Catalog, but not through Product > Edit page > Shared Catalog.
- Menus now close as expected from the Quick Order page in mobile view.
- Magento no longer displays a duplicate Add product button when you change currency from the Order currency drop-down menu while creating an order from the Admin.
- Merchants can now add a product to the default public catalog, and the product can be accessed by the product URL on the storefront. Previously, Magento did not add the product to the shared catalog and instead displayed this error:
Requested categories don't exist
.
- Magento now displays custom prices in quotes, the shopping cart, and during checkout. Previously, when you moved a product with a custom price to the shopping cart from the Admin, the custom price was lost, and Magento did not display it in the shopping cart.
- A logged-in user can now log out, log in as a guest, and then check out when persistent cart is enabled. Previously, under these circumstances, the customer logged in as guest could not check out, and Magento displayed this error,
No such entity with cartId = null
.
- Magento now correctly displays pricing for configurable products when permissions are set to prevent adding products to cart from a category.
CAPTCHA
- CAPTCHA now appears as expected in the Log in pop-up window.
Cart and checkout
- Magento now displays a product’s special price on the storefront, product listings, and product detail page as expected when the special price is 0.00. Previously, Magento displayed the regular price, but used the special price for sorting and quote calculations. Fix submitted by Mahesh Singh in pull request 18631. GitHub-18268
- Custom shipping methods in custom carrier code can now include underscores. Fix submitted by Jakub in pull request 18689. GitHub-5021
- Magento no longer displays the infinite loading indicator when an error occurs during check out. Fix submitted by Ihor Sviziev in pull request 18331. GitHub-18330
- The Clear shopping cart button now works as expected. Previously, the page reloaded, but the shopping cart was not cleared. Fix submitted by Luuk Schakenraad in pull request 18596. GitHub-18475, GitHub-18589
- Magento now dispatches a
checkout_cart_product_add_before
event in addition to acheckout_cart_product_add_after
event. Fix submitted by Leandro Rosa in pull request 18080. GitHub-17830
- Customer address attribute validation during checkout now permits spaces.
- Clicking multiple times on the mini cart icon no longer logs out the current customer. Previously, when a logged-in customer added a product to the cart and then clicked the shopping cart icon multiple times, Magento displayed an empty shopping cart and logged out the customer.
- Customers can now configure options for a configurable product after adding it to their shopping cart. Previously, under these circumstances, Magento threw a fatal error.
- Magento now validates zip codes for new addresses as expected when the My billing and shipping address are the same option is unchecked.
- Magento now updates the mini cart as expected when an administrator updates the product from the Admin. Previously, if a product that had been added to the shopping cart was subsequently disabled from the Admin, the product was still displayed in the cart.
- Magento now uses the configured default sort order during checkout to calculate totals. Previously, Magento ignored the configured order and used Sub Total > Shipping > Discount > Tax > Grand Total to calculate order totals.
- Magento now displays informative error messages when an order paid for with Authorize.Net fails.
- Magento now displays the correct status for orders with zero subtotals. Previously, new order status appeared as pending when it was processing.
- Expired gift cards are no longer applied to a customer’s account. Previously, if a gift card applied to a customer account expired, Magento could not complete the checkout process.
- Magento no longer removes the billing and shipping address information for an order when a customer cancels the order by clicking Cancel and Return when using PayPal Website Payments Pro Hosted Solution. Previously, when a customer placed an order and then clicked the Cancel and Return link, Magento removed the billing/shipping address and displayed an error.
- You can now update the quantity of grouped products if the quantity field was left empty when initially added to an Admin order by SKU. Previously, under these circumstances, you could not update the quantity.
- After a session expires, and a customer refreshes the page, Magento displays an empty shopping cart and logs out the customer as expected. Previously, Magento displayed an empty shopping cart but the mini cart still displayed the selected items, and if the customer refreshed the page again, the shopping cart displayed the items.
- Tooltips that are available from the checkout page on mobile devices are now displayed properly. Previously, customers had to scroll to access the tooltip.
\Magento\Checkout\Observer\SalesQuoteSaveAfterObserver
now updates the checkout session quote ID as needed. Fix submitted by Dmytro Cheshun in pull request 19425. GitHub-19424
- Magento now validates the shipping address of a logged-in user using the default shipping address during checkout. Fix submitted by StasKozar in pull request 19038. GitHub-18990
- Fixed issue displaying numbers that exceed two digits in the Qty: box of the Proceed to Checkout pop up. Fix submitted by Parag Chavare in pull request 20612. GitHub-20611
- Added a missing space between the title of the workflow step and the saved address on the first page of the checkout process. Fix submitted by Arvinda Kumar in pull request 20306. GitHub-20304
- Magento no longer throws a console error during a guest checkout when the list of allowed countries is changed from the Admin. Fix submitted by Govind Sharma in pull request 20634. GitHub-20631
- The title of the shipping method no longer overlaps with Edit on the checkout page. Fix submitted by Yashwant Rokde in pull request 20428. GitHub-20427
- The Close button on the mini cart no longer overlaps with the shipping section when the checkout page is opened on a mobile device. Fix submitted by Pratik Oza in pull request 20615. GitHub-20614
- Fixed the alignment of the Apply discount button on the checkout page. Fix submitted by Arvinda Kumar in pull request 20144. GitHub-20137
- Fixed mini cart layout issues.
- The mini cart is now updated as expected when a product in the cart is disabled.
- Fixed problems with the display of the tooltip drop-down pointer on the checkout page in tablet view. Fix submitted by ranee2jcommerce in pull request 20488. GitHub-20487
- Magento no longer displays a console error when a customer selects one-step checkout. Previously, Magento displayed this JavaScript error:
Cannot read property 'code' of undefined
. Fix submitted by Ihor Sviziev in pull request 18494. GitHub-18164
- Administrators with appropriate permissions can now manage customer shopping carts from the Admin. Previously, when an administrator clicked Manage Shopping Cart from Admin > Customers > Customer, Magento threw an error.
Cart Price rules
- The Cart Price Rule page now displays correct counter values for the grid as well as accurate pagination.
- Magento no longer permits you to use the up and down arrow keys to enter negative numbers when entering a credit card number on the payment information page during checkout.
Catalog
- Magento now displays the product page with this message
You need to choose options for your item
when you click Add to cart for a new product that has an attribute with the Use in product listing property set to Yes. Previously, Magento redirected the user to the cart page, and did not add the product to the cart. Fix submitted by Vishal Gelani in pull request 19322. GitHub-19315
- Magento now directs the user to a 404 page when accessing http://www.domain.com/catalog/product/compare. Previously, Magento threw this error,
Fatal error: Uncaught Error: Cannot call abstract method Magento\Framework\App\ActionInterface::execute()
. Fix submitted by p-bystritsky in pull request 18987. GitHub-17638
- Magento now correctly calculates fixed tier price discount for products with special prices. Fix submitted by Torben Höhn in pull request 19179. GitHub-18652
- Magento no longer throws an exception when you try to add an image to a product programmatically. Fix submitted by Yevhenii Dumskyi in pull request 18952. GitHub-6803
- Magento now applies the translations for the selected theme when you enable a custom design theme. Previously, Magento collected the translation files for the active main theme only, which limited the use of different translations within the additional theme. Fix submitted by Cezary Zeglen in pull request 18998. GitHub-17625
- The
bin/magento catalog:images:resize
command now processes all specified images. Fix submitted by Vladyslav Podorozhnyi in pull request 18807. GitHub-18387
- You can now create a new product with a special price. Previously, when you saved the newly created product, Magento threw this error:
Special price date from" Failed to parse time string
. Fix submitted by Hiren Pandya in pull request 18578. GitHub-18158
- You can now insert multiple catalog product list widgets into a CMS page. Fix submitted by Burlacu Vasilii in pull request 18714. GitHub-4468
- You can now use REST to add a new attribute and configure it with settings such as
is_filterable
. Fix submitted by Mr. Lewis in pull request 18622. GitHub-10205
- Magento now provides a white-space trimming function for SKUs on the Admin. Fix submitted by Bartosz Kubicki in pull request 18019. GitHub-16572, GitHub-12300
- Magento no longer changes the attribute type of
backend_type
fromvarchar
toint
when the product associated with the attribute is saved or updated in the Admin. Fix submitted by Vishal Gelani in pull request 18570. GitHub-9219
- The table rate shipping method no longer fails to return a quote when a customer uses a United States postal code in the form of five-digit zip - four-digit extension (for example, 44444-1234). Fix submitted by Vishal Gelani in pull request 18499. GitHub-17770
- You can now set a Boolean attribute to
is_filterable
, which allows these attributes to be included in layered navigation. Fix submitted by Mr. Lewis in pull request 18434. GitHub-3283
getStoreId()
now consistently returnsint
. Previously, Magento returnedstring
for products butint
for categories, which resulted in a fatal error. Fix submitted by sv3n in pull request 18303*. GitHub-18079
\Magento\Catalog\Model\Product::getQty()
now consistently returns float/double. Fix submitted by Jay Ghosh in pull request 18149. GitHub-18094
- Updates to related products now appear as expected in both the storefront product page and the Admin product edit page. Previously, the storefront displayed product updates, but not all related product updates showed up in the Admin. Fix submitted by Pieter Hoste in pull request 18207. GitHub-13720
- The
bin/magento module:uninstall
command now works as expected with Composer. Previously, there was a discrepancy betweencomposer.lock
andcomposer.json
when this command was used to remove a module. Fix submitted by Pratik Oza in pull request 18205. GitHub-17780
getStoreId()
now consistently returnsint
. Fix submitted by sv3n in pull request 18303. GitHub-18079
- You can now save a product on deployments in single-store mode when the default website has been removed and a new website has been added. Fix submitted by Eduard Chitoraga in pull request 18210. GitHub-13405
- Attribute values are now updated as expected in the
catalog_product_flat_2
table.
- Dates in the Admin are now formatted correctly for French locales (dd/mm/yyyy).
- Magento now saves and properly indexes a configurable product variant that contains a longer-than-permitted SKU. Previously, when you tried to save this product, Magento threw an error. GitHub-17436
- The product page’s Recently Viewed section no longer displays the name of the current product.
- You can now use REST to update a product’s media gallery.
- Magento now saves default values for category URL paths in accordance with the Use Default Value and Create a Permanent Redirect settings. Previously, in deployments running multiple stores, if a category’s URL key was changed and saved, Magento did not change the category’s URL key back to the default URL key when saved with the Use Default Value box checked and Create a Permanent Redirect box unchecked.
- Magnifier now correctly handles zoomed sections of images when the image width/height ratio has a
~2x
difference. Previously, these sections were distorted.
- Magento now retains across categories any value you set for the number of categories displayed per page.
- You can now save products with at least one tier price.
- Changes to product images made under the All Stores scope now affect product images at the store-view level.
- You can now use REST to update category positions.
- Magento now correctly displays the greater than operator (>) when you configure the catalog products list widget for a CMS block.
- Categories that are set to anchor Yes and that have disabled subcategories no longer display products from those disabled subcategories. GitHub-9002
- You can sort a grouped product’s associated products across multiple pages. Previously, when you tried to sort associated products, Magento sorted only the products visible on the current page.
- Magento now uses the correct column type when creating temporary tables for a flat catalog. Fix submitted by Jason Evans in pull request 18818. GitHub-14571
- Attribute indexing no longer ignores custom source model options. Fix submitted by Joel Rainwater in pull request 19176. GitHub-417
- Magento now correctly imports
product_type
drop-down attributes. Previously, Magento displayed an error message indicating that values for these attributes were incorrect during import. Fix submitted by Govind Sharma in pull request 19408. GitHub-19346
- Magento now correctly handles attribute options that begin with zero. Previously, these attribute options did not work if an option with the same number but lacking the zero already existed. Fix submitted by SikailoISM in pull request 19451. GitHub-19436
- You can now successfully delete a newly created attribute set. Previously, Magento displayed a 404 error under these circumstances. Fix submitted by cedcommerce in pull request 19633. GitHub-19607
- You can now use add extension attributes to add category links to a product. Previously, Magento did not add the product links, but behaved unpredictably. Fix submitted by Giel Berkers in pull request 19080. GitHub-14861
- When a new customer is created, Magento sets a value of zero for any custom attribute if no other value is explicitly provided. Previously, if no value was explicitly assigned, Magento did not save the custom attribute with any value. Fix submitted by Malyovanets Nickolas in pull request 19341. GitHub-14510
CategoryLinkReposity
now lists all possible exceptions. Fix submitted by Patrick McLain in pull request 20050. GitHub-20037
- Merchants can now assign negative values to the custom option for a product with a fixed price from the Admin. Fix submitted by Danny Verkade in pull request 15267. GitHub-7333
- Newly added fields are now sorted according to the given
sortOrder
value in the newsletter system configuration file. Previously, you could add a new field, but could not successfully set its position. Fix submitted by Burlacu Vasilii in pull request 19568. GitHub-19418
- Merchants can now change the position of tabs on a product page. Fix submitted by Burlacu Vasilii in pull request 19007. GitHub-4154
- An incorrect variable in the phpDoc for
DataBuilder.php
has been corrected. Fix submitted by Kunj joshi in pull request 19992. GitHub-19974
- You can now perform a mass update on product attributes after configuring the minimum cart quantity globally. Previously, Magento did not display the form to update all available attributes but threw an
E_WARNING:
error when you selected Update attributes. Fix submitted by Patrick McLain in pull request 19095. GitHub-17592
- The product compare page now loads as expected when unconfigured attributes display N/A or No. Fix submitted by Vivek Kumar in pull request 20231. GitHub-20229
- Magento now correctly sorts configurable products with tier prices or swatches on both the storefront and Admin. Previously, storefront sorting did not match Admin sorting. Fix submitted by vshatylo in pull request 20407. GitHub-12194
- Magento now correctly duplicates video files when a merchant duplicates a product with an associated video. Previously, the video was duplicated as an image, not a video, and the merchant had to delete the image and re-add the video using Add Video.
- Magento no longer hangs when you add a product by SKU to a large category (100,000 or more products).
- We’ve improved the error message that Magento displays when validating a new (but invalid) product attribute. Fix submitted by saravananvelu in pull request 17806. GitHub-17754
getProductUrl
no longer returns the wrong URL when the current category has no products. Fix submitted by Erik Pellikka in pull request 19232. GitHub-17819
- The user agent exception now sets the correct templates for product pages. Previously, the
footer.phtml
andabsolute_footer.phtml
templates were loaded from the desktop theme instead of the mobile theme regardless of the user agent. Fix submitted by Alex Ghiban in pull request 19124. GitHub-16074
- Magento now displays currency symbols as expected for products in the Cost column of the Admin catalog list. Fix submitted by Pratik Oza in pull request 20907. GitHub-20906
- Magento now displays breadcrumbs in proper format. Previously, subcategories did not appear in breadcrumbs. Fix submitted by Brandon Brown in pull request 19781. GitHub-7967
CatalogInventory
- Magento now validates the quantity of items in the shopping cart against the Maximum Qty Allowed in Shopping Cart setting. Fix submitted by Vishal Gelani in pull request 18481. GitHub-18477
- Magento now correctly applies the Set Items’ Status to be In Stock When Order is Cancelled attribute setting. Previously, after an order was canceled, Magento increased product stock even when Set Items’ Status to be In Stock When Order is Cancelled was set to no. Fix submitted by Shikha Mishra in pull request 20252. GitHub-20121
- Removed unnecessary slash from
app/code/Magento/CatalogInventory/etc/di.xml
. This extraneous slash had previously resulted inMagento\Catalog\Api\ProductRenderListInterface
returning products regardless of visibility. Fix submitted by Milind Singh in pull request 20410. GitHub-20409
- Magento no longer displays a negative value on the product list page when a product’s stock falls below the product’s
OutOfStock
threshold value. Fix submitted by Khodu in pull request 19206. GitHub-9130
- Magento no longer increments stock for products for which stock managing has been disabled. Previously, Magento increased the product quantity count when an order failed if Manage Stock was disabled. Fix submitted by Oleksii Gorbulin in pull request 19997. GitHub-19482
- In a multi-website instance, with a category that contains products belonging to different websites, when the product sort order in a category is changed at the store-view level, the products that belong to a different website gets unassigned from the category.
Catalog Rule
- Magento no longer throws an exception when you try to edit and save a catalog price rule when the Admin language is set to a language other than English. Fix submitted by Martin in pull request 18419. GitHub-12399
- If you create a catalog price rule based on categories with nesting level 4 or higher, these categories now maintain the status of their checkboxes when you re-open Category Chooser. Previously, when you reopened these categories, no checkboxes were checked.
Catalog URL rewrite
- Magento now regenerates product URL rewrites as expected after an administrator changes a product URL key from the Admin and subsequently saves the product attribute URL path value. Previously, product URL rewrites could not be generated after this attribute value was changed. Fix submitted by p-bystritsky in pull request 19170. GitHub-18532, GitHub-5929
- Attempts to rewrite catalog URLs with a
POST /V1/products
endpoint now work as expected. GitHub-16789
- Magento no longer ignores the store-level
url_key
of child categories when rewriting URLs process for global scope. GitHub-13513
- Magento no longer removes product tier prices when a scheduled update contains an update to the special price.
- You can now save and duplicate a linked product. Previously, Magento did not duplicate the product, and displayed this error:
Invalid data provided for linked products
.
- The store switcher now works in multistore deployments. Previously, the switcher redirected the user to the home page, not to the alternative store view as expected. Fix submitted by Janak Bhimani in pull request 19798. GitHub-19714
Cleanup and simple code refactoring
- Fixed alignment of the details label on the order page in mobile view. Fix submitted by Arvinda Kumar in pull request 20301. GitHub-20299
- Fixed rendering of the Add your text link on the Product page. Fix submitted by Nainesh Waghale in pull request 20224. GitHub-20221
- Fixed misalignment of the import successful message icon in the Admin. Fix submitted by Kajal Solanki in pull request 19334. GitHub-19328
- Corrected the alignment of Contact us area that is accessed from the storefront page footers. Fix submitted by suryakant-krish in pull request 19803. GitHub-19800
- Fixed inconsistent spacing on the manage coupon codes page on the Admin. Fix submitted by Kajal Solanki in pull request 19659. GitHub-19657
- Fixed misalignment of the tax rate checkbox on the Add New Tax Rate page. Fix submitted by suryakant-krish in pull request 19413. GitHub-19379
- Fixed misalignment of the attribute set name heading border on the Attribute sets pop-up window. Fix submitted by suryakant-krish in pull request 19414. GitHub-19371
- Fixed misalignment of elements on the shipping information page that Magento displays when you click Check Out with Multiple Addresses from the shopping cart. Fix submitted by [Arvinda Kumar in pull request 20564. GitHub-20563
- Fixed misalignment of the Choose file button on the
Select File to Import
page. Fix submitted by suryakant in pull request 19580. GitHub-19579
- Fixed formatting of the add link table that can be accessed from the Downloadable Information tab. Fix submitted by Kajal Solanki in pull request 18856. GitHub-18854
- Fixed misalignment of the title of the order page that is accessed when you check a recent order in the sidebar of listing or account pages. Fix submitted by Parag Chavare in pull request 20501. GitHub-20500
- Fixed misalignment of tab content on product pages in mobile view. Fix submitted by Parag Chavare in pull request 20469. GitHub-20468
- Corrected misspelled argument name
allowDrug
toallowDrag
invendor/magento/module-catalog/view/adminhtml/templates/catalog/product/attribute/set/main.phtml
. Fix submitted by Govind Sharma in pull request 19918. GitHub-19917
- Fixed the misalignment of the customizable options label on Admin > Catalog > Product > Customizable Options. Fix submitted by Kajal Solanki in pull request 19493. GitHub-19492
- Fixed problem with overlapping UI elements on the cart page when accessed from the mini cart. Fix submitted by Vishal Gelani in pull request 19839. GitHub-19836
- Fixed alignment issue with the drop-down menu on the mini cart. Fix submitted by Kajal Solanki in pull request 19508. GitHub-19507
- Fixed alignment issue with radio buttons on the shopping cart page. Fix submitted by Hitesh in pull request 20022. GitHub-20021
- Fixed alignment of the bundle product radio button on the product page when you click Customize and Add to cart. Fix submitted by Parag Chavare in pull request 20519. GitHub-20518
- Fixed alignment of the bundle product information on the configure product page for a bundle product when creating a new order. Fix submitted by Abrar Pathan in pull request 19502. GitHub-19501
- The calender icon issue is now correctly aligned on the Advanced Pricing page of the Admin. Fix submitted by Kajal Solanki in pull request 18638. GitHub-18581
- Fixed alignment issue of time fields in Admin > Configuration > General > Advanced Reporting in tablet landscape view. Fix submitted by Ajay Ajabale in pull request 20581. GitHub-20580
- Fixed misalignment of the confirmation pop-up window that Magento displays in mobile view when you delete a product from your shopping cart. Fix submitted by Priti in pull request 20196. GitHub-20176
- The
addExpressionFieldToSelect
method no longer modifies columns and instead inserts expressions into the_fieldsToSelect
private variable (similar to howaddFieldToSelect
does). Fix submitted by Torben Höhn in pull request 19180. GitHub-17635
- A typo in
app/code/Magento/Deploy/Console/DeployStaticOptions.php
has been corrected. Fix submitted by Pratik Oza in pull request 18733. GitHub-2686
- Fixed alignment of options on the Admin edit widget page. Fix submitted by Govind Sharma in pull request 20114. GitHub-20113
- Corrected rendering of the apply discount code field in the Tab portrait view of the shopping cart. Fix submitted by Ajay Ajabale in pull request 20281. GitHub-20278
- Fixed issue where the horizontal scroll bar did not appear as expected on the compare products page in mobile view. Fix submitted by Arvinda Kumar in pull request 20368. GitHub-20367
- Added missing bottom border to the list of customizable options on the product page when accessed from the Admin. Fix submitted by Eduard Chitoraga in pull request 20498. GitHub-20497
- Corrected the position of the header for the design configuration table (Content > Design > Configuration). Fix submitted by Shikha Mishra in pull request 20072. GitHub-20024
- When you try to save a widget that contains an unexpected character, Magento now displays an informative error message and does not save the widget. Previously, Magento saved the widget. Fix submitted by Burlacu Vasilii in pull request 19390. GitHub-4136
- The catalog category merchandiser product list is no longer missing the move cursor in tile view. Fix submitted by Abrar Pathan in pull request 19817. GitHub-19816
- Corrected alignment of the Detailed Rating field on the Edit Review page. Fix submitted by Yashwant Rokde in pull request 20132. GitHub-20120
- Corrected alignment of the store switcher in Tab view. Fix submitted by Arvinda Kumar in pull request 20160. GitHub-20158
- Corrected the number of products listed per row for desktop (4), tablet (3), and mobile (2) views. Fix submitted by Amol Chaudhari in pull request 20168. GitHub-20140
- Hamburger menus no longer appear on pages that do not require menus. Fix submitted by Amol Chaudhari in pull request 20214. GitHub-20210
- Fixed issue where drop-down toggle arrow did not close as expected on product page. Fix submitted by Nirav Patel in pull request 20241. GitHub-20240
- The Send email confirmation popup Close button no longer overlaps with content. Fix submitted by Arvinda Kumar in pull request 19986. GitHub-19985
- Corrected formatting issue on Catalog > Category > Product > Assign products page. Fix submitted by David Verholen in pull request 20094. GitHub-19052
- Store switcher now works correctly on mobile devices. Fix submitted by Arvinda kKumar in pull request 20260. GitHub-20259
- The order view invoice template is now displayed properly in tablet view. Fix submitted by ranee2jcommerce in pull request 20374. GitHub-20373
- Fixed misalignment of the widget options on the edit widget page. Fix submitted by Govind Sharma in pull request 20114. GitHub-20113
- Magento now identifies the shipping method in the Shipping section of the order review page for orders that are paid with using PayPal Express. Fix submitted by Nirav Kadiya in pull request 19788. GitHub-14712
- Fixed checkbox alignment on the account information page. Fix submitted by suryakant-krish in pull request 19646. GitHub-19645
- Fixed misalignment of search icons on the
onAttribute
page. Fix submitted by Abrar Pathan in pull request 19643. GitHub-19642
- Fixed an alignment issue with the select and text boxes on the Advance Pricing page. Fix submitted by Kajal Solanki in pull request 19473. GitHub-19472
- Corrected alignment issue with elements on the default email templates. Fix submitted by suryakant-krish in pull request 19574. GitHub-19573
- Corrected typo in
SalesRule/Model/ResourceModel/Coupon/Usage.php
. Fix submitted by Milind Singh in pull request 19726. GitHub-19721
- Fixed alignment of reload CAPTCHA icon on the Admin login page. Fix submitted by Govind Sharma in pull request 20914. GitHub-20911
- Fixed alignment of the error message that Magento displays on the add or edit bundle product customizable options tab. Fix submitted by Kunj Joshi in pull request 20930. GitHub-20908
- Fixed misalignment of the Orders and Returns section that is accessed from the footer of the orders page. Fix submitted by Amol Chaudhari in pull request 20817. GitHub-20816
- The default design of the Edit and Remove items buttons on the wishlist page now match. Fix submitted by Abrar Pathan in pull request 20791. GitHub-20790
- Fixed issues with the shadows that are associated with input box and radio buttons on storefront forms. Fix submitted by Abrar Pathan in pull request 20861. GitHub-20859
- Fixed misalignment of the product option fields in the order summary of the checkout page. Fix submitted by Pratik Oza in pull request 20138. GitHub-20134
- Fixed misalignment of fields on the configure product page that is accessed from the wishlist. Fix submitted by Priti in pull request 20558. GitHub-20760
- Removed excessive white space from the top of CMS pages when displayed in mobile view. Fix submitted by ranee2jcommerce in pull request 20756. GitHub-20755
- Fixed misalignment of the advanced search page’s price field in mobile view. Fix submitted by Govind Sharma in pull request 20159. GitHub-20157
- Fixed misalignment of the View and Edit Cart link in the mini cart. Fix submitted by Rajneesh Gupta in pull request 20383. GitHub-20382
- Fixed misalignment of values in the currency rate column in the Order & Account Information area of the New Memo page. Fix submitted by Dipti in pull request 20610. GitHub-20609
- Added missing PHPDoc comments for methods throughout the code base. Fix submitted by Leandro F. L. in pull request 19826.
- Fixed misalignment of the My Account page’s Recently Ordered check box in tab portrait view. Fix submitted by Ajay Ajabale in pull request 20155. GitHub-20143
- Fixed misalignment of Schedule Update From field on the Admin category page when displayed in a browser set to 768 x 1147 resolution. Fix submitted by Amol Chaudhari in pull request 20403. GitHub-20402
- The Widget Options left navigation block on the Add New widget Page now displays correctly in tablet view. Fix submitted by Dipti in pull request 20493. GitHub-20492
- Fixed misalignment of logo on Admin home page. Fix submitted by suryakant-krish in pull request 19792. GitHub-19791
- Fixed misalignment of reviews under My Recent Reviews area of the My account dashboard. Fix submitted by Priti in pull request 20801. GitHub-20800
- Corrected the behavior of the Option’s New Option Type drop-down menu for customizable options. Fix submitted by dharmendra-wagento in pull request 20990. GitHub-20989
- Fixed irregularities with updating order status. Fix submitted by Shikha Mishra in pull request 20349. GitHub-19258
- The
ui-component
validationerror
event now bubbles upwards when an abstract element is nested in a field set. Fix submitted by Ravi Chandra in pull request 19812. GitHub-17926
CMS content
- You can now delete from the media gallery browser any files and folders that are symlinked in
pub/media
. Previously, Magento left the image in the media gallery but displayed no feedback in the product interface.
- Improved the display of images that are uploaded when you click the Insert Image button on a CMS page. Fix submitted by Eduard Chitoraga in pull request 20787. GitHub-20786
Configurable products
- The
DateTime
class can now parse strings for all supported languages, not just English. Previously, converting from string to PHPDateTime
object failed for locales other thanen_US
. Fix submitted by Thiago in pull request 18462. GitHub-18082
- Selected images on the product page of a configurable product are now positioned correctly. GitHub-18410
- You can now successfully save products with SKU lengths that are less than or equal to 64 digits. Previously, Magento threw a fatal error when you tried to re-save a child product after reducing the length of its 64-digit-long SKU. Fix submitted by Thiago in pull request 18462. GitHub-18082
- The Cart Sales Rule now excludes already discounted products from further discounting through a coupon code. Fix submitted by Malyovanets Nickolas in pull request 19343. GitHub-14020
- Translations for
tier_price.phtml
now work as expected. Previously, these translations were not included injs-translation.json
and were not visible on the storefront. Fix submitted by Oleksii Gorbulin in pull request 19094. GitHub-19085
- Sorting by a price for configurable products on category pages now works correctly when the Display Out of Stock Products setting is enabled.
cron
- A new
cron.log
file dedicated to logging cron-related information has been added to Magento. This new log file reduces output previously sent to thesystem.log
file, making it easier to find non-cron-related information in thesystem.log
file. Fix submitted by Pieter Hoste in pull request 18209. GitHub-17190
Customers
- We’ve added an additional check for the password hash for customers that have been created from the Admin without a password. Previously, customers created this way could not log in. Fix submitted by Yevhenii Dumskyi in pull request 19066. GitHub-19060
- Magento now displays the same order total in the customer information orders grid and orders grid when an order is placed in a currency other than the base currency. Previously, Magento displayed the wrong order total in the Admin’s customer information orders tab. Fix submitted by Anuj Gupta in pull request 18650. GitHub-18618
- Magento no longer displays the forgot password form while a customer is logged in but instead directs the customer to the customer dashboard. Fix submitted by Oleksii Gorbulin in pull request 19026. GitHub-18256
- The reset password link in the password reset mail sent to customers when they click Reset password on the login page now permits customers to reset their password as expected. Fix submitted by p-bystritsky in pull request 19026. GitHub-18256
- Magento now maintains alphabetical order for customer groups when you filter customers by group in the Admin. Previously, groups were sorted by ID. Fix submitted by Dmytro Cheshun in pull request 18117. GitHub-18101
- Merchants can now edit a customer account if the customer’s password has expired. Fix submitted by Dmytro Cheshun in pull request 18308. GitHub-18162
- Magento now displays the value of a custom customer address attribute in the column for that attribute when you create a custom customer address attribute and set it to be displayed in the Columns list. Previously, Magento added the customer code column to the Customer table, but left these columns blank.
- You can now change payment methods after selecting store credit when creating an order from the Admin.
- Customers can now be matched in customer segments based on the number of orders in a multi-site deployment.
- We’ve improved the performance of the customer segment rule, which has improved site performance.
- Magento no longer unchecks the default billing and shipping address checkboxes when you create or update a customer address using the API.
- Magento now displays the list of additional customer addresses that are contained in the storefront customer address book as a grid, which has improved performance for customers with many additional addresses associated with their accounts.
- When a customer uses a gift card to make a purchase, Magento now applies only the applicable amount to the invoice. Previously, the total amount of the gift card was applied to a customer’s store credit for a partial invoice.
- Magento now assigns new accounts in multisite deployments to the customer group that is associated with the default website scope. Previously, a new customer created from the Admin had their customer group set to the default customer group on the default website scope.
- Customers who have an address associated with a country that has not been set to allowed can now successfully reset their password. Fix submitted by Dmytro Cheshun in pull request 18179. GitHub-18170
- Removed an unneeded space from the title of the My Account page in mobile view. Fix submitted by Amol Chaudhari in pull request 20725. GitHub-20723
- Removed an empty block on the My Account page sidebar. Fix submitted by Pratik Oza in pull request 20630. GitHub-19139
- The
Magento\Customer\Model\Customer::getDataModel
method has been optimized, which has reduced the time required to load customer accounts with many addresses.
- State/Province field values are no longer required when creating an order from the Admin. Previously, Magento indicated that State/Province field values were required even though configuration settings indicated that these values were not required.
- Magento now respects the number of lines permitted in a street address as set in Store > Configuration > Customer > Customer Configuration > Name and Address Options. Previously, Magento displayed the last saved values instead of the default value. Fix submitted by Ievgenii Gryshkun in pull request 20565. GitHub-13675
- Images can now by default be successfully imported from HTTP and redirected to HTTPS. Previously, the image could not be uploaded. Fix submitted by Rahul Mahto in pull request 18900. GitHub-18839
Customer attributes
- Magento now loads the customer attribute page as expected, and users can edit attributes, when attributes are set to default values. Previously, Magento did not completely load this page when attributes values were set to default.
- Custom customer address attributes can now be updated when you edit an order’s billing address in the Admin.
- You can now create a customer without a phone number when Show Telephone is set to optional. Previously, Magento displayed an informative error message and did not let you create the customer.
- Magento now saves custom customer attributes as expected when EAV caching is disabled. Previously, directly saving customer information resulted in data loss. Fix submitted by Vishal Gelani in pull request 18571. GitHub-12479
Dashboard
- You can now upload PDP images larger than 1920 x 1200 without compressing and downsizing the images first. Previously, when a merchant uploaded a high quality product image (larger than 1920 X 1200), Magento resized and compressed the image. Merchants can now set requirements for resizing and compression as well as compression quality and target width and height.
_sleep
and__wakeup
have been removed, and a newPHP.MD
rule has been added to discourage PHP serialization.
- Magento now validates new addresses when created from the address book telephone field on the My Account dashboard page. Fix submitted by Dipti in pull request 20262. GitHub-20261
Developer
- Email messages sent from the command line (where the email loads into another block) can now be sent successfully. Fix submitted by p-bystritsky in pull request 18988. GitHub-10440
Directory
- The Swagger definition for
eav-data-attribute-option-interface
has been corrected. Previously, when you created a REST call to an endpoint that returns an object ofeav-data-attribute-option-interface
andis_default
is set totrue
,is_default
returns an object instead of the expected Boolean. Fix submitted by Hiren Patel in pull request 20913. GitHub-18525
crontab
now updates all currency rates daily as expected. Previously,crontab
updated only a subset of the enabled currencies. Fix submitted by Denis Papec in pull request 18981. GitHub-18580
Downloadable
- The order confirmation email sent when a guest checks out now includes download links as expected. Fix submitted by Oleksandr Kravchuk in pull request 19040. GitHub-18323, GitHub-19003, GitHub-19034
- You can now delete downloadable product links without first deleting sample links.
EAV
- You can now use the
OptionManagement.delete
method to programmatically delete a product attribute that converts to false. Previously, Magento threw an exception. Fix submitted by Patrick McLain in pull request 18720. GitHub-13083
- You can now use an attribute set on the product create page after moving the attributes from one attribute group to another.
- The customer EAV decimal attribute now accepts a value of 0. Fix submitted by Shikha Mishra in pull request 20130. GitHub-20030
- The Magento storefront now correctly displays products with a custom attribute of type
Media Image
. Fix submitted by David Verholen in pull request 20096. GitHub-19054
- Magento no longer changes the
source_model
when you create an attribute option through the API. Previously, thesource_model
of an EAV attribute was set toMagento\Eav\Model\Entity\Attribute\Source\Table
when updating an EAV attribute’s options through the API. This eliminated the ability to update this attribute’s options through the Admin. Fix submitted by Pieter Hoste in pull request 18244. GitHub-13156
- Magento no longer throws an SQL Join error when you use a custom EAV entity with the
standard eav_entity
entity table. Previously, this usage resulted in an integrity constraint violation. Fix submitted by Roman Strelenko in pull request 18437. GitHub-18131
- The return path e-mail variable
system/smtp/return_path_email
now works as expected.
- Email subject headers now support UTF-8 encoding. Fix submitted by Alexey Varlamov in pull request 19978. GitHub-19977
Frameworks
- Magento no longer logs an error when you include properly escaped special characters in store view names. Previously, Magento logged errors in the
exception.log
.
- Magento now attempts to reconnect when a MySQL timeout occurs. Previously, Magento displayed an informative PHP-related message and did not attempt to reconnect.
- You can now set all products that currently have Set Product as New set to yes set to no. This change affects bulk updates, CSV imports, and scheduled updates.
- Attributes in flat tables are now updated after the product is saved when the catalog product flat index is turned on and the indexer is set to Save on Update.
dev/tools/grunt/configs/themes.js
has been removed from the.gitignore
file and added to the GitHub repository. Previously,localthemes.js
was included in.gitignore
and replaced during a Magento update. Fix submitted by Torben Höhn in pull request 19350. GitHub-18949
- Magento now autoloads vendor root folders and can now run with custom Composer vendor directories. Previously, Magento’s autoloader registration failed to generate the correct path when using the
COMPOSER_VENDOR_DIR
setting to specify a vendor path outside of the Magento installation root. Fix submitted by Rus0 in pull request 18849. GitHub-17753
- Newly added links on the customer dashboard are now shown as current when the link path has been constructed from both default and new elements. Previously, the link was added, but not shown in the current state as expected. Fix submitted by Eduard Chitoraga in pull request 19134. GitHub-19099
- The
fileUploader
form element in theui_component
form now works as expected. Previously, during file upload, the countable interface was not implemented, and Magento threw this error:Error Message : Warning: count(): Parameter must be an array or an object that implements Countable
. Fix submitted by gmachure in pull request 19249. GitHub-19247
- Interception cache compilation has been improved, and custom profiler records are now executed in less than a second. Previously, profiled methods consumed about 70% of the first page load after
cache:flush
from either the command-line interface or the Admin. Fix submitted by Patrick McLain in pull request 18648. GitHub-17680
Magento\Framework\Webapi\Rest\Response\Renderer
class’s_formatValue
method has been refactored to handle ampersands correctly. Previously, an ampersand in any customer text field when using the web API doubled the encoding. GitHub-18361
- Deprecated interface
\Magento\Framework\Option\ArrayInterface
has been replaced with\Magento\Framework\Data\OptionSourceInterface
inlib/internal/Magento/Framework/Option/ArrayPool.php
. Fix submitted by Milind Singh in pull request 20248. GitHub-20064
- Corrected invalid return type in docblock in
Magento\Framework\HTTP\PhpEnvironment\Request::getHeader()
. Previously, the docblock of theMagento\Framework\HTTP\PhpEnvironment\Request::getHeader()
method stated that it would return abool
or an instance ofZend\Http\Header\HeaderInterface()
. However, this method returned either abool
or astring
. Fix submitted by Milind Singh in pull request 21035. GitHub-21034
- Magento now throws
LogicException($message, 0, $e)
instead ofLogicException($message)
as needed when running validation for communication configuration (communication.xml
). Previously, the validator inMagento\Framework\Communication\Config\Validator
did not propagate exceptions, which obscured the cause of the error. Fix submitted by Artsiom Bruneuski in pull request 18416. GitHub-14555
- JavaScript translation issues on the modal buttons that Magento displays when removing items from the product compare page have been resolved. Fix submitted by Max Fickers in pull request 20109. GitHub-19705
- We’ve added support for
use
statements in web API interfaces and the use of non-FQN class names indoctypes
. Previously, you could not import class names in interfaces that were used for the web API. Fix submitted by Riccardo Tempesta in pull request 17424. GitHub-1537
Magento/Framework/HTTP/Adapter/Curl.php
now supports setting an HTTP version. Fix submitted by SikailoISM in pull request 19845. GitHub-19442
- Magento can now read responses from third-party servers that use HTTP/2 if your server also uses HTTP/2. Previously, this inability to read requests from third-party servers that use HTTP/2 prevented access to Magento Marketplace. Fix submitted by Vova Yatsyuk in pull request 19143. GitHub-19127
- The AMQP helper has been updated to use host, username, and password configuration from the instance under test. This allows tests to run when the AMQP service is not using default credentials or available on
localhost
. Previously, thehost
value in this helper was hardcoded. Fix submitted by Patrick McLain in pull request 18978. GitHub-18953
Cache framework
- Problems with cache-cleaning for product pages for simple products that are associated with configurable products have been resolved. and as a result, product pages now accurately display out-of-stock status. Previously, when an associated product went out-of-stock, Magento did not update the product page of the configurable product unless you cleaned the cache. GitHub-8009
- The images cache can now be flushed from the Admin (Admin > System > Cache Management and click Flush Catalog Images Cache). Previously, you could not delete the directory, and Magento displayed an error on the cache management page.
- Magento now removes disabled products as expected from the flat product table when Catalog Flat Product is enabled.
Configuration framework
- You can now enable shared catalogs using the
config:set
command. Previously, this command enabled the shared catalog but did not create the necessary permissions to access it.
Data framework
- Class
\Magento\Framework\Data\Form\Element\Fieldset
now calls thegetBeforeElementHtml
method. Fix submitted by Burlacu Vasilii in pull request 18798. GitHub-2618
Event framework
events.xml
can now have child nodes. Fix submitted by Lisovyi Yevhenii in pull request 19146. GitHub-15931
JavaScript framework
- Wishlist names can now contain apostrophes. Previously, a wishlist whose name contained an apostrophe could not be edited or deleted.
Message framework
- Module names can now contain numbers. Previously,
magento/framework-message-queue/etc/queue_base.xml
contained a pattern that did not allow numbers to be used ininstanceType
, which resulted in the invalidation of custom message consumers in this file.
General fixes
- The navigation arrows in fotorama now stay visible after you close the zoomed fotorama. Fix submitted by Luuk Schakenraad in pull request 18590. GitHub-18585
- You can now customize the view of tab and accordion components by using mixins to redefine the default variables in the scope of a custom theme. Fix submitted by Dmytro Cheshun in pull request 18730. GitHub-18729
- Content in confirmation pop-up windows on the Admin no longer overlap the Close button. Fix submitted by Dmytro Cheshun in pull request 19264. GitHub-19263
- You can now update database credentials from the command line in non-interactive mode using
bin/magento setup:config:set
. Fix submitted by aheadWorks Capital SIA in pull request 18970. GitHub-18965
- The error message displayed on the Add Product Attribute page has been improved. Fix submitted by Aman Agarwal in pull request 17800. GitHub-17754
- The datepicker icon is now correctly aligned in the Admin. Fix submitted by Yaroslav Rogoza in pull request 18627. GitHub-18605
- The magnifier now disappears as expected when a user moves their cursor off an image. Fix submitted by gwharton in pull request 18702. GitHub-15035
- Product pages that are included in a related products rule that uses a Price (percentage) condition now load correctly. Previously, loaded pages were blank.
- Magento now displays the appropriate thumbnail image for configurable products in requisition lists. Previously, Magento displayed the default placeholder thumbnail image for all configurable products.
- The Select All and Select Visible buttons on the notification page now work as expected. Previously, these buttons behaved the same. Fix submitted by Shikha Mishra in pull request 19302. GitHub-19285
- The note that describes the Use in Layered Navigation: Filterable (no results) property now better describes the property. Fix submitted by Vladyslav Podorozhnyi in pull request 19037. GitHub-14007
- Magento no longer throws SQL errors when table prefixes are used. Fix submitted by Peter O’Callaghan in pull request 18412. GitHub-18357
Gift cards
- Magento now consistently validates gift card prices according to the constraints of the relevant store locale.
- Magento now displays the correct creation date for a gift card when the Lifetime field is populated.
- Fixed the rendering of the check notifications counters icon on the Admin. Fix submitted by Abrar Pathan in pull request 19053. GitHub-18887
old_path: new_path
path mappings have been added for JavaScript files that have been relocated torequirejs-config.js
. Fix submitted by rbayet in pull request 19583. GitHub-19291, GitHub-16302
- Calling
getCurrentUrl
on a store no longer adds the___store
parameter when store code in URL is set to yes and the current store is not the same store requested in the URL. Fix submitted by Nazar in pull request 19135. GitHub-18941, GitHub-16302
- The Click for price button on the home page now works as expected. Fix submitted by Ravi Chandra in pull request 19663. GitHub-15922
Gift message
- Magento no longer displays unselected gift options when a customer selects Check Out with Multiple Addresses for an order. Previously, Magento displayed unselected gift options for the order.
- Fixed misalignment of the Edit and Remove buttons on the gift option popup that Magento displays when a customer adds a product to the shopping cart. Fix submitted by Ajay Ajabale in pull request 20605. GitHub-20604
Gift registry
- Magento now shows the correct price for configurable products in a shared gift registry. Previously, Magento displayed the original price instead of the special price for configurable products.
Gift wrapping
- You can now add gift wrapping to the shopping cart to an already added product without having to add an additional product.
Google Analytics
referenceContainer
has been changed toreferenceBlock
in the Google Analytics module. Fix submitted by Petar Sambolek in pull request 18290. GitHub-16497
Google Tag Manager
- The Google Tag Manager
AddToCart
event now fires reliably on the product page when Stores > Configuration > Sales > Checkout > Redirect to Shopping Cart is set to yes.
Import/export
- Magento now displays an informative error after you run check data, and also blocks import and product creation, when SKU strings are too long. Previously, the check data process permitted you to proceed with the import, but the import failed due to a system error. Fix submitted by Ravi Chandra in pull request 18639. GitHub-17865
- Magento now successfully imports products that have a fixed price custom option with a price of zero. Previously, the importer failed when trying to update products with a price of zero. Fix submitted by Antun Matanović in pull request 18284. GitHub-17616
- The memory required to export the media gallery has been significantly reduced. GitHub-17320
-
We’ve resolved the following issues with imported images:
-
images of all sizes reverted to the default placeholder size after import.
-
images that were removed through the Admin before import returned after import. Magento now displays an informative error message if images are not imported as expected.
-
- Special characters in the CSV import file no longer trigger a general system exception. Previously, special characters (for example,
ƒ
,ª
, and›
) halted the check data phase of import.
- URL Key columns that contain accented characters are now converted properly after the import of a CSV file. Previously, if you manually assigned a URL key to a product in the Admin that contained an accent character or punctuation, Magento converted it to the regular character or removed it.
- Magento now correctly updates existing product URLs during import. Previously, Magento update existing URLs with the new URLs, but displayed a 404 error if you tried to access the product from the new URL.
- Magento now retains product order within a category after import.
- You can now properly set data for drop-down attributes during product import in deployments with multiple storeviews.
- If you enter a value of zero for a customer group price discount by percentage when setting advanced pricing for a product, Magento now prompts you to enter a valid value. Previously, Magento threw an error.
- The import process now supports
add_update
along with the default behaviorappend
. GitHub-6193
- The upsert category process during product import now generates freshly created category URL rewrites globally and not just for the default scope. Previously, Magento created URL rewrites for the default website scope only. Fix submitted by utietze in pull request 18271. GitHub-18234
- Magento now indicates correct stock status (in stock/out-of-stock) after importing products that have an indicated quantity but a status of out-of-stock from a CSV file. Previously, Magento imported the product quantity correctly, but not the stock status. Fix submitted by p-bystritsky in pull request 20180. GitHub-15950
- We’ve resolved multiple issues that users previously encountered when importing configurable products with images and virtual products. Previously, image import failed under certain circumstances, and Magento displayed these messages:
Imported resource (image) could not be downloaded from external resource due to timeout or access permissions in row(s)
andProducts are imported but configurable product has no image in Magento
. Fix submitted by Rajneesh Gupta in pull request 20127. GitHub-20098
\Magento\ImportExport\Block\Adminhtml\Export\Filter::_getSelectHtmlWithValue()
method no longer overwrites the$value
argument. Previously, the same name was used for different$value
variables. Fix submitted by Rajneesh Gupta in pull request 20625. GitHub-20624
- Magento now exports configurable products based on swatches with the correct Admin and Default Store View labels. Previously, the
configurable_variations
column for these configurable products contained the wrong values after import.
Infrastructure
- Magento now supports Elasticsearch 6.x. Fix submitted by Romain Ruaud in pull request 21458.
- Magento now supports Redis 5.0.
- Expected backup and restoration functionality has been restored and MySQL View support is supported while preserving backward compatibility with pre-existing modules. Fix submitted by community member Stepan Furman in pull request 21151.
transparent.js
has relocated, and orders can now be created from the Admin using PayflowPro and Authorize.Net. Previously, orders created from the Admin using PayflowPro failed, and Magento displayed an informative message indicating that an account number was invalid. Fix submitted by Patrick McLain in pull request 19764. GitHub-19763
json_encode
errors are now caught and logged in the console.log. Previously, the JSON serializer threw an error, which blocked all frontend behavior. Fix submitted by Tommy Quissens in pull request 16154. GitHub-14937
app/bootstrap.php
has been updated to correctly define supported PHP versions. Fix submitted by Fabrizio Balliano in pull request 19455. GitHub-19453
- An incorrect parameter in
getCreatedAtFormatted($format)
has been corrected. Fix submitted by Jaimin Sutariya in pull request 19537. GitHub-17442
- A syntax error in
magento2/lib/internal/Magento/Framework/Cache/Backend/Database.php
has been corrected. Fix submitted by Nirav Kadiya in pull request 19634. GitHub-13309
-
Magento no longer throws an error when you send an email from the command line. Previously, Magento threw an exception because
$debugHintsPath
was missing. Fix submitted by p-bystritsky in pull request 18991. GitHub-10440 -
Message queue topic names generated as a result of asynchronous and bulk REST calls are now based on service contract names. Currently, topic names reflect the PHP class and method names that should be invoked to handle processing. For example, a topic that was named using the older conventions (
async.V1.customers.POST
) might be namedasync.magento.customer.api.accountmanagementinterface.createaccount.post
. This new naming is more semantic and allows the reuse for other Magento services.
Integration
- Magento no longer throws an exception when you navigate to the OAuth page (Backend > Stores > Configuration > Services > OAuth). Fix submitted by Mahesh Singh in pull request 18750. GitHub-18655
- The Last Logged In value displayed on the Admin’s customer account page is now updated as expected when a customer is authenticated through REST. Fix submitted by Prakash in pull request 18973. GitHub-17488
- Integrations are no longer reset after running the
bin/magento setup:upgrade
command. Fix submitted by Pratik Oza in pull request 18273. GitHub-12095
Klarna
-
Added support for Magento 2.2.0 through 2.2.1.
-
Changed types for the specific order line items.
-
Corrected issues in the installation and upgrade scripts.
-
Added a try-catch block around checking customer default addresses.
-
Added check to confirm that website T&Cs have been agreed to before authorizing payment.
-
Fixed error with virtual products.
Layered navigation
- You can now filter products based on color.
Magento Shipping
-
Updating an order destination prior to creating a shipment now results in the shipment being sent to the new destination.
-
Shipments that contain the same item across multiple packages will now correctly update the shipped amount.
MSRP
- MAP (minimum advertised price) prices for the simple products that belong to a configurable product are now supported. MAP prices for these products are now successfully handled and displayed on the configurable product page and the category page display of the configurable product.
Newsletter
- Magento now sets the correct
store_id
for each store when a customer subscribes to a newsletter from more than one store. Fix submitted by Eduard Chitoraga in pull request 19195. GitHub-19172
- Customers are no longer unsubscribed to a newsletter as a result of a password reset email request when Newsletter Need to Confirm is set to yes on the Admin. Fix submitted by Janak Bhimani in pull request 18795. GitHub-17954
- Magento now permits only one newsletter subscription per email address. Previously, when a website had multiple store views, a customer could subscribe multiple times to a newsletter with one email address.
- Magento now displays an informative message when you click the unsubscribe link in the newsletter email.
- You can now add a custom field to a newsletter in the position of your choice by editing the newsletter configuration file (
app/code/Magento/Newsletter/etc/adminhtml/system.xml
). Previously, you could add a new field but could not select where it would appear in the newsletter. Fix submitted by Burlacu Vasilii in pull request 19419. GitHub-19418
- A logged-in user who already has an account can now use the footer to sign up for a newsletter subscription. Previously, this user received an error message, and Magento did not subscribed her to the newsletter. Fix submitted by Ravi Chandra in pull request 19164. GitHub-8952
- If a customer tries to subscribe to a newsletter with an email that already has a subscription associated with it, Magento now warns the customer rather than throws an exception. Fix submitted by Dharmesh Vaja in pull request 19416. GitHub-19404
- You can now search for or reset the filter on newsletter problem reports from the Admin. Previously, Magento did not display filter reports when adminstrators used FireFox. Fix submitted by Govind Sharma in pull request 20829. GitHub-20828
Orders
- The address form in the Admin order creation workflow has been refactored to improve performance.
- Administrators now need sales email privileges to send order comment emails to customers.
Page cache
- Pages opened by URL redirect now display prices in the currency set for the appropriate store. Previously, the opened page contained prices in the default currency (USD) rather than the selected currency for the store.
Payment methods
- Magento now populates the estimated billing address field on the checkout page with the default billing address as expected when the cart contains virtual products only. Previously, when a signed-in customer with different default shipping and billing addresses had a cart containing only virtual products, the cart estimation field was populated with the default shipping address information instead of the default billing address information. Fix submitted by Lucas Calazans in pull request 18095. GitHub-17744
- Invoice PDFs now include a populated FTP (Fixed Product Tax) amount field for orders when using Weee tax and FPT is enabled. Previously, this information was displayed in order and invoice views, bot not captured in the PDF. Fix submitted by Mahesh Singh in pull request 19061. GitHub-18617
- When an order placed with PayPal fails during checkout, Magento no longer processes payment for the order. Previously, orders that failed during checkout when being processed through PayPal were processed.
- A pop-up window no longer blocks completion of checkout using Braintree PayPal on a mobile device.
- When a customer selects PayPal as a payment method but then applies a gift card, Magento now reverts to zero subtotal checkout. Previously, the order failed at the review step if a gift card were applied.
- Orders created with eWay as a payment method now contain the same credit card information, which is included in the Authorize.Net response. Previously, the order did not contain any information regarding the credit card.
- Magento now displays successful orders paid for with eWay. Previously, Magento did not display completed errors even after the transaction was accepted by eWay.
- The
getList()
method now returns the vault data total count as expected. Fix submitted by Andrea Parmeggiani in pull request 19707. GitHub-19706
- You can now use REST to create an order without payment. Previously, when using REST to submit an order without a payment, Magento threw an error. Fix submitted by Vishal Gelani in pull request 18521. GitHub-15652
- Payment methods are now grouped properly in the core source model.
\Magento\Payment\Model\Config\Source\Allmethods
class in the Magento core can be used as a source model for backend configuration fields. It displays available payment methods grouped by payment provider. We’ve added groups for previously missing payment options (PayPal, Authorize.Net, and Braintree methods). Fix submitted by Wojtek Naruniec in pull request 19665. GitHub-19664
- Fixed misalignment of the save-for-later checkbox on the Admin create order credit card details page. Fix submitted by Kajal Solanki in pull request 20233. GitHub-20232
- The Authorize.Net payment method has been migrated to the
accept.js
API on both the storefront and Admin.
- PayPal Express Checkout has been updated to
checkout.js v4
. This API replaces the deprecated API Express Checkout - NVP/SOAP. This update provides Magento with a single integration but with multiple payment options that merchants can choose when activating the integration. See PayPal Express Checkout
- You can now place an order using Cybersource payment from the Admin.
- Administrators can now set additional Cybersource profile credentials (Profile ID, Access key, Secret Key) from the Admin and place an order from the Admin when different credentials are used on website level. Previously, Cybersource denied payments when a merchant deployed their Admin on a different domain than the store.
- Tax is now calculated as expected for virtual products when PayPal is used as a payment method.
Performance
-
New customer address handling improves the processing of many addresses on the Admin customer details page. This functionality was rewritten with UI components to increase platform performance, which in turn facilitates the management of customers with 3000 and more addresses. This refactoring includes these changes:
-
All actions on the Customer Addresses tab are now performed asynchronously with AJAX. This tab now contains the default billing address and default shipping address UI component blocks, customer addresses listing or grid, and customer address form in a modal window.
-
\Magento\Customer\Model\Customer\DataProvider
has been replaced by\Magento\Customer\Model\Customer\DataProviderWithDefaultAddresses
to support the asynchronous management of customer addresses.
-
Product video
- You can now pause product videos on YouTube on storefronts running on Internet Explorer 11.x.
Quote
- You can now update a shopping cart that contains a reserved order number (for example, 000000651). Fix submitted by Burlacu Vasilii in pull request 19130. GitHub-19101
- You can now use REST to set billing information for a customer (
customerId
) with an existing address. Previously, Magento threw an exception during address validation. Fix submitted by Patrick McLain in pull request 18704. GitHub-17485
- You can now request a quote on a storefront running on iOS 11.3.1.
- We fixed an issue with inaccurate floating point calculations during checkout. Fix submitted by Jay Ghosh in pull request 18185. GitHub-18027
- Magento now saves the correct
quote_item_id
values for products during checkout for an order being shipped to multiple addresses. Fix submitted by Mahesh Singh in pull request 19192. GitHub-18349
Reports
- Administrators with their role scope set to
custom
can now view the abandoned carts report.
- Magento no longer displays a negative number in the dashboard to represent a canceled order. Fix submitted by Nirav Patel in pull request 19372. GitHub-18754
- Magento now refreshes reports statistics as expected when you select the Refresh Lifetime Statistics option from the Actions menu of the Reports > Refresh Statistics page. Previously, you were redirected to a 404 page when you selected this menu option. Fix submitted by Eduard Chitoraga in pull request 20820. GitHub-20819
- Magento now displays correct prices for products at checkout when a customer uses a credit card and Authorize.Net is enabled. Previously, order items had the original price of $0.0. Fix submitted by Patrick McLain in pull request 18768. GitHub-16050
Reviews
- Administrators can now access product ratings in deployments with multiple websites running different locales. Fix submitted by Saphal Jha in pull request 18888. GitHub-18192
- The Save and Next and Save and Previous buttons in Marketing > Reviews now work as expected.
- You can now add a product review from the Admin. Previously, when you clicked New Review, Magento displayed this error:
Error message showing : A technical problem with the server created an error. Try again to continue what you were doing. If the problem persists, try again later
. Fix submitted by Suneet K. in pull request 20146. GitHub-20122
- Pending Reviews are now correctly labeled under System > User Roles > Add New Role > Role Resources, and Magento now displays a new Pending reviews menu under Marketing > User Content. Previously, Magento displayed the Reviews menu twice. Fix submitted by Piyush Dankhara in pull request 20936. GitHub-20924
Rewards
- Customers are now subscribed as expected to email notifications about reward points.
- Magento now allocates rewards points for converting an invitation to a customer when Require Emails Confirmation is set to yes.
- The order status label on the customer order status page can now be translated. Fix submitted by p-bystritsk in pull request 19182. GitHub-14849
/V1/orders/{id}
now retrieves information about used reward points.
Return Merchandise Authorizations (RMA)
- Magento now displays the correct amount in the Remaining Quantity field after Magento has processed a return.
- Return attributes that have the Values Required attribute set to no no longer break the storefront display of those attributes.
- Administrators can now process returns when a request includes a required image attribute. Previously, the Return Items tab displayed a validation error even though the image had been uploaded, and if you clicked on Details, Magento displayed this message:
Please select a file
.
- You can now return bundle products from the Admin. Previously, when you clicked Submit Returns, Magento displayed an informative error message, and did not create an RMA.
Sales
- You can now remove a custom price from a product during order creation from the Admin.
- The message that Magento displays when a merchant tries to create a credit memo for an order with no shipping charges has been made more informative. Fix submitted by Burlacu Vasilii in pull request 18844. GitHub-6731
- You can now print order information from the customer dashboard. Previously, when you tried to print order information from the customer dashboard, Magento displayed this error:
Fatal error: Call to a member function getRealOrderId() on null in /vendor/magento/module-sales/Block/Order/PrintShipment.php
. Fix submitted by Pratik Oza in pull request 18272. GitHub-10530
- Magento no longer marks email as not sent when the email copy fails due to exception. Previously, Magento marked this email as not sent, and subsequently continued to resend the email. Fix submitted by Petar Sambolek in pull request 18288. GitHub-17152
- The Add to Cart button in the Recently Ordered block now works as expected. Fix submitted by Oleksandr Miroshnichenko in pull request 19039. GitHub-13157
- Magento now displays bundle products’ child products on the My Account > My Orders > View Order page. Fix submitted by Torben Höhn in pull request 19318. GitHub-16434
- You can now issue a partial refund to store credit for an order made with an online payment method.
- You can now create a credit memo for an order that contains taxes and discounts. Previously, when you tried to create this credit memo, Magento displayed an informative error.
- You can now create a credit memo for an order with no payment required. Previously, when an order was placed with no payment required, the Credit Memo button was not displayed on the order.
- Orders for bundle products created from the Admin now display correct product prices.
- Company logos are now displayed correctly in printed PDF versions of invoices and shipment statements.
- The Sales table now displays company information in billing and shipping addresses.
- Magento no longer adds giftwrap tax to a credit memo twice.
- Magento now displays product price and shipping costs in the default currency that was configured for that specific website for orders created from the Admin. Previously, when you have multi-site configuration with different default currencies for each website, the product and shipping prices shown while creating an admin order are incorrect.
- Magento now displays a success message when you create an order through the Admin and the create shipment and Email copy of invoice checkboxes are checked. Fix submitted by Surabhi Srivastava in pull request 20142. GitHub-19942
- Files uploaded for custom options can now be downloaded even when the product option is no longer available. Previously, these files could not be downloaded. Fix submitted by Mahesh Singh in pull request 20354. GitHub-20277
- Fixed an incorrect class name on orders and returns page on the Admin. Fix submitted by Shikha Mishra in pull request 19784. GitHub-19780
- Fixed misalignment of the Update Qty button on the sales order invoice. Fix submitted by Kajal Solanki in pull request 19799. GitHub-19796
- Credit memos now accurately calculate refunds when default shipping charges are changed to zero. Fix submitted by Wojtek Naruniec in pull request 19900. GitHub-19899
- The
transportBuilderByStore
class has been removed. Previously, this class was the cause of undesired repeat emails. Fix submitted by gwharton in pull request 18471. GitHub-7739
- The
last_trans_id
column of thesales_order_payment
table has been updated to handle the full order reference values for Amazon and Klarna extensions. Fix submitted by Ian Cassidy in pull request 18620. GitHub-18615
- You can now programmatically cancel an invoice when the invoice state is set to
STATE_PAID
. Fix submitted by Max O in pull request 19462. GitHub-18509
- The performance of the Admin order creation page when handling many addresses has been improved.
- Magento now displays bundle options on the Items Ordered tab of the My Account order page. Fix submitted by Vishal Gelani in pull request 19254. GitHub-16434
- The email that customers receive after completing an order now contains tracking information for their order only. Previously, Magento included tracking information for other orders, too. Fix submitted by Nazar in pull request 19981. GitHub-19887
SalesArchive
- Archived orders no longer reappear in the Order Management table after cron runs.
SalesRule
- The sales rule indexer now runs without error. Previously, the sales rule indexer returned an error during reindexing because of the
Magento_AdvancedSalesRule
module.
- The payment method option is now displayed under the shopping cart rules condition tab. Previously, when you navigated to Marketing > Promotions > Cart Price Rules and opened the Conditions tab on a rule, Magento did not display payment method options. Fix submitted by p-bystritsky in pull request 20042. GitHub-12549
Search
- The default sort order field now works as expected on the Catalog Search results page.
- Searching for a synonym that contains a hyphen and number now returns the same results as any other search term in the group.
-
Layered navigation for Elasticsearch now includes all product sizes. If the Filterable (with results) option is set for a product attribute, then:
-
Layered navigation includes only those filters for which matching products can be found.
-
Any attribute value that already applies to all products shown in the list should still appear as an available filter.
-
Attribute values with a count of zero (0) product matches are omitted from the list of available filters.
-
See Filterable attributes for more information.
- Full text search for Elasticsearch no longer includes the
date
attribute.
- Layered navigation results no longer include price ranges that contain no products.
- Magento now returns a customized layout handle when there are no results for a search. This customized layout handle supports the addition of custom blocks, which permits you to change the layout of the No results page. Fix submitted by Yevhenii Dumskyi in pull request 18069. GitHub-18038
- Elasticsearch now correctly returns only products whose SKUs contain dashes when your search criteria specifies SKUs that contain dashes. Previously, search results contained unmatched products as well as products whose SKUs contained dashes. Fix submitted by Nazar in pull request 20727. GitHub-20716, GitHub-20689, GitHub-9988
Shipping
- Magento now displays the appropriate error message when free shipping is not available for an order during check out. Fix submitted by vaibhavahalpara in pull request 18507. GitHub-17977
- Shipments created through REST now return tracking information as expected. Previously, Magento created shipment notifications without a tracking number when a shipment was created using REST.
- Table rates now work as expected when using the AE code (Armed Forces Europe) when calculating weight vs destination table rates.
- Magento now uses shipping table rates from the correct store in multistore deployments.
- Magento no longer throws an exception when a customer tries to place an order whose components will be shipped to different addresses. Fix submitted by Govind Sharma in pull request 19941. GitHub-19940
- Fixed misalignment of elements on the shipping information page that Magento displays when you click Check Out with Multiple Addresses from the shopping cart. Fix submitted by Arvinda Kumar in pull request 20564. GitHub-20563
- Magento now uses version 6.0 of the DHL XML Services schema for the DHL shipping method.
Sitemap
- Sitemaps now display correct base URLs for multi-store deployments. Fix submitted by Toan Nguyen in pull request 18228. GitHub-17999
Staging
- An administrator with a custom (limited) role can now edit and schedule updates to CMS content pages.
- Shopping cart price is now updated as expected in staging preview mode.
- Restricted users with access to specified sections can now save a scheduled update. Previously, Magento threw a
forbidden
error.
- Updates containing zero objects are now removed as expected from the dashboard. Previously, Magento did not remove updates with zero objects.
- You can now successfully create a CMS static block and schedule it for a staging update. Previously, after the update, Magento displayed an empty container on top of the page instead of the CMS content block.
- Magento no longer throws an error when you use REST to update a product’s special price if the product previously had a scheduled update to its special price or had a special price set from the Admin.
Store
- The switcher-option’s link
Magento/Store/view/frontend/templates/switch/languages.phtml
template has been modified to support navigating back to previous pages. Previously, you could not navigate back to the previous store view when you clicked the Back button when viewing the store on Firefox. Fix submitted by Mobecls in pull request 19037. GitHub-14007
- You can now define the
root_category_id
in the projectconfig.php
. Fix submitted by Lars Roettig in pull request 18958. GitHub-18956
Swatches
- Store views now show the correct swatch values. Fix submitted by Malyovanets Nickolas in pull request 18988. GitHub-17890
- Product images now display the color option you chose when you applied a color filter in layered navigation. Previously, wrong colors were randomly displayed.
- You can now change the size of a swatch image as expected. GitHub-6382
- All thumbnail images reload as expected after you click on a configurable option when a configurable product detail page has more than fourteen thumbnail images. Previously, not all thumbnail images reloaded.
- You can now change an attribute type from swatch to dropdown without using data. Previously, changing an attribute type from swatch to dropdown deleted swatch options for all attributes. Fix submitted by Pieter Hoste in pull request 20421. GitHub-20396
- Fixed styles on the Add Swatch page.
TargetRule
- Magento no longer throws an exception when Target Rules are set to a rotation mode other than SHUFFLE. (You can set rotation modes in Admin > System > Configuration > Catalog > Catalog > Rule-Based Product Relations.)
- Magento no longer throws a fatal error when price is used in a Target Rule for actions.
Tax
- The Not yet calculated string for the tax field in the checkout page’s summary section can now be translated. Fix submitted by p-bystritsky in pull request 19174. GitHub-18939, GitHub-7849
- Credit memos now include only the taxes on the product itself as expected. Previously, the credit memo included the shipping tax as well even when shipping costs were not refunded.
- Tax is no longer added when a customer group is changed to Valid VAT ID - Intra-Union, which has no tax rules assigned to it.
- Tax reports now correctly calculate taxes for orders that are placed in a zip code that has two or more tax rates assigned.
- Magento no longer uses the default tax information set in Stores > Configuration > Sales > Tax customer, quote, and order data. Fix submitted by Nirav Kadiya in pull request 19387. GitHub-16684
Testing
- Integration tests now respect module status as defined in
config-global.php
. This permits you to enable only the modules you typically keep enabled while still saving system resources. Fix submitted by Pratik Oza in pull request 18201. GitHub-15196
- Unit test annotations now assert exception messages correctly. GitHub-6731
Theme
- You can now upload favicons and logo when editing headers for a store view. Previously, Magento threw an error. Fix submitted by Wiard van Rijin pull request 18851. GitHub-18688
- The text attribute implemented on the product page within the mobile theme now fluidly displays the entire text value. Previously, long values were truncated.
- The user agent rule now sets correct templates for product pages. Previously, the
footer.phtml
andabsolute_footer.phtml
templates were loaded from the desktop theme instead of the mobile theme, regardless of the user agent.
- We’ve improved the display of the navigation menu on mobile deployments. Previously, Magento displayed only a portion of any submenu accessed from a top menu.
- Wishlist and compare links now appear for related products in portrait mode in mobile view.
- Text now remains in the header area when you resize a page in deployments that are running in Internet Explorer.
- Clicking on the store logo on the home page now reloads the page. Fix submitted by gwharton in pull request 19198. GitHub-19142
- Fixed misalignment of the Add to cart button on the bundle product page in portrait orientation in mobile view. Fix submitted by Ajay Ajabale in pull request 20195. GitHub-20193
- Fixed alignment issue with sort results on list product page. Fix submitted by suryakant-krish in pull request 19640. GitHub-19639
- The
alt
attribute on the logo image is now properly escaped. Fix submitted by Erik Pellikka in pull request 19270. GitHub-19269
Translation and locales
- Child themes now inherit translations from their parent theme as expected (
en_US.csv
translation dictionary). Fix submitted by Vladyslav Podorozhnyi in pull request 19018 and 19144. GitHub-17833
- Swedish (Finland) locales are now supported. Fix submitted by p-bystritsky in pull request 19203. GitHub-13095
- The message that Magento displays when you successfully add a product to your cart or shopping list is now available in the i18n translation file. Fix submitted by Ayaz Mittaqi in pull request 18938. GitHub-18931
UI
- Removed use of the
escapeJS
method inapp/code/Magento/SendFriend/view/frontend/templates/send.phtml
. Fix submitted by Abrar Pathan in pull request 19053. GitHub-18887
- Fixed the misalignment of drop-down menus on the Advanced Pricing page. Fix submitted by Ashutosh Srivastva in pull request 18790. GitHub-18775
- Magento no longer includes not-yet-visible new orders on the Orders page when you select all orders for a mass action (such as update or cancelation). Previously, when you selected all orders on the Orders page for a mass action, any new order simultaneously being placed on the storefront was included in the mass action. Fix submitted by Yevhenii Dumskyi in pull request 19204. GitHub-18983
- You can now set default values for the WYSIWYG edit field for editing form UI components. Fix submitted by Oleksandr Miroshnichenko in pull request 19048. GitHub-10048
- The global search icon on the Admin is now correctly aligned. Fix submitted by Kajal Solanki in pull request 18940. GitHub-18913
- Merchants can now change the currency symbol back to its default value from the Admin in single-store mode. Previously, when a merchant tried to change this symbol back to its default value, Magento displayed a success message, but did not change the currency symbol back to the default value. Fix submitted by Pratik Oza in pull request 18204. GitHub-17567
- Magento now correctly renders apostrophes as entered in text fields.
- Admin tables now work as expected when single-store mode is set to on. Previously, column positioning in these tables was not preserved when the page was refreshed. Fix submitted by gwharton in pull request 18405. GitHub-12070
- WYSIWYG editor functionality is now available in all rows of the dynamic rows UI component. Previously, this functionality was available in the first row only.
- Fixed incorrect display of the pager on the My Orders page. Previously, the pager obscured page links, which prevented customers from navigating to other pages. Fix submitted by Kajal Solanki in pull request 19298. GitHub-19286
- Usage of unsupported includes has been removed. Previously, when you chose a user to edit on the customers grid, Magento installations running on Internet Explorer 11.x did not load the expected page, but instead displayed this message:
object does not support method includes
. Fix submitted by Oleksandr Miroshnichenko in pull request 19010. GitHub-18562
URL rewrites
- The storefront now properly displays the order of categories when you move categories in the Admin.
- Product URLs are now based on the configuration information from the Admin, not the order of records in the database. Previously, the order of records in the database affected the generated URL, and some products showed category paths for product URLS when Use Categories Path for Product URLs was set to no.
- The import process now retains permanent redirects for outdated product URLs as expected. Previously, the import process removed these redirects, and when you tried to open the changed product by the old URL key, Magento displayed a 404 page. Fix submitted by Ankur in pull request 20344. GitHub-20282
VAT
- Greek VAT numbers can now be validated. Fix submitted by Pieter Hoste in pull request 20548. GitHub-6960
Visual Merchandiser
- Visual Merchandiser now correctly sorts configurable product prices in Tile view.
Web API
- The response for
GET V1/orders/:orderId
now containsbundle_option
andproduct_option
information as expected.
- All extension attributes listed in the documentation for
salesOrderRepositoryV1
API are now available.
- Access restrictions on the order API are now enforced as expected. Previously, adminstrators with restricted privileges had complete access to orders. Fix submitted by Milind Singh in pull request 20170. GitHub-20169
Wishlist
- Magento no longer retains entries for deleted products in the database
wishlist_item_option
table.
- You can now add a configurable product with no options to a gift registry from a wishlist.
- You can now remove a comment from a wishlist product as expected. Previously, Magento did not remove the comment, even after you clicked Update Wish List. Fix submitted by Khodu in pull request 20247. GitHub-20245
- Corrected misalignment of the Edit and remove item links on the wish list page when displayed on a screen with a resolution of 640 x 767. Fix submitted by Nainesh Waghale in pull request 20400. GitHub-20399
- Pagination controls on the wishlist page have been restored. Fix submitted by Ratnesh Kumar in pull request 19305. GitHub-19292
Known issues
Issue: Cart Price rules that were created with undefined end dates (that is, with the To field left empty) are not displayed as expected on the Staging dashboard after after upgrading from Magento Open Source to Magento Commerce 2.3.1.
Issue: The Web Setup Wizard is not available from the Admin under these conditions:
-
base URLs are set to HTTP.
-
Use Secure URLs in Admin is set to on.
-
HTTPS is disabled.
Workaround: You must enable HSTS from Stores > General > Web > BaseUrls (Secure).
Issue: For Inventory Management, asynchronous migration of data between sources will encounter issues due to changes in Asynchronous APIs with topic names reflecting PHP class and method names. Workaround: We recommend using synchronous operations, setting Run asynchronously to “No”. To configure, see Configure Global Options in the Magento User Guide.
Issue: The CGI URL gateway in the UPS module has been updated from HTTP to HTTPS. Consequently, the UPS shipping method does not populate correctly. Workaround: Confirm that the Gateway URL uses the HTTPS protocol in the UPS Shipping Method Configuration.
Updating an existing setting:
If UPS Type is set to United Parcel Service
in the UPS Shipping Method Configuration, you must manually change the protocol of the Gateway URL from HTTP to HTTPS. Example: https://www.ups.com/using/services/rave/qcostcgi.cgi
To configure UPS for the first time:
-
Navigate to Stores > Settings > Configuration > Sales > Shipping Methods. Then, expand the UPS section.
-
At the UPS Type field, clear the Use system value checkbox. Then, change UPS Type to
United Parcel Service XML
. The Gateway URL populates correctly when this value is selected. -
Tap Save Config.
Issue: The Async/Bulk Web APIs support only the default store view. A hot fix for this issue will be available in the near future. This issue has been resolved with the Scope parameter for Async/Bulk API patch, which is now available. See Patch for Magento Framework Message Queue and Store Scopes for a full discussion of this scope-related issue and patch contents.
Issue: You cannot use the Magento Extension Manager to install extensions purchased from the Magento Marketplace. Workaround: Install extensions from the command line as described in General CLI installation. See Extension Manager shows no extensions in Magento Commerce 2.3.x.
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 |
---|---|---|
mage2pratik | #18020 | |
TBlindaruk | #18035 | |
yaroslav-zenin | #18043 | |
rogyar | #18047 | |
mage2pratik | #18049 | |
dmytro-ch | #18072 | |
mage2pratik | #18102 | |
dmytro-ch | #18117 | 18101 |
sidolov | #18136 | |
mage2pratik | #18142 | |
evktalo | #16351 | |
tiagosampaio | #17685 | |
hryvinskyi | #18122 | |
mage2pratik | #18141 | |
mage2pratik | #18187 | |
AurelienLavorel | #18198 | |
mage2pratik | #18202 | |
mage2pratik | #18203 | |
mage2pratik | #18205 | 5797, 17780 |
hostep | #18207 | 13720, 14050 |
eduard13 | #18211 | |
hryvinskyi | #18064 | |
jayankaghosh | #18149 | 18094 |
schmengler | #18173 | |
mage2pratik | #18201 | 15196 |
hostep | #18212 | |
hostep | #18209 | 17190 |
nntoan | #18228 | 17999 |
mage2pratik | #18231 | |
hostep | #18244 | 13156 |
mage2pratik | #18272 | 9830, 10530 |
mage2pratik | #18273 | 12095 |
sambolek | #18290 | 16497 |
sambolek | #18288 | 17152 |
mage2pratik | #18295 | 17582 |
VincentMarmiesse | #18292 | |
sreichel | #18303 | 18079 |
dmytro-ch | #18312 | |
dmytro-ch | #18308 | 18162 |
haroldclaus | #18322 | |
ihor-sviziev | #18331 | 18330 |
jignesh-baldha | #18334 | |
rogyar | #18344 | |
arnoudhgz | #17803 | |
mage2pratik | #18204 | 17567 |
VincentMarmiesse | #18221 | |
oleksii-lisovyi | #18257 | |
ulftietze | #18271 | 18234 |
miguelbalparda | #18343 | |
mage2pratik | #18394 | |
mage2pratik | #18404 | |
gwharton | #18405 | 12070 |
ArtsiomBruneuski | #18416 | 14555 |
lewisvoncken | #18434 | 3283 |
hugovk | #18439 | |
gelanivishal | #18481 | 18477 |
samgranger | #18487 | |
eduard13 | #18490 | |
gelanivishal | #18498 | |
gelanivishal | #18499 | 17770 |
gelanivishal | #18500 | 17493 |
peterjaap | #18505 | |
peterjaap | #18506 | |
hryvinskyi | #18065 | |
higi90 | #18160 | |
eduard13 | #18210 | 13405 |
ihor-sviziev | #18370 | |
tufahu | #18365 | |
loganstellway | #18393 | 12969 |
strell | #18437 | 18131 |
zack6849 | #18476 | |
ihor-sviziev | #18494 | 18164 |
vaibhavahalpara | #18507 | 17977 |
BezV8 | #18522 | |
peterjaap | #18529 | |
dmytro-ch | #18538 | |
peterjaap | #18540 | |
mage2pratik | #18545 | |
aman3103 | #17800 | 17754 |
dmytro-ch | #18546 | |
gelanivishal | #18570 | 9219 |
gelanivishal | #18571 | 12479 |
zack6849 | #18573 | |
dmytro-ch | #18600 | |
luukschakenraad | #18596 | 18475, 18589 |
mage2pratik | #18608 | |
speedy008 | #18638 | 18581 |
navarr | #17296 | |
navarr | #17300 | |
leandro-rosa | #18080 | 17830 |
amatanovic | #18284 | 17616 |
stkams | #18333 | |
alexeya-ven | #18488 | |
deninchoo | #18614 | |
rogyar | #18627 | 18605 |
gelanivishal | #18667 | |
sreichel | #18671 | |
vasilii-b | #18694 | |
gwharton | #18702 | 15035 |
vasilii-b | #18707 | |
vasilii-b | #18708 | |
eduard13 | #18710 | |
StrikerRUS | #18723 | |
mage2pratik | #18733 | 2686 |
bartoszkubicki | #18019 | 12300, 16572 |
LucasCalazans | #18095 | 17744 |
VincentMarmiesse | #18388 | |
pocallaghan | #18412 | 18357 |
udovicic | #18611 | |
lewisvoncken | #18622 | 10205 |
maheshWebkul721 | #18631 | 18268 |
ravi-chandra3197 | #18639 | 17865 |
TomashKhamlai | #18679 | |
idziakjakub | #18689 | 5021 |
pmclain | #18704 | 17485 |
pmclain | #18720 | 13083 |
vasilii-b | #18714 | 4468 |
gy741 | #18725 | |
dmytro-ch | #18730 | 18729 |
gy741 | #18756 | |
p-maguire | #18751 | |
gelanivishal | #18764 | |
TomashKhamlai | #18771 | 18357 |
mage2pratik | #18782 | 15259 |
mage2pratik | #18788 | |
ashutoshwebkul | #18790 | 18775 |
gy741 | #18792 | |
janakbhimani | #18795 | 17954 |
Mardl | #18419 | 12399 |
luukschakenraad | #18590 | 18585 |
tdgroot | #18700 | |
VitaliyBoyko | #18774 | |
vasilii-b | #18798 | 2618 |
okorshenko | #18846 | 18840 |
Rus0 | #18844 | 6731 |
wiardvanrij | #18851 | 18688 |
speedy008 | #18856 | 18854 |
rahulwebkul | #18889 | 18779 |
dmytro-ch | #18897 | |
arnoudhgz | #17805 | |
gelanivishal | #18520 | 4942 |
hiren0241 | #18578 | 18158 |
maheshWebkul721 | #18750 | 18655 |
samuel27m | #18772 | |
vpodorozh | #18807 | 18387 |
wiardvanrij | #18850 | |
hugovk | #18894 | |
speedy008 | #18940 | 18913 |
sreichel | #18946 | |
aheadWorks | #18970 | 18965 |
bnymn | #18083 | 5037 |
thiagolima-bm | #18462 | 18082 |
anujwebkul | #18650 | 18618 |
DanielRuf | #18680 | |
sawebvisum | #18810 | |
ayazwebkul | #18938 | 18931 |
tdgroot | #18968 | |
nmalevanec | #18988 | 17890 |
p-bystritsky | #18991 | 10440 |
omiroshnichenko | #19010 | 18562 |
p-bystritsky | #19026 | 18256 |
agorbulin | #19029 | 18901 |
swnsma | #19040 | 18323, 19003, 19034 |
omiroshnichenko | #19048 | 10048 |
arnoudhgz | #19050 | |
progreg | #19066 | 19060 |
davidalger | #18294 | |
ayazwebkul | #18637 | |
mmenozzi | #18727 | |
rahulwebkul | #18900 | 18839 |
nmalevanec | #18986 | |
cezary-zeglen | #18998 | 17625 |
vpodorozh | #19018 | 17833 |
vpodorozh | #19037 | 14007 |
dimasalamatov | #19087 | |
Mobecls | #15961 | 14294 |
t-richards | #18814 | |
maheshWebkul721 | #18816 | 18150 |
maheshWebkul721 | #19061 | 18617 |
gelanivishal | #18565 | |
dmytro-ch | #18906 | |
eduard13 | #19103 | |
vasilii-b | #19130 | 19101 |
vovayatsyuk | #19143 | 19127 |
vpodorozh | #19144 | 17833 |
eduard13 | #19175 | |
orlangur | #19185 | |
sivaschenko | #19194 | |
progreg | #18952 | 6803 |
larsroettig | #18958 | 18956 |
prakashpatel07 | #18973 | 17488 |
vasilii-b | #19027 | 18979 |
p-bystritsky | #19170 | 5929, 18532 |
p-bystritsky | #19174 | 7849, 18939 |
torhoehn | #19179 | 18652 |
godvsdeity | #18773 | |
Karlasa | #18957 | |
p-bystritsky | #18987 | 17638 |
adeptofvoltron | #19009 | |
agorbulin | #19155 | 19082 |
p-bystritsky | #19171 | |
p-bystritsky | #19203 | 13095 |
progreg | #19204 | 18983 |
gelanivishal | #19254 | 16434 |
dmytro-ch | #19264 | 19263 |
schmengler | #18641 | 15828 |
danielgheoltan | #18609 | |
henryktews | #18703 | |
saphaljha | #18888 | 18192 |
agorbulin | #19024 | |
omiroshnichenko | #19039 | 13157 |
abrarpathan19 | #19053 | 18887 |
torhoehn | #19180 | 17635 |
eduard13 | #19183 | |
eduard13 | #19195 | 19172 |
ajardin | #19213 | |
VincentMarmiesse | #19277 | |
dmytro-ch | #19299 | |
DanielRuf | #19326 | |
lisovyievhenii | #19146 | 15931 |
speedy008 | #19298 | 19286 |
torhoehn | #19318 | 16434 |
gelanivishal | #19322 | 19315 |
DanielRuf | #19332 | |
torhoehn | #19350 | 18949 |
Rus0 | #18849 | 17753 |
TomasVotruba | #19325 | |
tiagosampaio | #19366 | |
vasilii-b | #19419 | 19418 |
fballiano | #19455 | 19453 |
bartoszkubicki | #18206 | |
jasonevans1 | #18818 | 14571 |
rain2o | #19176 | 417 |
khodu | #19206 | 9130 |
maheshWebkul721 | #19261 | 19205 |
GovindaSharma | #19408 | 19346 |
Dharmeshvaja91 | #19416 | 19404 |
nickshatilo | #18380 | 18361 |
iancassidyweb | #18620 | 18615 |
pmclain | #18648 | 17680 |
maciejslawik | #19310 | |
DanielRuf | #19331 | |
DanielRuf | #19329 | |
speedy008 | #19405 | 19399 |
Karlasa | #19412 | |
DanielRuf | #19421 | |
dmytro-ch | #19425 | 19424 |
DanielRuf | #19428 | |
maheshWebkul721 | #19437 | 19205 |
omaxmo | #19462 | 18509 |
speedy008 | #19473 | 19472 |
viral-wagento | #19288 | |
rodrigoobiassi | #19295 | |
SikailoISM | #19451 | 19436 |
abrarpathan19 | #19510 | 19509 |
craigcarnell | #19541 | |
torhoehn | #19554 | |
suryakant-krish | #19574 | 19573 |
suryakant-krish | #19580 | 19579 |
gil– | #19599 | |
sivaschenko | #19601 | |
gelanivishal | #18521 | 15652 |
pmclain | #18768 | 16050 |
JeroenVanLeusden | #18832 | |
ravi-chandra3197 | #19164 | 8952 |
gmachure | #19249 | 19247 |
jignesh-baldha | #19569 | |
rbayet | #19583 | 16302, 19291 |
thomas-blackbird | #19617 | |
speedy008 | #19659 | 19657 |
hryvinskyi | #18124 | |
StasKozar | #19038 | 18990 |
gwharton | #19198 | 19142 |
speedy008 | #19493 | 19492 |
cedcommerce | #19633 | 19607 |
suryakant-krish | #19640 | 19639 |
DanielRuf | #19673 | |
ravi-chandra3197 | #19684 | |
lorikrell | #19696 | |
saravananvelu | #17806 | 17754 |
progreg | #18069 | 18038 |
kanduvisla | #19080 | 14861 |
eduard13 | #19134 | 19099 |
Nazar65 | #19135 | 18941 |
dverkade | #19222 | |
shikhamis11 | #19302 | 19285 |
suneet64 | #19514 | |
jaimin-ktpl | #19537 | 17442 |
ssp58bleuciel | #19634 | 13309 |
DanielRuf | #19672 | |
iskolesnyk | #19702 | |
poveu | #19711 | |
milindsingh | #19726 | 19721 |
eduard13 | #19736 | |
developerarun | #19762 | |
milindsingh | #19769 | |
gelanivishal | #19839 | 19836 |
dmytro-ch | #18179 | 18170 |
torhoehn | #18895 | |
BlackIkeEagle | #19104 | |
agorbulin | #19094 | 19085 |
drew7721 | #19124 | 7503, 7710, 8333, 14932, 16074 |
nmalevanec | #19341 | 14510 |
ssp58bleuciel | #19387 | 16684 |
godvsdeity | #19402 | |
ravi-chandra3197 | #19663 | 15922 |
textarea | #19707 | 19706 |
craigcarnell | #19709 | |
shikhamis11 | #19751 | 19605 |
pmclain | #19764 | 19763 |
akshayadixit | #19770 | |
jitendra-cedcoss | #19768 | |
shikhamis11 | #19784 | 19780 |
ssp58bleuciel | #19788 | 14712 |
swnsma | #19824 | |
ihor-sviziev | #19868 | |
ErikPel | #19232 | 17819 |
speedy008 | #19508 | 19507 |
LuciferStrome | #19766 | |
Surabhi-Cedcoss | #19888 | |
speedy008 | #19904 | |
GovindaSharma | #19918 | 19917 |
Brengineer | #19467 | |
Militree | #19620 | 17759 |
suryakant-krish | #19646 | 19645 |
lewisvoncken | #19715 | |
gulshanchitranshcedcoss | #19752 | |
suryakant-krish | #19792 | 19791 |
speedy008 | #19799 | 19796 |
wojtekn | #19900 | 19899 |
bradleyfrye | #19914 | |
agorbulin | #19929 | |
cedarvinda | #19926 | |
agorbulin | #19930 | |
GovindaSharma | #19941 | 19940 |
4lexvav | #19978 | 19977 |
Nazar65 | #19981 | 19887 |
ajeetsinghcedcoss | #20005 | |
hitesh-wagento | #20022 | 20021 |
tiagosampaio | #20046 | |
pmclain | #20050 | 20037 |
torhoehn | #18407 | |
gwharton | #18471 | 7739, 11740, 14236, 14945, 14952, 16165, 16203, 16355, 16509, 17781, 18470 |
ravi-chandra3197 | #19644 | |
abrarpathan19 | #19643 | 19642 |
wojtekn | #19665 | 19664 |
suryakant-krish | #19803 | 19800 |
p-bystritsky | #20042 | 12549 |
dverkade | #15267 | 7333 |
quisse | #16154 | 14937 |
jhruehl | #17387 | |
nmalevanec | #19343 | 14020 |
suryakant-krish | #19413 | 19379 |
Yamaha32088 | #19781 | 7967 |
maheshWebkul721 | #19880 | 19609 |
irajneeshgupta | #19954 | |
shikhamis11 | #20072 | 20024 |
jasperzeinstra | #19313 | |
vasilii-b | #19390 | 4136 |
abrarpathan19 | #19817 | 19816 |
kunj1988 | #19992 | 19974 |
ddevesh | #20039 | |
Eayshwary | #20058 | |
davidverholen | #20096 | 19054 |
irajneeshgupta | #20127 | 20098 |
yashwant2jcommerce | #20132 | 20120 |
cedarvinda | #20160 | 20158 |
amol2jcommerce | #20168 | 20140 |
speedy008 | #20233 | 20232 |
ravi-chandra3197 | #20236 | |
vasilii-b | #19007 | 4154 |
webkul-ratnesh | #19305 | 19292 |
suryakant-krish | #19414 | 19371 |
suneet64 | #19532 | |
ravi-chandra3197 | #19812 | 17926 |
vinogcs | #19870 | |
shikhamis11 | #20130 | 20030 |
speedy008 | #20207 | |
nainesh2jcommerce | #20224 | 20221 |
amol2jcommerce | #20214 | 20210 |
niravkrish | #20241 | 20240 |
df2k2 | #20258 | |
troendheim | #20283 | |
priti2jcommerce | #20297 | |
SikailoISM | #20302 | |
cedarvinda | #20306 | 20304 |
brendanfalkowski | #20416 | |
cedarvinda | #19986 | 19985 |
amritms | #20018 | |
JeroenVanLeusden | #20057 | |
davidverholen | #20094 | 19052 |
milindsingh | #20170 | 20169 |
ajay2jcommerce | #20195 | 20193 |
duckchip | #20222 | |
khodu | #20247 | 20245 |
milindsingh | #20248 | 20064 |
shikhamis11 | #20252 | 20121 |
cedarvinda | #20260 | 20259 |
cedarvinda | #20301 | 20299 |
mage2pratik | #20318 | |
ronak2ram | #20336 | |
SikailoISM | #20338 | |
ranee2jcommerce | #20374 | 20373 |
nainesh2jcommerce | #20400 | 20399 |
milindsingh | #20425 | |
pmclain | #19095 | 17592 |
niravkrish | #19372 | 18754 |
ajardin | #19585 | |
swnsma | #19822 | |
agorbulin | #19997 | 19482 |
vivekkumarcedcoss | #20231 | 20229 |
shikhamis11 | #20349 | 19258 |
vshatylo | #20407 | 12194 |
kassner | #20408 | |
jayankaghosh | #18185 | 18027 |
ccasciotti | #19136 | |
maheshWebkul721 | #19192 | 18349 |
maheshWebkul721 | #19321 | |
p-bystritsky | #20180 | 15950 |
DenisSaltanahmedov | #20515 | 20513 |
abrarpathan19 | #19502 | 19501 |
lfluvisotto | #19826 | |
GovindaSharma | #20114 | 20113 |
Surabhi-Cedcoss | #20142 | 19942 |
suneet64 | #20146 | 20122 |
priti2jcommerce | #20196 | 20176 |
dipti2jcommerce | #20262 | 20261 |
ajay2jcommerce | #20281 | 20278 |
maheshWebkul721 | #20354 | 20277 |
SikailoISM | #20341 | |
ankur-cedcoss | #20344 | 20282 |
cedarvinda | #20368 | 20367 |
milindsingh | #20410 | 20409 |
hostep | #20421 | 20396 |
eduard13 | #20498 | 20497 |
parag2jcommerce | #20501 | 20500 |
parag2jcommerce | #20519 | 20518 |
lewisvoncken | #20531 | |
magicsunday | #20561 | |
cedarvinda | #20564 | 20563 |
ravi-chandra3197 | #20582 | |
parag2jcommerce | #20612 | 20611 |
speedy008 | #19334 | 19328 |
adityayadav-cedcoss | #20059 | |
cedarvinda | #20144 | 20137 |
priti2jcommerce | #20218 | |
mage2pratik | #20615 | 20614 |
ajay2jcommerce | #20605 | 20604 |
irajneeshgupta | #20625 | 20624 |
mage2pratik | #20630 | 19139 |
cedmudit | #20754 | |
p-bystritsky | #19182 | 14849 |
yashwant2jcommerce | #20428 | 20427 |
parag2jcommerce | #20469 | 20468 |
ranee2jcommerce | #20488 | 20487 |
ajay2jcommerce | #20581 | 20580 |
lfluvisotto | #20628 | |
shochdoerfer | #20653 | |
GovindaSharma | #20634 | 20631 |
amol2jcommerce | #20725 | 20723 |
satyaprakashpatel | #20759 | |
phoenix128 | #17424 | 1537 |
pmclain | #18978 | 18953 |
janakbhimani | #19798 | 19714 |
mfickers | #20109 | 19705 |
GovindaSharma | #20159 | 20157 |
irajneeshgupta | #20383 | 20382 |
kassner | #20436 | |
XxXgeoXxX | #20565 | 13675 |
elevinskii | #20769 | |
Stoux | #20770 | |
krishna221993 | #20775 | |
eduard13 | #20787 | 20786 |
eduard13 | #20803 | 20802 |
abrarpathan19 | #20861 | 20859 |
philwinkle | #21030 | |
ErikPel | #19270 | 19269 |
SikailoISM | #19845 | 19442 |
mage2pratik | #20138 | 20134 |
amol2jcommerce | #20403 | 20402 |
dipti2jcommerce | #20493 | 20492 |
dipti2jcommerce | #20610 | 20609 |
mageprince | #20607 | |
Nazar65 | #20727 | 9988, 20689, 20716 |
ravi-chandra3197 | #20749 | |
ranee2jcommerce | #20756 | 20755 |
pankaj-cedcoss | #20762 | |
abrarpathan19 | #20791 | 20790 |
denispapec | #18981 | 18580 |
ajay2jcommerce | #20155 | 20143 |
hostep | #20548 | 6960 |
priti2jcommerce | #20558 | 20760 |
mageho | #20808 | |
priti2jcommerce | #20801 | 20800 |
amol2jcommerce | #20817 | 20816 |
eduard13 | #20820 | 20819 |
GovindaSharma | #20829 | 20828 |
cedarvinda | #20874 | |
mage2pratik | #20907 | 20906 |
hiren-wagento | #20913 | 18525 |
GovindaSharma | #20914 | 20911 |
kunj1988 | #20930 | 20908 |
dankhrapiyush | #20936 | 20924 |
amol2jcommerce | #20956 | |
cedarvinda | #20962 | |
dominicfernando | #20967 | |
dharmendra-wagento | #20990 | 20989 |
williankeller | #20995 | |
dominicfernando | #21029 | |
eduard13 | #21028 | |
maddumarala | #21031 | |
milindsingh | #21035 | 21034 |
maddumarala | #21033 | |
ccasciotti | #21036 | |
eduard13 | #21048 | |
mage2pratik | #21047 | |
XxXgeoXxX | #21054 | |
williankeller | #21084 |
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 Commerce 2.3.1 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.0.x. The command-line interface includes scripts for converting Magento 1.x modules and layouts.