Magento Commerce 2.3.0 Release Notes
Release notes published November 28, 2018 and last updated on June 3, 2020.
We are pleased to present Magento Commerce 2.3.0 General Availability. This release includes numerous functional fixes and enhancements.
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 patch PRODSECBUG-2198 to address critical SQL injection vulnerability
A critical SQL injection vulnerability has been identified in pre-2.3.1 Magento code. To quickly protect your store from this vulnerability only, install patch PRODSECBUG-2198. However, to protect against this vulnerability and others, you must upgrade to Magento Commerce or Open Source 2.3.1. We strongly suggest that you install these full patches as soon as you can.
See the description of PRODSECBUG-2198 in the Magento Security Center for information on this vulnerability.
Highlights
Magento Commerce 2.3.0 includes a wealth of new features as well as hundreds of enhancements and fixes to the core product. Look for the following highlights in this release:
Merchant tool enhancements
-
Inventory Management (provided by Magento Inventory (was MSI)) is now available with Magento 2.3.0. It lets merchants manage inventory for all product types in a single warehouse and across complex shipping networks. Merchants can manage these locations as sources, tracking on-hand inventory quantities per product. Stocks map these sources and sales channels (websites) to provide an accurate, salable quantity as inventory pools for concurrent checkout and product reservations. Inventory Management also updates order and shipment options, giving you full control over your stock.
Magento Inventory is a Magento Community Engineering special project open to contributors. To take part and contribute, see the Magento Inventory GitHub repository and wiki to get started. Join us in our Slack channel (or self signup) to discuss the project.
- Inventory Management overview for developer documentation
- Managing Inventory for merchant information and instructions
-
CMS enhancements include banner enhancements. You can now create banner content in native Magento WYSIWYG (or Page Builder. See the
Page Builder
discussion below. (Within the product interface, we now use the term dynamic block instead of banner.) We’ve also updated the WYSIWYG editor to use TinyMCE 4.6. (TinyMCE is now integrated into Magento through an adapter that allows it to be replaced with any other WYSIWYG editor.) -
PageBuilder is a drag-and-drop visual content editing tool that lets merchants customize the appearance of their storefront without writing any HTML or CSS. Registered participants can install PageBuilder Beta on Magento Commerce 2.3.0 code. See check Magento 2.3 product availability and Magento blog.
Improved developer experience
-
PWA Studio is a set of tools that support the development, deployment and maintenance of progressive web applications. See Magento PWA documentation for information about this toolset as well as information about contributing to this ongoing project.
-
Declarative schema simplifies installation and upgrade procedures for Magento and extensions. Declarative schema reduce the need for many database scripts, eliminating the need to maintain these scripts. And here’s a big advantage: This features enables Magento to roll out database schema changes in patch releases (not currently possible). This feature supports split and shared database structures and database structure validation.
-
GraphQL API is now available with Magento 2.3.0. This API provides an alternative to REST and SOAP web APIs for custom frontend development, including headless storefronts and PWAs. See GraphQL Developer Guide for more information about Magento’s implementation of this data query language. GraphQL is a Magento Community Engineering special project open to contributors. To take part and contribute, see the GraphQL GitHub repository and wiki to get started. Join us in our Slack channel (or self signup) to discuss the project.
-
Asynchronous Web APIs allow any previous Magento REST APIs to be called asynchronously. This community-contributed feature includes separate status APIs that have been created to check the status of each request. Developers can now use the asynchronous APIs in conjunction with queues that have also been migrated to Magento Open Source. See Asynchronous web endpoints for more information.
-
Bulk Web APIs allow all existing REST APIs to accept payloads with multiple entities. These community-contributed bulk APIs support more efficient and scalable implementations that eliminate round-trip network overhead. Like asynchronous APIs, bulk web APIs can be used in conjunction with queues that have also been migrated to Magento Open Source. See Bulk endpoints for more information.
-
Updates to Magento’s tech stack (including upgraded PHP support to maintain PCI compliance) include upgrades to Redis, MySQL, Elasticsearch, and compatibility with PHP 7.2.x.
Substantial security enhancements
-
Over 30 security fixes to core Magento code
-
Cache flush ACL provides granular access to cache management settings to prevent accidental changes that could potentially affect system performance. This ACL also lets merchants control which administrative users can clear site caches.
-
2FA/CAPTCHA protects the Admin panel against stolen passwords and affects stores against bots.
See Magento Security Center for a comprehensive discussion of these issues. All exploitable security issues fixed in this release (2.3.0) have been ported to 2.2.7, 2.1.16, 1.14.4.0, and 1.9.4.0, as appropriate.
Core bundled extension enhancements
Amazon Payments
-
Added branding to the Amazon Pay configuration section in the Admin
-
Improved extension architecture and performance
dotmailer
- dotmailer now supports the Magento Commerce split database mode.
Klarna Payments
-
Added descriptive text to the Refund API call
-
Added a link to the Klarna merchant portal
-
Added a detailed Klarna message in the Magento Admin where needed
-
Added an initial Magento Functional Test Framework (MFTF) test and support for future tests
-
Extended cleanser filtering
-
Added support for PHP 7.2 and dropped support for PHP 5.6
Magento Shipping
-
The Magento Shipping Click & Collect feature offers merchants the ability to:
-
Provide Click & Collect as a shipping option to customers, enabling them to directly collect shipments from designated source locations or stores
-
Configure source locations available for Click & Collect pick-ups
-
Updates to Shipment Form for UPS (U.S. only)
-
Customers can also select Click & Collect locations during checkout. This feature is supported by workflows and notifications for Click & Collect pick up, packing, and collection.
-
-
The batch details page now displays collection point addresses, as applicable
-
Activation notices can now be translated.
-
Tracking popups for multi-package shipments are now displayed.
-
The dispatch details page has been enhanced.
Vertex
- The Magento implementation of Vertex now supports Vertex O Series 7.0.
Other improvements
-
Elasticsearch support for Magento Open Source version. Elasticsearch support was previously provided in Magento Commerce only.
-
Improvements to release packaging plus an increase in test automation, results in a faster, more efficient release process and improved product quality.
-
Change in versioning for B2B product to match the versioning of the core product.
-
Upgrade of Magento Functional Test Framework (MFTF) to 2.3.6.
Fixed issues
We’ve fixed hundreds of issues in the Magento 2.3.0 core code.
Installation, upgrade, deployment
- Magento backup functionality is no longer enabled by default, and the code has been deprecated. See Back up and roll back the file system, media, and database for more information on backup strategies.
- All existing installation and data scripts have been converted into declarative schema data patches for easier deployment.
- The
bin/magento setup
command now provides a rollback option that prompts the user to optionally retain files for future rollbacks. Fix submitted by Oscar Recio in pull request 11750. GitHub-6460
- The
user.ini
files now recommend the correct values forphp_value memory_limit
. Fix submitted by Mr. Lewis in pull request 11760. GitHub-11322
- You can now use the
bin/magento cron:install
andcron:remove
commands to install or uninstall cron across multiple Magento installations with the same crontab. Previously, you could not create different crontab entries for multiple Magento installations that were in different folders because they used the same#~ MAGENTO START
and#~ MAGENTO END
suffixes. Fix submitted by adrian-martinez-interactiv4 in pull request 11360.
- The default time setting for
cron
success and failure history is now seven days. Fix submitted by Max Chadwick in pull request 11463.
- In Magento deployments using multiple languages, the
Framework/translation.php
constructor that sets a store’s locale now uses the correct locale. Fix submitted by Wiard van Rij in pull request 10913. GitHub-10673
- The
.htaccess
template now uses Apache 2.4 syntax. Fix submitted by Jonas Hünig in pull request 11466. GitHub-10810
- When a callback during commit throws an exception, the calling plugin can now distinguish this exception from an unsuccessful commit, and logs an exception. Previously, Magento threw an asymmetric transaction rollback error. Fix submitted by Wayne Theisinger in pull request 9955. GitHub-6497
- The links that the Admin panel provides to backup packages now link to the expected packages. Previously, these links permitted you to download only the latest backup package. Fix submitted by will-b in pull request 10593. GitHub-10032
- All
cron
schedule times are now saved in UTC and then displayed to the user in the expected time zone. Previously, thecron
schedule times in the database were in local date time formats and not UTC, while the other system dates and times were saved as UTC in the database. Fix submitted by Anton Evers in pull request 10432. GitHub-4237
- You can install and deploy Magento without first creating an administrator account.
- Improved the cron job management process during the deploy phase to prevent database locks and other critical issues. Now, all cron jobs stop during the deploy phase and restart after deployment completes.
- Statistics collection for the Reports module is now disabled by default. To enable or partially disable it, see Stores > Settings > Configuration > General > Reports. Note that certain product features, such as Magento Commerce dynamic customer segments (specifically the ones based on viewed products), rely on Reports data collection to function properly.
- You can now add a new IP address to an existing list by appending the new address with the
- add
flag rather than replacing a former address with a new one. Fix submitted by serhii-balko in pull request 13783. GitHub-10559
- Magento now provides an input/output helper object that supports easier access to styling objects in the Symfony console. Fix submitted by Malyovanets Nickolas in pull request 13741.
- The
.htaccess
file in thepub/static
folder now includes aRewriteBase
directive, which supports the installation of Magento under a directory inside the web root. Note: Setting this directive in the.htaccess
file in Magento root without setting it in.htaccess
underpub/static
will result in a missing file. Fix submitted by Malyovanets Nickolas in pull request 13788.
- The list of IP addresses for maintenance status no longer includes commas, which facilitates directly copy and pasting the addresses as needed. Fix submitted by Malyovanets Nickolas in pull request 13727.
PhpFormatter
has been refactored to recursively return the array representation using short array syntax[]
instead of longarray()
. If the given variable is not an array, it uses the standardvar_export
behavior. This change supports Magento coding standards. Fix submitted by Malyovanets Nickolas in pull request 1193. GitHub-758
- The icons that represent the Extension Manager and Module Manager in the main area and left-hand menu of the Web Setup Wizard have been refactored for consistency with Magento UI guidelines. Fix submitted by Danny Verkade in pull request 12960. GitHub-11236
- You can now deploy static content on demand while in production mode.
- Magento now restarts cron jobs as needed after a cron job was terminated during execution.
- The
CrontabManager.php
file has been updated as follows: Ifcrontab
has already been populated, thebin/magento cron:install
command adds#~ MAGENTO START
and the rest of code directly to the last row of crontab without any spaces. Fix submitted by Michele Fantetti in pull request 12609.
Zend_Json
in the setupPackagesAuth
has been replaced with the newSerializer\Json
. GitHub-9236
- Static versioning and minification no longer break email font styles. GitHub-8241
- We’ve fixed an issue with using the command line to install or remove
crontab
. Previously, installing or removingcrontab
via the command line appended2>&1
to entries, even those not related to Magento. GitHub-11586
- The Back button that was previously accessible during the first step of installation has been disabled. Fix submitted by Mastiuhin Oleksandr in pull request 14460. GitHub-14307
- Multifields that previously lacked labels in forms now display labels. Fix submitted by rostyslav-hymon in pull request 14383. GitHub-7428
- The
app:config:dump
command now has an argument that supports dumping only the specified settings that are required to prepare static content on a build system, not all system settings. This new option (config-types
) makes it possible to dump scopes and themes automatically (which are needed for a build system) while managing system settings manually usingconfig:set --lock-config
. Fix submitted by Ihor Sviziev in pull request 14807. GitHub-11396
- You can now switch to default mode from production mode. Previously, if you tried to switch back to default mode, Magento displayed this error,
Cannot switch into given mode 'default'
. GitHub-4292
- The Web Setup wizard now loads successfully when session storage is configured to use memcache in
env.php
. GitHub-9633
- Triggers now work as expected during database backup. Previously, triggers were missing, which resulted in incorrect indexing. GitHub-9036
- Magento no longer automatically disables maintenance mode during a scheduled back up. GitHub-9918
- Database rollback with SSH now works as expected. GitHub-12064
- New command-line interface commands that support enabling and disabling the Magento Profiler have been added. See Enable profiling (MAGE_PROFILER) for more information. GitHub-9277
-
A fatal error no longer occurs when you run
bin/magento sampledata:deploy
before installing Magento. Fix submitted by Quaternion in pull request 13571. -
Disabling the Amazon Payments feature while using the Web Wizard to install Magento no longer breaks the checkout process.
Web server configuration
web/unsecure/base_url
config has been added to website and store scope. Fix submitted by JeroenVanLeusden in pull request 13659.
- The
static/
string has been removed from theresource
parameter, allowingstatic.php
to generate the specified resource correctly. Fix submitted by Daniel in pull request 13361.
- Fixed an issue with the shared configuration settings in
app/etc/config.php
that causedrecursion detected
errors during deployment.
- You can now set a default value to fields with config field type
image
orfile
. GitHub-10253
- We’ve removed
Zend_Json
fromSetup/Migration.php
. GitHub-10341
- The licenses listed in
composer.json
have been updated for accuracy. Fix submitted by Marcel Hauri in pull request 17268. GitHub-17225
- Magento multi-store installations now use the store view-specific values from the Store Configuration if they differ from the global default configuration settings. Previously, Magento loaded the wrong home page in multi-store deployments. Fix submitted by hitesh-wagento in pull request 16046. GitHub-15205, GitHub-15245
- Magento no longer displays deprecated currencies in the currency dropdown menu that is displayed during the setup process. Fix submitted by Malyovanets Nickolas in pull request 13782. GitHub-13760
- You can now successfully create a new store view from the Admin. Previously, Magento displayed this message when you attempted to create a new storeview:
Requested store is not found
. Fix submitted by Pieter Hoste in pull request 14043. GitHub-12421, GitHub-12405
- Magento now sends order sent email as expected. Fix submitted by pawcioma in pull request 14051. GitHub-13769, GitHub-12405
- The output of the
setup:static-content:deploy
command has been changed to a less alarming color. Fix submitted by Pieter Hoste in pull request 13975. GitHub-12404
- XML sitemap generation can now be scheduled. Fix submitted by rostyslav-hymon in pull request 14908. GitHub-5768
- Issues with the database backup command have been resolved. GitHub-1287
- Magento now displays a more informative message you update a module and then switch to a different branch of source control that contains a lower version of that module. GitHub-9981
- Disabling the State is Required for field from Stores > Settings > Configuration > General > General > State Options now works as expected. GitHub-12894
AdminGS
- Admin global search preview now works as expected. Previously, this feature worked inconsistently, and search results differed depending on which area was being searched (for example, Products, Categories, or Customers).
- Restricted administrative users can now successfully create and save product attributes.
- Restricted administrative users can now create and edit CMS blocks as expected. Previously, Magento displayed this error message when an administrator with restricted privileges tried to create a new CMS block:
Warning: array_intersect(): Argument #1 is not an array in /var/www/html/magento2ee/app/code/Magento/AdminGws/Model/Models.php on line 1075
.
- The
Magento_Authorization
module is now installed afterMagento_Authorization
to satisfyMagento_Authorization
’s dependency upon authorization tables. Fix submitted by Anton Evers in pull request 56 (magento-partners/magento2ee).
Analytics
- PHPDocs have been added as needed for methods throughout the code base. Fix submitted by Aki Ojalehto in pull request 13337.
- Users are now subscribed by default to the Advanced Reporting service.
Backend
- Customers can now successfully download and export PDFs after logging in. Previously, customers were redirected to the Admin when trying to download or export data to a PDF right after logging in. Fix submitted by Sanjay Patel in pull request 15766. GitHub-15510
- Admin tabs are now ordered as expected. Previously, when you used the
addTabAfter
method to add two or more tabs to the Admin (for example, to the order view page), the sort order of the tabs was incorrect. Fix submitted by Tiago Sampaio in pull request 16412. GitHub-16174
- The headers of the User Agent Rules table now align as expected with the content of the table’s rows. Fix submitted by Justin in pull request 16792. GitHub-16703
- The Enter button on the customer grid now filters the table as expected. Previously, clicking Enter did not filter contents but simply changed the display to the next page of the grid. Fix submitted by Ronak Patel in pull request 17650. GitHub-17789
- The Report an Issue link on Admin pages now opens in a new tab. Fix submitted by Danilo Argentiero in pull request 14016. GitHub-14010
Banner (now Dynamic Block)
- The Magento CMS banner has been renamed to dynamic block to better represent this feature. Banners from Content > Banners have been renamed across the Admin and the code base. Correspondingly, the Magento widget banner rotator type (from Content > Widget > Widget type) has been renamed to dynamic blocks rotator.
- You can now create dynamic block (formerly banners) content from the WYSIWYG editor. You can create store-specific content for dynamic blocks by switching between scopes using the Magento Scope Selector.
Bundle
- You can now successfully save updates to bundle products. GitHub-6916
- Unused
count()
methods have been removed from template files throughout the code base. Fix submitted by Ihor Sviziev in pull request 13138.
- You can now successfully delete an option from a bundle product.
- Imported bundle products are now assigned stock status as expected. Previously, when you imported a new or replacement bundle product, Magento did not generate an entry in
cataloginventory_stock_status
, and as a result, Magento could not successfully display the product on the storefront. Fix submitted by Adam Paterson in pull request 14016. GitHub-12330
- Magento no longer includes expired special prices for bundle options when displaying product price ranges. Fix submitted by Sanjay Patel in pull request 15768. GitHub-15457
- Reports now handle bundle and group products as expected. Previously, when a merchant viewed the Products in cart report, the report gives error if the cart contains a bundle or a grouped product. GitHub-12079
B2B
- Magento now opens a new window for edit purposes when a merchant selects Edit User in New Tab from the Company Users page. Previously, when a merchant tried to edit Company users from the storefront by selecting Edit User in New Tab, Magento threw a JSON error.
- Administrators with appropriate permissions can now change the status of a company to Rejected. Previously, Magento did not save the change in status, and threw an error.
- Guests can now view products as expected when shared catalogs are enabled. Previously, if a merchant added a product when shared catalogs were enabled, guest users could not view the product, even when shared catalogs were later disabled.
- Category pages now display as expected all products whose SKUs contain either single or double quotation marks. Previously, Magento threw an error when trying to set pricing and structure on a shared catalog when product SKUs contained these characters.
- You can now successfully search for products when the Shared Catalog setting is enabled.
- Customers can now use the Add Product By SKU button to add configurable products to a sales order.
- Access to the Companies resource can now be explicitly set on the Roles Resources page in Admin. Previously, this resource was available only to top-level administrators with all resources selected.
- Magento now displays informative messages about both successful and failed actions when a company administrator adds or deletes entries in the Company Users section. Previously, Magento displayed this error message:
Something went wrong
in the response body, and did not display a message.
- Tier prices for already added products no longer change when a merchant adds additional products to an order from the Admin. Previously, the tier price of products in an order changed when the merchant added more products to the order, applied a custom price to one of the products, or applied a coupon code to the order.
- Merchants can now create a company for which the region or state is not required. Previously, Magento did not create this company, and displayed this error:
Invalid value of "" provided for the region_id field
.
- Magento now displays the orders that are associated with customer accounts on the Orders page. Previously, in the Admin display of customer accounts that have orders associated with them, Magento did not display orders on the Orders tab but instead displayed a blank page.
- Merchants can now create new user roles that do not have access to Quotes.
- Merchants can now successfully update product prices and currencies using Stores > Settings > Configuration > General > Currency Setup.
CAPTCHA
- Customers can now successfully log in when guest checkout is disabled and CAPTCHA is enabled. Previously, Magento threw the
Provided form does not exist
error when a customer tried to log in under these conditions.
- CAPTCHA validation now works when the Website Restrictions setting is enabled.
Cart and checkout
- Magento no longer displays an integrity constraint violation error after when a customer reorders a product with custom options. GitHub-12705
- You can now save emoji in custom product options. GitHub-12058
- Magento no longer caches warning messages as often as a customer clicks the Update Shopping Cart button while the shopping cart page loads. Previously, Magento cached a warning message each time a customer clicked this button while the page loaded in Firefox or Chrome, and this action resulted in multiple warning messages appearing on the top of the shopping cart page.
- Magento now displays the expected state in the Multishipping New Address form when a customer enters information on the Ship to Multiple Addresses page. Fix submitted by enriquei4 in pull request 13367. GitHub-8069
update button.phtml
has been simplified to optimize translation. Fix submitted by Karla Saaremäe in pull request 12155.
- You can now enter zip codes that contain no spaces for locations in the Netherlands. Fix submitted by Oscar Recio in pull request 11961. GitHub-11898
- The text that appears above the billing address field on the checkout page has been edited to remove redundancy. Fix submitted by Vova Yatsyuk in pull request 11399
- The One Touch Ordering feature allows users to place orders without going through full checkout. Fix submitted by Daniel Korzeniowski.
- You can now delete the last product in your shopping cart even when the Minimum Order Amount setting (Stores > Settings > Configuration > Sales > Sales) is enabled. Previously, if you tried to delete the last item in your cart under these circumstances, Magento would throw an exception. Fix submitted by Anton Evers in pull request 10601 GitHub-6151
- The checkout agreements
getList
method was refactored to include a new listing interface that supports the ability to set search criteria. Fix submitted by Stanislav Idolov in pull request 13221.
- The shopping cart totals description on the checkout page now displays discount labels as expected. Fix submitted by Ihor Sviziev in pull request 13223.
- The checkout controller’s JSON usage has been updated to use
$this->resultFactory->create(ResultFactory::TYPE_JSON);
instead of the object manager.
- Refreshing the checkout page no longer deletes the shipping address when a guest checks out. Previously, when the persistent shopping cart was enabled, refreshing the check out page affected information entered into form fields for a guest checkout.
- Cart price rule condition values now handle commas as expected.
- When a customer is on the payment page and tries to reorder or retrace her steps backward through the checkout process, Magento now displays all the relevant shipping methods. Previously, Magento displayed only one shipping method under these circumstances.
- You can now successfully change currency for an order before you complete the order. Previously, if you changed currency, when you proceeded to checkout by choosing a Bank Transfer Payment as Payment Method, Magento displayed this message: Your credit card will be charged for. Fix submitted by Roman K. in pull request 993. GitHub-12526
- Magento no longer combines the Custom Checkout and Shipping steps when Magento loads the checkout page. Fix submitted by Roman K. in pull request 975.
- Magento now alerts customers when a previously applied gift card has been removed during checkout.
- Guest orders placed with gift cards can now be canceled as expected.
- Braintree now permits customers to change the billing address on orders when paying with a saved card. Previously, Braintree used the same address for both billing and shipping.
- Customers can now change an existing value in the checkout page’s State/Province field to an alphanumeric value. Previously, when a customer tried to edit this field in this way, Magento did not place the order, and displayed a descriptive error message.
- Magento now successfully processes an order that contains products that will be shipped to multiple shipping addresses. Previously, Magento did not complete the order, but displayed an error message.
- Magento now saves the address that a customer enters during checkout if the customer selects Save in address book. Previously, Magento saved the address, but left the default billing address field empty.
- Excess requests on the checkout page have been removed. Previously,
customer/section/load
was called four times when Magento loaded the cart for the first time. Fix submitted by Andrey Bezyazychnyy in pull request 14782. GitHub-15457
- The alignment of the Purchased Order Form button on the Review & Payments page has been corrected. Fix submitted by Oscar Recio in pull request 15577. GitHub-15334
$.browser
has been deprecated and removed from the code base. Fix submitted by Jonathan Kingston in pull request 14270. GitHub-14267
- The minicart now updates as expected when a customer adds a configurable product to the cart while accessing the storefront on a device running Internet Explorer 11.x. Fix submitted by Mastiuhin Oleksandr in pull request 14192. GitHub-13820
- Magento no longer unchecks the My billing and shipping address are the same checkbox when a customer uses an offline custom payment method for an order. Previously, when a customer used an offline custom payment method for an order, Magento unchecked this checkbox on payment step if the shipping address was updated. Fix submitted by Jignesh Baldha in pull request 17628. GitHub-14819
- Magento no longer displays an undefined string on the Order Summary page. Fix submitted by Vishal Gelani in pull request 17697. GitHub-17492
- Unnecessary blank lines have been removed from
app/code/Magento/Catalog/etc/adminhtml/menu.xml
. Fix submitted by Namrata in pull request 16180.
- Placeholders for the password field no longer suggest that a password is optional. Previously, the placeholder for the password field in the checkout page suggested that the password was optional, but after validation, Magento indicated that the password field was mandatory. Fix submitted by hitesh-wagento in pull request 16521. GitHub-16378
- The minicart now correctly displays product titles that contain special characters. Fix submitted by afirlejczyk in pull request 13802. GitHub-13652
- A shipment step has been added to
OnePageCheckoutOfflinePaymentMethodsTest
. Fix submitted by Malyovanets Nickolas in pull request 16164. GitHub-1164
- Newly registered customers can now successfully complete an order after entering a new address. Previously, Magento displayed this message on the checkout page,
An error occurred on the server. Please try to place the order again.
GitHub-10583
- Merchants can now successfully add products to the shopping cart using REST. Previously, the shopping cart displayed a total price of zero (0) for products creating from the Admin using REST. GitHub-2991
- Customers can now successfully sign in after first clicking the Checkout button. GitHub-10834
- Magento now successfully processes an order even when the customer quickly double-clicks on the minicart’s Proceed to checkout button. Previously, if a customer double-clicked this button while the page was loading, Magento emptied the shopping cart.
- Magento now displays a pre-filled edit form for checkout agreements when single-store mode is enabled. Fix submitted by gwharton in pull request 15063. GitHub-7822
Cart Price rules
- The cart price rule now uses specified conditions correctly when applying discounts on configurable products.
- Magento no longer throws an error when a customer applies a discount code on the checkout page. GitHub-9763
Catalog
- The
getUrl
method inMagento\Catalog\Model\Product\Attribute\Frontend\Image
no longer returns an image URL with double slashes. Fix submitted by Malyovanets Nickolas in pull request 13635. GitHub-13497
- An incorrect return type in the
StockRegistryInterface
API has been corrected. Fix submitted by Burlacu Vasilii in pull request 17562. GitHub-15085
- Magento no longer throws an error when you try to create a new URN catalog for a project when a blank one already exists in PHP storm. GitHub-5188
- You can now save a product after updating multiple select attributes through mass action. GitHub-11329
- Magento now currently handles apostrophes in attribute option values created from the Admin. GitHub-12127
- The Save & Duplicate option in the catalog manager now works as expected. GitHub-11532
- Magento now displays the default validation message for
validate-item-quantity
as expected. Fix submitted by Mastiuhin Oleksandr in pull request 14508. GitHub-13582
- The
Magento\Catalog\Model\ResourceModel\Category\Collection::joinUrlRewrite
method now uses thestoreId
value set on the actual collection of the store rather than thestoreId
retrieved from the store manager. Fix submitted by rostyslav-hymon in pull request 14381. GitHub-13704
- Magento no longer displays unused product attributes with a value of N/A or NO on the storefront.
- Editing an order with backordered items from the Admin now results in a new order with backordered items correctly marked. Fix submitted by Mastiuhin Oleksandr in pull request 14444. GitHub-10057
- Magento no longer overrides prices with more than two digits after the decimal (for example, 9.4880) by rounding the last two digits. Fix submitted by Mastiuhin Oleksandr in pull request 14461. GitHub-14249
- Magento now throws an exception as expected when a user tries to submit a product review without selecting a star rating. Previously, if a user submitted a product review without selecting a star rating, Magento assigned a one-star rating. Fix submitted by Karla Saaremäe in pull request 16808. GitHub-16764
- Merchants can now successfully change the default label of the country of manufacture attribute for an existing product from the Admin. Fix submitted by rostyslav-hymon in pull request 14714. GitHub-6879
- You can now sort products by quantity from the category page. Fix submitted by Dmytro Paidych in pull request 14179. GitHub-13556
- Magento no longer creates pagination automatically when a product has more than 20 tier prices in the Advanced Pricing area. Fix submitted by saravananvelu in pull request 15360. GitHub-15210
- Magento now alerts you to an error when a merchant tries to save a product without completing required fields.
- You can now sort products by the store configuration default field even when this value differs from category default sort by setting. GitHub-10772
- Magento now displays product alerts in the Admin product edit page when a customer is subscribed to a product’s stock or price. GitHub-10007
- The
data-container
class name is now based on view mode. Fix submitted by Malyovanets Nickolas in pull request 17751. GitHub-15319
- Parent theme image height settings (specified in
view.xml
) no longer override the height settings assigned to individual images. Fix submitted by Malyovanets Nickolas in pull request 17725. GitHub-15319
- You can now save a title for a product from the Product > Customizable Options page. Fix submitted by Jignesh Baldha in pull request 17607. GitHub-6305
- You can now add a custom fieldset to the Admin category editor without changing the position of the General section (that is, the section that contains the Enable category, Include in Menu, and Category Name fields). Previously, Magento moved the General section to the last position of the form. Fix submitted by Jignesh Baldha in pull request 17604. GitHub-15041
- Magento now maintains product image roles as expected after upgrade. Previously, image roles randomly disappeared from product pages after upgrade. Fix submitted by Eduard Chitoraga in pull request 17554. GitHub-10687
- REST search queries in which the
condition_type
is set toin
ornin
now return results for all specified values. Fix submitted by Eduard Chitoraga in pull request 16742. GitHub-14035
- A type error in the payment void method of the Authorizenet module has been fixed. Fix submitted by JeroenVanLeusden in pull request 16838. GitHub-5067
- You can now add a product with a price of zero (0) to a wishlist. Fix submitted by Vishal Gelani in pull request 16537. GitHub-16479
- Magento now maintains the default products sort order of “newest first” when you upgrade your Magento deployment. Previously, after upgrade, the default products order in categories changed from “newest first” to “oldest first”. GitHub-15627
- An error with the template notation for
Magento_CatalogWidget
module has been fixed. Fix submitted by Vishal Gelani in pull request 16856. GitHub-16529
- Magento no longer throws an error when you re-save a product attribute with a new name. Fix submitted by Raul Mateos in pull request 11619. GitHub-6770
- The grouped product page now shows the lowest price for a simple product. Fix submitted by evgk in pull request 9266. GitHub-9265
- You can now add a new product with custom attributes that has the same name and attributes as a previously deleted product. Previously, Magento did not let you add this new product because a
request_path
with the same value already existed intable url_rewrite
from the previous product. Fix submitted by Nickolas Malyovanets in pull request 12538. GitHub-12110
- Magento now saves the assigned background color for images correctly. Previously, if you updated the background color of a product image, the background color was always black. Fix submitted by Raul Mateos in pull request 11888. GitHub-8799
- You can now assign and save a custom option assigned a price of 0. Fix submitted by Raul Mateos in pull request 11842.GitHub-4808
- The ProductRepository SKU cache is no longer corrupted when the value assigned to
cacheLimit
is reached. Fix submitted by Thomas in pull request 11537.
- The price filter on a product category page now works as expected. Previously, if you applied this filter to a category listing, Magento displayed redundant product listings and unrelated products. Fix submitted by Mayank Zalavadia in pull request 11206. GitHub-11139
- You can now successfully create a product from API Product Management in deployments where the Update by Schedule indexer mode is set.
- Configurable products are no longer displayed on a category page when all children are disabled by mass action and the display out-of-stock products setting is off.
- Magento no longer displays a 404 error when you change category permissions from Product Detail pages when multistore view is enabled.
- Magento no longer throws an exception when you add a product with a tiered price reduced to $0.00 to your shopping cart.
- The Hide from Product Page option now works for the child product of a configurable product.
- Translation functionality has been added to customer attribute labels in the Admin, making it possible to translate a label as appropriate for the locale of an Admin user. Fix submitted by Christian Münch in pull request 13251.
- Magento now displays the Catalog Products List widget on the storefront. Fix submitted by Rostislav Sabischenko in pull request 12765.
- Magento now respects the maximum depth setting for category navigation. Fix submitted by Arnoud Beekman in pull request 12640.
- Category page X-Magento-Tags headers no longer contain product cache identities when category display mode is set to Static block only when Varnish is selected as the cache engine.
- You can now specify a negative value for a product in the orders Quantity field when editing the order from the Admin.
- You can now create a product date attribute that contains a day value than exceeds 12 (in the format dd/mm/yyyy). Previously, when you created a product attribute with a default date specifying a day greater than 12, Magento did not save the attribute, but instead displayed this error,
Invalid default date
.
- Sort by Price now works as expected on the catalog search page. Fix submitted by Roman K. in pull request 929. GitHub-12468
- Magento now correctly sets a
product_links
position attribute even when the attribute value is not set in a GET request. Previously, only the first two of each link type was shown in the backend or in a GET request response, even though Magento correctly added the product links to the database. Fix submitted by Mohammad Haj-Salem in pull request 12650.
- You can now unset a category image on the store-view level when the image is defined on all store views.
- Usage of EAV indexer tables in the CatalogWidget module has been removed.
- Magento now correctly renders print previews of product compare pages. Previously, the print view did not display text from the right side of the product compare page.
- The validation hint on the product custom option page text field now updates as expected with the number of characters left before hitting the maximum.
- The
PUT /V1/products/:sku/media/:entryId
call updates a product’s media gallery as expected.
- Products no longer disappear from the Admin Product grid after you delete its active schedule update.
- Single quotation marks in attribute values are no longer auto-converted to HTML when saved.
- The SEO-friendly URL for category pages now works as expected.
- We’ve optimized queries on loading product attributes when store scope is used.
- Products are no longer automatically assigned to websites based on store scope. If a product is assigned to one website only, that relationship is maintained even after the product is saved from the Admin.
- Product Display Pages (PDPs) now load as expected when a product name contains a double quotation mark. Previously, Magento did not load the image if its name contained double quotation marks.
- A restricted administrative user who is authorized to access only designated websites can no longer remove products from undesignated websites.
- Customers viewing a storefront on a mobile device can now see the text displayed when clicking on the “More Information” accordion anchor without having to scroll back up. Previously, the Mobile PDP accordion widget did not work as expected on mobile devices.
- Magento now maintains designated sort order for products after saving a product in a category. Previously, product sort order reverted to sorting by product ID.
- You can now filter successfully by date from the Admin on products in multistore environments. Previously, values in the product creation date field (that is, the date set when Set Product as New from Date is selected) were arbitrarily changed, and filtering did not work.
- Attributes with no assigned values on a product are no longer displayed with a value of N/A in the Compare Products page or block as expected.
- Prices are now visible as expected on the category page for a configurable product when you re-enable them from the Admin. Previously, when you re-enabled a previously disabled product and assigned it to a different store, Magento did not display its price on the category or product page.
- Category smart rules now work as expected for partial values when conditions include using a dropdown attribute and “contains”.
- Magento now correctly sets the default option for the
status
attribute when a merchant creates a product. Previously, Magento changed a default setting of disabled (No) to Yes during product creation.
auto_increment
values are now preserved after restarting the MySQL server.
- You can now successfully save a product with custom options to a different website in multisite deployments. Previously, when you added another site to a product with customizable options, Magento corrupted these options by splitting into multiple options or duplicating an option.
- A product’s Use Default Value check box for attributes is now unchecked by default when you add a new website to a product’s scope.
- The subcategory URL path is now updated for a store view according to the URL path of its parent category.
- Magento now displays drop-down attribute values in the catalog product grid after applying filtering on drop-down/select attributes. Fix submitted by Dmytro Paidych in pull request 14174. GitHub-13006
- The JavaScript address converter no longer mutates the function’s
address.street
argument. (The argument remains an array as expected.) Fix submitted by Mastiuhin Oleksandr in pull request 14250.
- You can now see category changes on the storefront as expected after the changes have been saved. Previously, Magento did not display changes to product categories on the storefront until reindexing occurred even if update on schedule was set and the cache had been cleaned.
- Product attribute are now displayed as expected in layered navigation with Elasticsearch 5.0+.
- Product pages now show the product name as the browser title and include meta title tag in the HTML source. (The title and meta title tags can now be used independently.) Fix submitted by Malyovanets Nickolas in pull request 17771. GitHub-15501
Catalog Rule
- Catalog rules are now applied as expected when products are sorted by price.
Cleanup and simple code refactoring
- Zoom is no longer abnormally active when a mouse hovers over the category dropdown menu on the product page. GitHub-5129
getAttributeText($attributeCode)
now returns the correct return type. GitHub-11691
- All references to Magento Connect has been removed from the Find Partners & Extensions links. GitHub-12632
- Method name
getDispretionPath
has been corrected togetDispersionPath
in\lib\internal\Magento\Framework\File\Uploader.php
. GitHub-12506
- Unused temporary variable
$data
has been removed from theapp/code/Magento/Catalog/Controller/Adminhtml/Category/Save.php
method. Fix submitted by Malyovanets Nickolas in pull request 13733.
- addres has been corrected to address in
app/code/Magento/Customer/etc/events.xml
. Fix submitted by Malyovanets Nickolas in pull request 13794.
- Code formatting in
app/code/Magento/Swagger/view/frontend/templates/swagger-ui/index.phtml
has been updated. Fix submitted by p-bystritsky in pull request 13616.
- The edit cart product input validators have been changed from hardcoded to dynamic in
app/code/Magento/Checkout/view/frontend/templates/cart/item/configure/updatecart.phtml
. Fix submitted by p-bystritsky in pull request 13615.
- Typos have been corrected throughout the code base. Fix submitted by Aki Ojalehto in pull request 13300.
- Redundant code has been removed for clarity in
app/code/Magento/AdminNotification/Model/Feed.php
. Fix submitted by Aki Ojalehto in pull request 13303.
- Misspellings in method names have been fixed, and deprecated methods removed in several adminhtml files. Fix submitted by Aki Ojalehto in pull request 13304.
- A typo in the database column comment of
app/code/Magento/Catalog/Setup/InstallSchema.php
has been fixed. Fix submitted by Aki Ojalehto in pull request 13318.
- Typos throughout the code base have been corrected. Fix submitted by Aki Ojalehto in pull request 13283.
- A misspelled method name in
\Magento\BundleImportExport\Model\Import\Product\Type\Bundle
has been corrected. Fix submitted by Aki Ojalehto in pull request 13187.
- A misspelled parameter name in
\Magento\Weee\Test\Unit\Model\TaxTest::testGetWeeeAmountExclTax
has been corrected. Fix submitted by Aki Ojalehto in pull request 13189.
- Catelog has been corrected to catalog throughout the code base. Fix submitted by Danny Verkade in pull request 13097.
- Consturctor has been corrected to constructor in the
app/code/Magento/Ui/view/base/web/js/lib/core/class.js
JavaScript class. Fix submitted by Danny Verkade in pull request 12976.
- The syntax of
expectException()
calls has been improved. Fix submitted by Mastiuhin Oleksandr in pull request 14621. GitHub-11059
- JavaScript in the Tav module has been refactored to meet Magento code standards. Fix submitted by Vishal Gelani in pull request 15560. GitHub-15352
- Magento no longer unexpectedly empties a customer’s shopping cart during checkout when concurrent requests occur. Fix submitted by adrian-martinez-interactiv4 in pull request 14429. GitHub-4301
@codingStandardsIgnoreFile
has been removed from theTypeLocatorTest
file header. Fix submitted by Danny Verkade in pull request 12977.
- Redundant spaces have been removed from the “configure your” phrase throughout the code base. Fix submitted by Danny Verkade in pull request 12961.
- An unused
if
statement has been removed fromapp/code/Magento/Sales/Controller/Adminhtml/Order/Invoice/Save.php
. Fix submitted by JeroenVanLeusden in pull request 12888.
- Magento no longer displays duplicate element IDs for gift messages in the checkout page. Fix submitted by Julien Anquetil in pull request 15705. GitHub-13415
- Magento now correctly aligns submenus. Fix submitted by hitesh-wagento in pull request 15764. GitHub-7897
- The
app/code/Magento/CurrencySymbol/view/adminhtml/templates/grid.phtml
file has been refactored to remove redundant function calls. Fix submitted by Vishal Gelani in pull request 15763. GitHub-15355
- Client-side email validation now works in Internet Explorer 11.x the same way as it does in Chrome. Previously, a leading or trailing space on the following pages resulted in client-side validation failure in Magento stores deployed on Internet Explorer 11.x. Fix submitted by Piyush Dankhara in pull request 15884. GitHub-6058
- Magento now correctly aligns page elements on the home page and category page of the Hot Seller section. Fix submitted by Chirag Matholiya in pull request 15896. GitHub-15213
- Extraneous margins on the product list and product entries have been removed. Fix submitted by Chirag Matholiya in pull request 15975. GitHub-15308
inline-block
issues with space and font-size in the Name form have been resolved. Fix submitted by Daniel Ruf in pull request 16097. GitHub-16047
- The Shipping and Estimate Tax page now correctly displays country, city, and postal code fields. Fix submitted by Alexander Kras’ko in pull request 16429. GitHub-8222
- Unneeded JavaScript was removed from
logout.phtml
and replaced with a new JavaScript component. Fix submitted by Ihor Sviziev in pull request 16993. GitHub-13692
- Template syntax errors in
app/code/Magento/Theme/Block/Html/Breadcrumbs.php
have been corrected. Fix submitted by Vishal Gelani in pull request 16805. GitHub-15345
- Magento now disables the Shop By button on the search page when a customer sets additional search filters. Fix submitted by Pratik Oza in pull request 17418. GitHub-13445
- Product image zoom now works as expected in stores running on Safari. Fix submitted by Pratik Oza in pull request 17418. GitHub-13445
- The
$keepRation
parameter in theMagento\Cms\Model\Wysiwyg\Images\Storage
class has been renamed to$keepRatio
. Fix submitted by Eduard Chitoraga in pull request 17596. GitHub-17587
- A typo in
gallery.php
has been fixed. Fix submitted by Daniël van der Linden in pull request 17659.
- The delete operation
entity_manager_delete_before
transaction event is no longer dispatched twice unnecessarily. Fix submitted by p-bystritsky in pull request 17720. GitHub-17715
- Unnecessary space has been trimmed from the email address field in the forgot password, check out, log in, and email to a friend forms. Fix submitted by Vishal Gelani in pull request 16640. GitHub-6058
- The JavaScript code in the
spli.phtml
template file for the button widget has been refactored. Fix submitted by Vijay Golani in pull request 15731. GitHub-15354
- The JavaScript code for the UrlRewrite module edit page has been refactored. Fix submitted by Vijay Golani in pull request 15747. GitHub-15356
- The annotation for the
formatDateTime
function in thelib/internal/Magento/Framework/Stdlib/DateTime/TimezoneInterface.php
file has been corrected. Thelocale
andtimezone
have been changed toparam string|null $locale
and@param string|null $timezone
. GitHub-15668
- Magento now displays the Contact Us page on the menu as expected. Previously, Magento displayed unnecessary space between the category page and the main footer. Fix submitted by Sanjay Patel in pull request 15726. GitHub-12601
- Magento now displays category images consistently. Previously, category images disappeared then reappeared after every save.
- We’ve fixed the display of calculated tax for a logged-in customer when billing and shipping address differed.
CMS content
- Page layout issues that resulted from incorrect module sequencing have been corrected. Previously, the
Magento_theme
module was loaded too late, which resulted in unexpected display issues.
- Magento no longer unexpectedly locks up CMS pages when a merchant changes a scheduler end date. Previously, when a merchant updated the end date for a CMS page after the current scheduler ended, Magento generated an error, and the merchant could no longer access any CMS page from the Admin.
- We’ve added
EvenPrefix
andEventObject
for CMS Collections to instantiate the observer for$this->_eventPrefix . '_load_after'
and$this->_eventPrefix . '_load_before'
. GitHub-9900
- There is now an API interface for retrieving CMS pages and blocks by identifiers and store ID. GitHub-10414
- Disabling a product now removes it from the flat index as expected. Fix submitted by Vishal Gelani in pull request 16791. GitHub-14966
- Breadcrumbs now work as expected when a product name contains quotation marks. Previously, the breadcrumbs on the product details page caused this syntax error to be thrown:
SyntaxError: Unexpected token x in JSON
. Fix submitted by Jignesh Baldha in pull request 16148. GitHub-15037
- CMS blocks are now validated to prevent multiple blocks from having the same store view and identifier.
- You can now configure the native WYSIWYG toolbar to display only applicable controls. See Using the Editor for more information.
- The Store > Attributes > Product Input type field now supports the use of the WYSIWYG editor as an input method when configuring custom product attributes.
Configurable products
- The product configuration creator now warns about invalid SKUs. GitHub-11953
- The currency symbol no longer overlaps with an attribute option’s price during configurable product creation. GitHub-12713
- Magento now displays the price of a configurable product as expected even when its simple products are out-of-stock. Previously, Magento displayed a price of 0 for any configurable product price when its simple products were out-of-stock. GitHub-12578
- Magento now displays the correct price for a product when its special-price option has not been selected. Previously, Magento displayed the expired
special_price
value for a configurable product even when you did not select the product option associated with that price. Fix submitted by Sergey P in pull request 9796. GitHub-6457
- Configurable product prices now correctly reflect VAT amounts as set by tax rule settings. Previously, Magento displayed a configurable product’s old price without the VAT. Fix submitted by Sergey P in pull request 9796. GitHub-6729
LowestPriceOptionsProvider
now works as expected. Previously, Magento displayed expired special prices for configurable products, and displayed other problematic behaviors when working with special prices and configurable products. Fix submitted by Sergey P in pull request 9796. GitHub-7362
- You can now successfully add a new product that contains a custom attribute set with a multiselect attribute from the Admin. Fix submitted by Teun Lassche in pull request 10575. GitHub-10565
- Configurable products are now sorted by visible prices as expected. Previously, sorting a catalog by price produced sort results that included the prices of out-of-stock products and disabled child products.
- Magento no longer displays an inappropriate product price when a configurable product has two price options. Previously, Magento displayed the out-of-stock price of a configurable product when both an out-of-stock and in-stock price were configured.
- Magento now reorders configurable attribute options as expected on the product page. Fix submitted by wardcapp in pull request 12962. GitHub-7441
- Magento now displays a helpful error when a merchant attempts to upload a file in an unsupported file format.
- The wishlist now displays the appropriate product image for configurable products with selected options. Previously, Magento displayed the parent image instead of the image of the selected child product. GitHub-8168
- The OptionsRepository API test now tests for the use of attribute ID instead of attribute code in the request body. Fix submitted by Bettina in pull request 14345. GitHub-5580
- Prices are now readable when you assign prices that use a custom price symbol to a configurable product. Previously, the custom price symbol obscured the product price. GitHub-12430
- Magento now saves multiselect attributes for a product in the Admin when it has a related product that uses another attribute set. GitHub-12699
- Magento no longer lets a customer select a configurable product with an out-of-stock option to add to their cart. Fix submitted by Alexander Shkurko in pull request 13417.
- You can now add customizable options to a product as expected. GitHub-11792
- The orders page now displays the correct URL when you navigate back to it after having viewed a specific order page. Previously, the URL of the orders page displayed the previous order ID when you navigated back to it. Fix submitted by Vinay Shah in pull request 13390.GitHub-13295
Cookies
- Customer data is now fully loaded after restarting the browser during an unexpired user session. Previously, the
section_data_ids
section of the session cookie was not properly completed. GitHub-14912
- Cookies can now be modified by extension. Fix submitted by rostyslav-hymon in pull request 14366.
Customers
- Magento now uses the correct amounts when creating a credit memo for an order that was placed using store credit, a gift card, or reward points.
- Administrators can see all customers when the Share Customer Accounts value is set to Global.
- Magento now loads customer private data only once when system state changes. Previously, “Directory Data” and “Cart” were loaded twice after a user logged in to the system, which caused additional server load and traffic.
- Magento now correctly displays both the default and additional shipping addresses provided during checkout. Previously, Magento displayed attributes with dropdown and multiple select types with incorrect values (option IDs instead of labels) for shipping addresses on checkout.
- We have replaced
Zend_Json
with\Magento\Framework\Serialize\JsonConverter::convert
in customer data. GitHub-10259
- In multi-site deployments, a customer requesting a password reset on a non-default store should receive the password reset email from the non-default, not the primary, store. Previously, this password reset email was sent from the default store. Fix submitted by Yaroslav Rogoza in pull request 15095. GitHub-5726
- Unnecessary leading and trailing spaces have been removed from the customer account login page email field. Fix submitted by Vishal Gelani in pull request 16956. GitHub-6058
- Table alias prefixes in field mappings for customer group filter and sorting processors that were previously missing have been restored. Previous to this restoration, Magento threw this error when a merchant opened Customers > All Customers:
SQL Error: ambiguous column 'customer_group_id' in 'All customers' page in admin when extension attribute table is joined
. Fix submitted by hitesh-wagento in pull request 15842. GitHub-15822
- Customer accounts are now unlocked as expected after a password reset. GitHub-15534
- The
adminhtml
customer edit page now displays any customer address validation errors. Fix submitted by Adrian Martinez in pull request 12937.
- You can now successfully send email to customer email addresses that contain special characters when initiating email but clicking the Resend Confirmation Mail button on the customer account page.
- Magento no longer displays the
Too many password reset requests
message when an administrator attempts to change a customer’s password from the Admin and the max wait time between password resets setting has been disabled in the store configuration settings. GitHub-11409
- We’ve added methods to support setting text values for data pulled from the
customer_grid_flat
table during CSV export. GitHub-10765
- The Confirmed email and Account Lock columns of the customer table CSV export are now populated with values as expected. GitHub-10765
- Customer objects are now properly differentiated from each other after a
customer_save_after_data_object
event. Previously, theorig_customer_data_object
andcustomer_data_object
objects remained identical even after customer information was changed on the storefront. GitHub-7915
- We’ve improved the error message that Magento displays when an administrator is redirected to a forced password change from the Admin user account page. Fix submitted by dimonovp in pull request 14199. GitHub-13768
- Customer attributes are now correctly validated on the Admin Order form. Previously, Magento validated attribute length after an order has been submitted, but not on the Admin Order form.
- A user who has been denied permissions for negotiable quote editing can now create customer addresses.
- Magento now trims trailing and leading spaces when saving the name of a new contact. Fix submitted by wardcapp in pull request 12964. GitHub-10415
- We’ve added cast to string for
GroupInterface::CUST_GROUP_ALL
in the customer group source model. GitHub-10436
- Magento now always returns the user data for the current logged user. Previously, you could get another customer’s session information from sections controller without a timestamp. Fix submitted by rostyslav-hymon in pull request 14661. GitHub-14049
- The PayPal module no longer automatically sets the customer dashboard page to Billing Agreements. Fix submitted by Mike Whitby in pull request 14322. GitHub-7816
- The Customer group menu is now displayed under Customers when you create a user role for a customer group. Fix submitted by Jignesh Baldha in pull request 17574. GitHub-16499
- The welcome email sent to new customers is now based on the ID of the selected store. Previously, Magento did not check if the selected store from which to send the welcome email was associated with website when creating a customer account in the Admin. Fix submitted by Jason Evans in pull request 17375. GitHub-10411
Customer attributes
- You can now clear the Date of Birth field in the customer edit page when accessed from the Admin.
- Merchants can now create attributes for customer addresses (Stores > Attributes > Customer Address) as expected. Previously, a merchant could create an attribute, but Magento did not save or display it.
- Magento now adds the address entered during checkout to a new account when a custom address attribute is required when creating a user account after checkout.
- User-defined customer attributes are now copied to the
magento_customercustomattributes_sales_flat_order
table after placing an order as expected.
- Magento no longer validates customer address attribute value length when the minimum/maximum length fields are not displayed on the Admin.
Dashboard
- Comments for
StorageInterface.php
have been updated for accuracy. Fix submitted by Malyovanets Nickolas in pull request 13729.
- You can now search for configuration settings from the Admin.
- Long input field labels now wrap by word, not letter.
- The dashboard last order table now shows the correct table for the specified store view in a multisite deployment where storefronts use different currencies. Fix submitted by Ankur Raiyani in pull request 15682. GitHub-15660
- When you edit an administrative user role, Magento now displays the Customer Groups section under the Customers section as expected. Previously, Magento displayed the Customer Groups section under the Stores > Other settings section.
Directory
- When sorting by price, Magento now displays the same number of products no matter how it sorts products in the Catalog Product list. Previously, Magento reduced the product count by the number of disabled products when sorting by price. Fix submitted by AlexWorking in pull request 14215. GitHub-13899
- Currency conversion rate services now work as expected in the Admin.
- The new Currency Converter API supports retrieving TWD currency rates. Previously, the currency rates services that Magento connected to by default could not retrieve TWD rates. Fix submitted by Hirokazu Nishi in pull request 15542.GitHub-15541
- Magento now displays the default country selection when you add a new address as part of creating a new customer from the Admin. Fix submitted by rostyslav-hymon in pull request 14204 GitHub-3483
dotmailer
- dotmailer now displays the first and last purchase categories in the customer sales data fields.
EAV
- The Product Attribute Repository’s incorrect return values have been replaced with values that now adhere to
Magento\Catalog\Api\ProductAttributeRepositoryInterface (extends Magento\Framework\Api\MetadataServiceInterface)
as expected. Fix submitted by julianvdrielen in pull request 15723. GitHub-4803
- When Elasticsearch is configured as the search engine, you can now enable and disable the EAV indexer from the Enable EAV Indexer field (Stores > Settings > Configuration > General > Catalog > Catalog Search).
- Magento no longer displays empty product attributes of type
dropdown
orswatch
as having a value of no on the storefront.
- You can now perform a mass update on products that have more than 60 attributes.
- Magento now displays an error message when it does not save dropdown values as you create them. Previously, Magento did not save the options, and did not alert you in a message.
- The
@see
tag now identifies a deprecated property inapp/code/Magento/Eav/Model/AttributeManagement.php
. Fix submitted by Aki Ojalehto in pull request 13301.
- When a product is saved, the
beforeSave
method now encodes the attribute value only if the value is not encoded already. Previously, if you saved a product multiple times, then the JSON-encoded attribute value was also encoded multiple times, which causes problems during subsequent loads.
- Magento no longer displays an SQL query in the browser when an exception occurs. Fix submitted by rostyslav-hymon in pull request 14223. GitHub-13385
- You can now filter an EAV collection before loading by specifying that the value of the attribute is null. GitHub-14312, GitHub-14355
- Nonfunctioning links in the order confirmation email have been corrected. GitHub-12261
Frameworks
- Declared index names in
db_schema.xml
are no longer ignored by declarative schema. Previously, index names were autogenerated based on table and column names.
- The
htmlentities
function has been replaced with thehtmlspecialchars
function.
- Magnifier now works as expected on any supported operating system and browser. Previously, Magnifier did not hover correctly on devices running Windows Chrome or FireFox.
- Magnifier now turns off as expected when a user moves the cursor off an image.
- The
ExtensionAttributes
object is now autogenerated.
ObserverInterface
has been added to @api. Previously, creating an observer that usesObserverInterface
triggered a patch-level dependency onmagento/framework
. Fix submitted by Malyovanets Nickolas in pull request 13786.
- The doc block of the
walk
method in a collection now correctly reflects that this method will accept an array. Fix submitted by ByteCreation in pull request 13374.
getFrontName
has been refactored to returngetModuleName
’s return values. Fix submitted by Aki Ojalehto in pull request 13299.
- Emogrifier dependency has been updated to ^2.0.0. Fix submitted by Oliver Klee in pull request 13351.
- The log message created when Magento throws an exception when opening an image now tells you which file triggered the exception. Fix submitted by Patrick McLain in pull request 13144.
Zend_Json
has been removed from the JSON result controller. GitHub-9236
\Magento\TestFramework\Annotation\AppArea
no longer breaks when it encounters valid values. Fix submitted by Malyovanets Nickolas in pull request 12992. GitHub-2907
-
Zend_Service
has been upgraded from v.1 to v.2, including these specific changes:-
Removed
Magento\Framework\Locale\CurrencyInterfac
from thesetService
method and changed it to\Zend_Currency_CurrencyInterface
, which must be the provider to this function. -
Changed return type to
\Zend_Currency_CurrencyInterface
, the given instance of the service is returned by thesetService
function. -
Removed
\Zend_Service
from thegetService
method and changed it to\Zend_Currency_CurrencyInterface
. -
Added
@deprecated
tags to both methods and added@see
annotation to the methods. Referenced the corresponding interface\Magento\Directory\Model\Currency\Import\ImportInterface
. Fix submitted by Danny Verkade in pull request 12957. GitHub-9243
-
- The ReleaseNotification module has been added to support the display of new release highlights.
- Magento now saves date and time correctly for different timezones and locales. Fix submitted by Raul Mateos in pull request 11306. GitHub-10485, GitHub-10580, GitHub-10754
- The
Zend_Feed::importArray
static call has been replaced with a new interface. This concrete class takes theZend_Feed
object and returns its own result in the form of a wrapper aroundZend_Feed_Abstract
. Fix submitted by Dusan Lukic in pull request 9347. GitHub-9240
- Customers can now successfully check out when the AdBlock extension and Google Analytics are enabled.
- Product records inside the
catalog_product_super_link
table are no longer updated needlessly when you save a configurable product. Previously, saving a configurable product erased and then reinserted records in thecatalog_product_super_link
table even when child products were not changed. This practice quickly resulted in an unnecessarily largecatalog_product_super_link
table, especially in multi-website installations.
- Magento now caches popular search results for faster response time on popular searches. A system administrator can configure how many top search queries can be cached.
- We’ve replaced the usage of
Zend_Json::encode
in the setup marketplace tests. GitHub-9236
- The
Magento\Framework\Json\Helper\Data
class has been deprecated and removed from theMagento\AdminNotification
module. GitHub-10329
- An entry for
compiled_config
cache has been added to thecache.xml
file. GitHub-11295
- The report page now returns a 500 status code (internal server error) instead of a 503 status code when an unexpected error happens, such as an event that generates the report format pages. Fix submitted by AlexWorking in pull request 14190. GitHub-11512
- You can now use the layout update XML field to include custom CSS in CMS pages. GitHub-4454
- The
$params
parameter for the post method of\Magento\Framework\HTTP\ClientInterface
has been updated to support string type. Fix submitted by Sergey P in pull request 14481. GitHub-3489
- We’ve added JSON and XML support to the post method in the
\Magento\Framework\HTTP\Client\Socket
class. Fix submitted by Sergey P in pull request 14169. GitHub-3489
- After restart of MySQL, changelog tables now always contain at least one record. Previously, changelog tables were empty, which resulted in a loss of the last
auro_increment
value for the product ‘version_id’. Fix submitted by Ihor Sviziev in pull request 14636. GitHub-14465
- Magento now displays two distinct widgets on the homepage as expected when you create two widgets of type
Catalog Product List
to theCMS homepage
at locationcontent.bottom
with different titles, but the same condition. Previously, the first widget loaded was displayed twice depending on sort order. Fix submitted by Ihor Sviziev in pull request 14816. GitHub-4389
- The Change Password warning message no longer appears twice when Magento prompts you to change your password in the Admin. Fix submitted by Riccardo Tempesta in pull request 14897. GitHub-14895
- Pages are now successfully rendered when the
meta title
page configuration parameter is set. Fix submitted by Lorenzo Stramaccia in pull request 11368. GitHub-2956
- CSS code is now automatically updated in the browser. Previously, users had to press CTRL+F5 to see CSS changes. GitHub-11354
\Magento\Framework\Encryption\Encryptor::getHash
now uses the specified hashing algorithm version. Fix submitted by Mads Nielsen in pull request 13885. GitHub-5463
- The Multiple Payment Methods Enabled setting now works as expected. Previously, Magento threw this error when this setting was enabled:
Found 3 Elements with non-unique Id
. GitHub-15348
- The
setAttributeFilter
method now specifies a table when calling theaddFieldToFilter
method to add a field to the filter for the collectionEav/Model/ResourceModel/Entity/Attribute/Option/Collection.php
. Fix submitted by rostyslav-hymon in pull request 14676. GitHub-14572
- Categories are now populated as expected. Previously,
catalog_category_product_index
did not contain all category product relations that are incatalog_category_product
. The highest category IDs per type were missing from the index. Fix submitted by Anton Evers in pull request 12624.
vendor/magento/framework/composer.json
now declare a dependency on\Zend_Db_Select
. Fix submitted by Ihor Sviziev in pull request 12992. GitHub-12967
- The Magento Admin no longer falls into a redirect loop when an administrator logs in with a role that has no resources assigned. GitHub-10611
- You can now successfully print out an invoice from the Admin without including order details. Previously, Magento threw a fatal error because the
Zend_Pdf_Color_RGB
class was not found in the_drawHeader
method. GitHub-11581
- The Stores > Settings > Terms and Conditions table now displays the names of all store views and conditions as expected. Fix submitted by rostyslav-hymon in pull request 14868. GitHub-13944
- We’ve fixed backward-incompatible changes to transport variable event parameters that had previously resulted in neither the email or the
$transport
variable being changed as expected. Fix submitted by gwharton in pull request 16600. GitHub-10210
- The sodium library now handles all new encryption and decryption while supporting encryption and decryption of legacy values with mcrypt. Fix submitted by Patrick McLain in pull request 135.GitHub-128, GitHub-124, GitHub-129
Application framework
- We’ve removed undefined fields from files in
/lib
. Fix submitted by adrian-martinez-interactiv4 in pull request 11662.
- The doc block that describes
setValue
inFilterBuilder
now reflects that this method will accept an array. Fix submitted by ByteCreation in pull request 11855.
- Magento now uses valid ISO language codes in HTML headers. Fix submitted by Cristian Sanclemente in pull request 11644. GitHub-11540
- Magento can now generate unsecure URLs if the current URL is secure. GitHub-6175
- The
php bin/magento app:config:dump
command no longer adds an extra space to multiline array values every time it runs. Previously, this command inserted extra spaces, which triggered Github to commit these files as changed. Fix submitted by adrian-martinez-interactiv4 in pull request 11452. GitHub-11328
- The
StockItemCriteriaInterface
methodsetProductsFilter
now accepts an array of IDs. Previously, this method accepted either a single integer or an array, but returned only one item. Fix submitted by Kirill Morozov in pull request 11503.GitHub-7678
- The Magento application framework has been updated to address a jQuery security issue.
- We’ve removed the usage of
Zend_Json
from the JSON controller. GitHub-10342
- The
\Magento\Framework\Serialize\Serializer\Json
class has replacedZend_Json usage in Framework/Module/PackageInfo.php
. GitHub-9236
Zend_Json
has been removed from theDataObject
class. GitHub-9236
- We’ve added a declarative mechanism to limit the HTTP methods that a controller can process by implementing one or more
Http<Method>ActionInterface
.
Zend_Json
has been removed from setup andWebapi
and replaced bySerializer\Json
inPackagesAuth
.
- Classes that contain a – are now rendered as added to the XML. Previously, – were replaced with a single -. GitHub-10645
Configuration framework
- An order’s
relation_child_id
andrelation_child_real_id
fields are now accurately set during edit operations. Fix submitted by Roman K. in pull request 11909. GitHub-10195
- Pages that contain layout files with
block_id
arguments that contain whitespace now load correctly. Previously, Magento threw an error when loading these pages. Fix submitted by Ihor Sviziev in pull request 11849.GitHub-7640
- The config array can now read all settings from
config
. Previously, the config array was hardcoded to read three settings only. Fix submitted by Vova Yatsyuk in pull request 11302.
- You can now assign a default value to config fields of type
image
orfile
. Fix submitted by Anton Evers in pull request 10253.GitHub-10252
Database framework
- The
getSize
function now reflects item and page count totals for filtered product collections on the category page.
JavaScript framework
- Magento now displays video and images as expected when you select a video or click to view a full-screen image for a configurable product. Fix submitted by Chumak Roman in pull request 12556. GitHub-12268
- We’ve removed duplicate parameters from a Magento UI LESS library mixin. Fix submitted by Bartek Igielski in pull request 11276.
- You can now disable the full-screen gallery on mobile devices. GitHub-12490, GitHub-12285
- The calendar widget (
jQuery UI DatePicker
) now correctly displays more than one month. GitHub-7379
- JavaScript files are now located inside the
web/js
directory.
- Menus with nested elements now align correctly. GitHub-7897
- Magento no longer incorrectly overly encodes UTF-8 files when JavaScript bundling is enabled. Previously, this issue resulted in poor character encoding on the storefront. GitHub-10562, GitHub-6733
jquery.mobile.custom.js
is now compatible with jQuery 3.x. Fix submitted by Kirill Morozov in pull request 13688.
- The Fotorama gallery now works as expected on Android devices. Fix submitted by Danilo Argentiero in pull request 14123. GitHub-7906
- The dataprovider constructor has been changed to the
RendererInterface
, making it compatible with custom translators (which can be injected as an argument for\Magento\Framework\Phrase\Renderer\Composite
). Fix submitted by Danny Verkade in pull request 12007. GitHub-2156
- You can now place an order for a grouped product where the subproducts quantity is less than one. Fix submitted by Ihor Sviziev in pull request 14814. GitHub-14692
- A JavaScript error in
dropdowns.js
has been fixed by properly initializing theel
variable. You can now setoptions.autoclose
tofalse
. Fix submitted by Dmytro Cheshun in pull request 15607. GitHub-15469
Session framework
- The
sid
variable (?sid
) no longer appears in the URL even if it is disabled in the Admin. GitHub-9453
- We’ve removed the 30-second timeout limit for the session locking mechanism when Redis is used for session storage.
colinmollenhour/php-redis-session-abstract
has been updated to support PHP 7.2. Fix submitted by Patrick McLain in pull request 39.
- When you add a product to your wish list after logging out, Magento now redirects you to your account Wish list page and adds the product. Previously, you were redirected to your wishlist page, but Magento did not add the product. GitHub-11825
- The shopping cart no longer empties unexpectedly due to concurrent requests during checkout. Fix submitted by Jignesh Baldha in pull request 17608. GitHub-12362
General fixes
- Magento now validates custom layout update XML against the schema file when you save the XML. Fix submitted by adrian-martinez-interactiv4 in pull request 11859.
- You can now successfully close full-screen zoomed product images displayed on an iPhone 4s, 5s, 6, or 6s with the Safari browser. Previously, if you chose full screen zoom for any product image, you could not close the full screen zoom.
- Deleting a customer from the Admin no longer causes fatal errors upon storefront login or registration.
- The Modified date field is now updated as expected when you save a page in a deployment running Magento 2.2.1. Fix submitted by Oscar Recio in pull request 12637. GitHub-12625
- When the Redirect Customer to Account Dashboard after Logging in setting is disabled, Magento now includes the login URL (including the referrer in base64 encoding) from the
window.checkout
object as expected (for example, https://myshop.com/customer/account/login/referrer/aHR0cHM6Ly9teXNob3AuY29tL2NoZWNrb3V0).
- Magento now correctly handles
file
orimage
type customer attributes. Previously, when you tried to save customer information when one of these customer attributes were set, Magento threw an exception and did not save the file. Fix submitted by Franciszek Wawrzak in pull request 11267. GitHub-11252
- You can now use uppercase letters in store codes. Fix submitted by Manu Gonzalez Rodriguez in pull request 12010. GitHub-11996
- You can now add a new attribute class to a page’s XML root by adding an HTML node. Previously, adding an HTML node caused a validation error. Fix submitted by Adrian Martinez in pull request 11862. GitHub-11697
- The
\Magento\Quote\Model\ResourceModel\Quote\Item\Collection
now returns items that have only existing relations in thecatalog_product_entity
table. Previously, Magento loaded quote items with non-existing products.
- Magento now correctly renders the download link in invoice emails. Fix submitted by Jakob Meissner in pull request 11024.
AuthenticationInterface
now contains API interceptors that enhance user authentication, making it possible (for example) to implement a different hashing algorithm for non-Magento to Magento migrations. Fix submitted by Navarr Barnier in pull request 11546.
-
The Magento UI mixins have been edited to improve performance. Changes include:
-
removing all fallbacks to variables that don’t exist in the global scope
-
defining all variables that are used inside mixins as parameters
-
adding all missing parameters to the areas of the code where mixins are invoked
-
moving and simplifying mixins used only once. Fix submitted by Bartek Igielski in pull request 11371.
-
- The dashboard y-axis range has been enhanced by the addition of an index for y-axis range values. Fix submitted by Oscar Recio in pull request 11752. GitHub-7927
- Lengths for the following fields in the
quote_address
database table have been expanded:telephone
,fax
,region
, andcity
. Fix submitted by Yaroslav Rogoza in pull request 11286. GitHub-10869
Magento\Framework\Escaper
now contains theescapeDollarSign
method, which looks for${
and replaces$
with$
during save actions involving the page and block controller. Fix submitted by Lorenzo Stramaccia in pull request 11286. GitHub-10501
- Magento now displays product review summaries only when a product has at least one review. Fix submitted by Jan Schlosser in pull request 10248. GitHub-4530
- Magento now uses the config field backend model (
system.xml
) to generate default configuration values on the Admin. Previously, theafterLoad()
method was evoked only after loading the configuration value from the database, and not after loading the configuration fromconfig.xml
. This caused the default configuration fromconfig.xml
to be passed to the form element asstring
instead ofArray
, which resulted in empty configuration fields in the Admin. Fix submitted by kweij in pull request 7742. GitHub-4530
- Magento now selects the
CUST_GROUP_ALL
customer group inadminhtml
after saving an attribute, and all$customerGroups['value']
are now of typestring
. Fix submitted by Manuel Schmid in pull request 10475. GitHub-10436
- Session cookies now last until the session closes. Previously, Magento interpreted a
form_key
cookie lifetime of 0 to determine the duration of the cookie lifetime, and the cookie expired immediately. Fix submitted by Eero Kuusela in pull request 10528. GitHub-10527
- Google Analytics has improved support of websites that conduct transactions in multiple currencies. Previously, payment providers that required different base currencies were configured as different websites in a multisite deployment, and consequently had to send different base currency in Google Analytics. Fix submitted by DominicWatts in pull request 10508. GitHub-6709, GitHub-7471
- Google Adwords now has the ability to provide transaction-specific conversion values in a conversion tracking tag. Fix submitted by Dominic Watts in pull request 10558. GitHub-6708
- The text in the authentication popup has been corrected to Checkout as a new customer. Fix submitted by Parker Smith in pull request 10627. GitHub-9533
- Customer data is now fully loaded after restarting the browser during an unexpired user session. Previously, the
section_data_ids
section of the session cookie was not properly completed. GitHub-14912
X-Magento-Vary
andPHPSESSID
now have the same expiration time. Previously, theX-Magento-Vary
cookie had an expiration ofsession
, which meant it was not considered expired until the browser was closed. In contrast, thePHPSESSID
cookie had a finite expiration time (notsession
). At times, this resulted in Magento caching the wrong page for the logged-in user.
- You can now delete rows in the
dynamicRows
component. Fix submitted by Roman K. in pull request 921. GitHub-8830
- Creating new configuration attributes no longer causes naming collisions in the JavaScript UI registry. Previously, when you created a new default attribute and then subsequently created a new product, JavaScript errors occurred. Fix submitted by Volodymyr Zaets in pull request 12945. GitHub-12555
- The
\Magento\Test\Php\LiveCodeTest::testCodeStyle
method now uses whitelist files. Fix submitted by Adrian Martinez in pull request 11376. GitHub-10559
- Magento now processes the oldest message queue entries first instead of last.
- You can successfully save a CMS page with same URL key as another store on a different website but with the same hierarchy.
- You can now successfully preview a Registry Update email template. Previously, Magento threw a fatal error when you tried to preview this template.
- Enterprise Rewards no longer permit double refunds. Previously, problems with the refund logic permitted the inadvertent creation of a double refund.
- Swatch images now resize as expected. Previously, even when a product attribute with Catalog Input Type for Store Owner was set to Visual swatch, the image size did not adjust as expected.
- Customers with an empty Date of Birth field can now be saved even when the field is not marked (or checked on the JavaScript side) as mandatory. GitHub-12146
- Store view home pages in multistore deployments no longer display breadcrumbs. Previously, the first store view in a multistore deployment looked fine, but the other store views included unnecessary breadcrumbs on the home page. GitHub-6504
- You can now enable logs as expected (through the use of Stores > Settings > Configuration > Advanced > Developer > Debug > Log to file) when switching from production mode to developer mode.
magnifier.js
now works no matter which mode is set. (magnifier.js
offers the option of setting mode to ‘inside’ for an in-frame zoom.) GitHub-4977
- The
timestamp
fields inoauth_nonce
now include indexes to avoid deadlocks while erasing old records. GitHub-10346
- The search bar now closes as expected when a user enters a search term in the mobile search bar, does not submit the search term, and then taps the search icon to close the search bar. GitHub-11231
- Magento now throws a descriptive error as expected when using a negative value that contains an invalid minus symbol to update reward points on a customer account.
- The My Invitations page for a customer account now displays the correct reward points amount.
- The
404 forbidden
error message has been corrected for accuracy to404 not found
in/app/code/Magento/Backend/Controller/Adminhtml/Noroute/Index.php
. GitHub-10775
- The Module Manager module grid list is now displayed correctly (System > Tools > Web Setup Wizard > Module Manager). Fix submitted by Vijay Golani in pull request 15755. GitHub-15192
- Layered navigation now shows the correct product count. Previously, Magento counted only in-stock product. GitHub-11946
- DatePicker date format now reflects the user’s locale as expected. GitHub-6858
- Currency rates are now imported for Allowed Currencies as expected. Previously, selecting
Use system value
forBase Currency
during currency set up resulted in a configuration error. GitHub-8003
- Problems with the double column layout on the home page have been resolved. GitHub-11796
- Merchants can now successfully delete the default welcome message. GitHub-9742
- The Track Order link on the order page in the Admin now works correctly. Previously, the URL that Magento generated for an order did not include the store that the order originated in. GitHub-12206
- Magento no longer rounds product quantity to the nearest whole number when trying to invoice an order that has products with quantity decimals. GitHub-11941
health_check.php
has been added into thenginx.conf.sample
file. GitHub-11157
- The Google Analytics block code has been moved to the
<head>
tag on the Stores > Settings > Configuration > Sales > Google API page. GitHub-8837
- Magento now displays a more helpful message when you misspell the name of a new module in
registration.php
. Fix submitted by Malyovanets Nickolas in pull request 13731.
- The
Learn More Link
widget option in a Recently Viewed Products widget now respects its setting. Fix submitted by JeroenVanLeusden in pull request 12947.
- You can now use the WYSIWYG editor to upload images even when the media directory is a symlink. Fix submitted by Mike Whitby in pull request 14353. GitHub-13929
- Dependency on the
mageMenu
widget dependency in the breadcrumbs component has been removed. Previously, breadcrumbs on the product page were invisible when themageMenu
widget was not used. Fix submitted by Vova Yatsyuk in pull request 15478.
- Magento no longer uses strings in evaluation of
setTimeout
. Fix submitted by Jonathan Kingston in pull request 14173. GitHub-14172
- Magento no longer displays the
Something Went Wrong
error whenever an administrator with limited privilege logs into the Admin and tries to navigate to a page. GitHub-11700
- The
magento setup:install
command no longer halts with an error atMagento_Catalog
. Fix submitted by Lorenzo Stramaccia in pull request 15982. GitHub-1350
- Magento no longer throw the
Data key is missing: code-entity
error when you try to create and edit a page. GitHub-11163
- Customers are now redirected to the Sign In form as expected when they navigate to this form using the Back button on this browser. GitHub-12715
- The welcome message now displays the new customer’s first and last name after they have confirmed their account by clicking the Confirm Your Account button in the confirmation email. GitHub-12719
- You can now enable debugging (log to file) in production mode. GitHub-11882
- Datepicker now uses the store locale as expected. GitHub-6350
- When you click on a row with inline editing mode enabled while creating an Admin listing, the date column is now converted to the correct value in the date picker. Previously, the date value displayed in the date picker UI always showed the value of the current date instead of the actual column value. GitHub-6831
Gift cards
- Magento now includes a gift card recipient’s email address in the gift card account history. Previously, Magento did not include the gift card recipient’s name and email address in the gift card account history, even though Magento successfully sent the email.
- Magento no longer permits users to save a new gift card without first completing the required values. Previously, when creating a gift card, users could save the card without having designated an amount, but the card could not be purchased. Magento also created a
report.CRITICAL: Warning
error message in thesystem.log
.
- Magento now maintains relationships among new gift card accounts when a customer purchases several gift cards in the same order.
- You can now save gift cards when the price has been changed on the Admin to an unacceptable format. Previously, Magento tried to save amounts in unacceptable formats (such as the inclusion of a comma in a four-digit price), which triggered an error.
- Magento now displays the correct subtotal when a customer adds multiple gift cards of different amounts to his cart.
- The password strength meter has been refactored to perform an email comparison only if an email field exists in the same form on which the meter exists. Previously, Magento threw a JavaScript error under these conditions. Fix submitted by serhii-balko in pull request 13819. GitHub-13429
Google Analytics
- The Google Analytics pageview is no longer triggered twice. GitHub-12221
Google Tag Manager
- The
addToCart
event triggers on the Google Task Manager console only when an item is added to the cart. Previously, the event was triggered before the cart was updated.
- Google Tag Manager product category data is now fully reported. Previously, the Google Tag Manager product category (Enhanced Ecommerce) data did not report all information.
- Magento now correctly displays product titles when displaying Sales information in Google Analytics. Previously, Magento replaced spaces in product names with their HTML values (for example,
\u0020
). Fix submitted by Julien ANQUETIL in pull request 13907. GitHub-13827, GitHub-13350
- All relevant attributes are now populated in the Google Tag Manager when a customer adds a product to their shopping cart. Previously, grouped, bundle, and configurable product attributes were missing in the Google Tag Manager.
HTML
- Magento now displays a newly created Contact Us form on a category page as expected. Previously, you could create a Contact Us form, but Magento did not display it properly. GitHub-12601
- You can now change only the primary button
font-weight
without changing regular buttonfont-weight
with LESS variables. Fix submitted by Chirag Matholiya in pull request 16036. GitHub-15832
- HTML minification now works as expected. Fix submitted by Lisovyi Yevhenii in pull request 16332. GitHub-5316
- The
name
attribute is no longer empty when you create custom fields during product creation. GitHub-9944
Image
- You can now set values for
MAX_IMAGE_WIDTH
andMAX_IMAGE_HEIGHT
in Stores > Settings > Configuration > Advanced > System > Images Configuration, which supports the upload of larger images. Fix submitted by Malyovanets Nickolas in pull request 17826. GitHub-13747
.png
images from the GD2 image library that have transparent backgrounds now retain their transparent backgrounds after upload. Previously, these transparent backgrounds were rendered black when you displayed these images after upload. Fix submitted by Eduard Chitoraga in pull request 17857. GitHub-14248
- Magento now displays the background of transparent product image watermarks correctly. Fix submitted by Ronak Patel in pull request 16929. GitHub-16929
- Product image zoom now works as expected in stores running on Safari. Fix submitted by Danny Nimmo in pull request 17426. GitHub-17416
- The cross-sell product placeholder image on the shopping cart page is now the same size as the product listing page placeholder image. GitHub-12017
- The WYSIWYG editor now displays image icons as expected. Previously, the WYSIWYG editor showed broken image icons only. GitHub-10417
Import/export
- When you import information about existing customers, Magento now changes only the specific rows for this customer. If rows for other customer attributes (for example,
group_id
,store_id
,created_at
) are absent in the import file, these values are included unchanged.
- You can now import or export a specific store view that includes custom options and bundle product options. Previously, the import/export feature did not include store view-level edits for custom options.
- Import now completes successfully when a product’s CSV entry is split over two import “bunches”. Previously, Magento threw this error:
Cannot add or update a child row: a foreign key constraint fails
, and import failed.
- You can now hide an image as expected by using the
hide_from_product_page
attribute during import.
- Product import now updates the Enable Qty Increments field as expected. GitHub-14351
- Magento now displays the correct execution time for an import operation on the System > Data Transfer > Import History page.
- The Admin product import feature can now import zero (0) values into the custom attribute field. GitHub-12083
- A grammar error in the “What is this” tooltip for the Braintree vault has been corrected.
- The export process now correctly handles negative values in the exported XML file. GitHub-11729
- Magento no longer throws an exception when importing a product with a category field that begins with a comma. GitHub-10697
CatalogImportExport categoryProcessor
now supports escaped delimiters in category names. GitHub-6948
- The customer import process no longer crashes due to an out-of-memory problem during import of a customer database containing 250,000 or more entries.
- Support for multiselect attributes for both product and customer entities has been added. Fix submitted by php4umagento in pull request 98.
- Images imported by URL now have conventional file paths. Fix submitted by Pieter Cappelle in pull request 12872. GitHub-12455
- Grouped products are now imported correctly. Previously, after import, simple products were no longer associated with their grouped products. Fix submitted by Pieter Cappelle in pull request 12853. GitHub-12793
- Error reporting for product image import has been improved. Fix submitted by Malyovanets Nickolas in pull request 1201. GitHub-4711
CatalogImportExport
now supports empty row values. GitHub-7468
- You can now set
selection_can_change_qty
during the export or import of a bundle product with properties. Fix submitted by Adam Paterson in pull request 100. GitHub-9342
- Magento no longer throws an exception after successfully validating a
.csv
fil for import. Previously, an exception message was mistakenly passed as a exception description argument instead of exception message, which triggered the exception. GitHub-6924
- The product export process now correctly considers
hide_for_product_page
setting for images. GitHub-8255
- Magento no longer displays a success message when it fails to successfully import all products. GitHub-5846
- Magento no longer displays extraneous records for an order into the exported CSV file. GitHub-12714
- Product import now fetches the relationship between product SKU and
entity_id
with improved efficiency when inserting attribute data. GitHub-10920
- Magento now renames images during a bulk upload of products with images. Fix submitted by Umar Chaudhry in pull request 99. GitHub-11324
- Report error CSV file now works when you try to import a CSV file with a semicolon delimiter. Fix submitted by Malyovanets Nickolas. GitHub-5015
- Magento now provides a validation failure during import when multiselect columns contain duplicate values. Fix submitted by carstenpfeifer in pull request 117. GitHub-103
Indexing
indexer:status
now outputs information about the schedulemview
backlog. Fix submitted by Luke Rodgers in pull request 12592.
- Magento no longer reindexes entities that have not been changed. Previously, Magento reindexed entries that were not changed but which had a MySQL UPDATE. Fix submitted by Anton Evers in pull request 4893.GitHub-2987
- The customer grid indexer now works as expected. Previously, this indexer did not work when reindexing using the command-line interface during the upgrade. Fix submitted by Leonid Poluyanov in pull request 10838. GitHub-10838
- Tier pricing for a single product unit now works as expected. If a tier price is set for one product unit, and this price is lower than the product price or special price, then the product price index table is populated with the tier price.
Infrastructure
- This release provides compatibility with PHP 7.2.x.
- You can now configure system logs to write to syslog, which supports subsequent re-streaming and minimizes storage needs.
- You can now set access to only integrations for Admin roles (rather than assign full access). Previously, access for integrations could be assigned only when Role Resources was set to all. GitHub-9684
expectException()
calls now accept two parameters (instead of one). Fix submitted by Fabian Schmengler in pull request 11099. GitHub-11059
- Several components included by Composer have been updated to the latest patch versions.
- Customers can change product status by clicking on the toggle element or by clicking on label text, but not by clicking the area around a toggle element. Previously, if a customer clicked on the area around a toggle element, Magento changed the state of the element. Unintended results could occur if a customer mistakenly clicked on the area around the element and didn’t realize that the status had changed.
- We’ve removed
Zend_Json
from the data object, test suite, and package information. GitHub-10306, GitHub-10320, GitHub-10340
- Changing the
@tab-content__border
variable in Blank theme now works as expected. GitHub-14999
- Corrected sticky footer in
page-main
container height on mobile devices. GitHub-15118
- Style groups for mobile devices (
max-width
) are now specified in the correct order. GitHub-14476
- The Web Setup wizard icon sidebar shortcut on the Admin now links as expected to the wizard. Fix submitted by Arnoud Beekman in pull request 17610. GitHub-13948
- The condition category chooser now handles multiple nested categories as expected. Previously, if a cart rule contained several nested categories, no categories appeared on the page, the page became unresponsive, and Magento eventually crashed. Fix submitted by Malyovanets Nickolas in pull request 17816. GitHub-15121
- The
magento/module-widget/etc/widget.xsd
andmagento/module-widget/etc/widget_file.xsd
files have been updated to support multipledepends
parameters. GitHub-9783
- Magento now requires that customers select State/Province when shipping orders to India, and the checkout page now provides a drop-down field with appropriate values. Fix submitted by p-bystritsky in pull request 12378. GitHub-12378
- We fixed the invalid parameter configuration that was provided for the
$block
argument ofMagento\\Ui\\Component\\HtmlContent
. Fix submitted by Tomasz Gregorczyk in pull request 12665. GitHub-12452
- The
app/code/Magento/Downloadable/Helper/File.php
andapp/code/Magento/Bundle/Block/Adminhtml/Catalog/Product/Edit/Tab/Attributes/Extend.php
files no longer contain duplicate key arrays. Fix submitted by Leandro F. L. in pull request 12520.
- Magento now deselects only the attributes you choose to deselect when you set the Use Default Value setting on a store view to no for certain attributes. Previously, when you deselected the Use Default Value setting on a store view for certain attributes, Magento unselected other attributes as well.
- Additional blocks for footer links now line up with default footer links as expected. GitHub-6712
- The Psr logger debug method now works by the default in developer mode. GitHub-11509
- Proxy/Interceptor generator now works as expected with PHP 7.1 syntax.
- Module composer versions are no longer mandatory in the GitHub repository.
- The handling fee configuration for shipping methods is now silently casted to float. Fix submitted by serhii-balko in pull request 13818.
- The
create_function()
function has been deprecate and removed. Fix submitted by Yevhen Sentiabov in pull request 32.
- Magento now sets the
trigger_recollect
attribute back to 0 after collecting total amounts for the quote. Previously, Magento timed out if a customer tried to reload a quote. Fix submitted by Ihor Sviziev in pull request 14812. GitHub-9580
- You can now add new columns to the item table in the
admin sales_order_view
layout. GitHub-10824
- The Admin shipping report now shows the correct currency code. GitHub-11793
Configurable::getUsedProducts
returns a simple array as expected after product collections are cached GitHub-11880
- The input format of customer date of birth has been corrected. GitHub-11332
- The Add to cart checkboxes in Related Products are no longer visible when
$canItemsAddToCart
is set to false. GitHub-6891
- A responsive design issue with the mobile landing page has been resolved. Previously, the Shop By and other page elements were positioned incorrectly. GitHub-10941
- We’ve fixed an issue with
addCrumb()
. GitHub-11275
- The
getChildren()
method now returns a list of IDs that is sorted by theposition
attribute. GitHub-11310
- Magento now allows the setting of a custom HTTP response status code in a redirection. GitHub-9028
Magento\Search\Helper\getSuggestUrl()
is now used as expected in the search template, which supports a custom autosuggest feature. GitHub-6802
- XHTML templates now use schema URNs. GitHub-6661
SymLinksIfOwnerMatch
has replacedFollowSymLinks
in htaccess templates. GitHub-10811
- Magento no longer throws an error when using
Magento\Quote\Model\ResourceModel\QuoteItem\Collection::getItems()
to load a quote item collection. GitHub-8954
- Merchants can now apply styling by changing LESS variables in the Luma theme as expected. Fix submitted by hitesh-wagento in pull request 15794. GitHub-15608
sjparkinson/static-review
has been removed throughout the code base.
- The
@deprecated
tag has been added toMagento\Store\Model\Store::$_isAdminSecure
. GitHub-4720
- A new static test detects blocks without the
name
attribute.
- The Contribution Guide now suggests that contributors specify possible replacements for deprecated code. GitHub-10133
- You can now use the command-line interface to create a new administrator. Previously, Magento did not recognize configured tableprefix, which prevented Magento from creating the new user. GitHub-11176
- The
getToolbarBlock()
method has been refactored to permit removal ofproduct_list_toolbar
. GitHub-9413
- When you use a UI component-based form and add a custom regular expression pattern validation to an input field, Magento now properly converts the supplied pattern from a string to a JavaScript RegEx object. GitHub-9919
- The
hasDataChanges
function now returns false as expected when no data has been changed. GitHub-12374
Klarna Payments
-
The Purchase button is now disabled as expected if Klarna authorization is declined.
-
The unnecessary
span
element below the onboarding text has been removed.
Locale
- The DatePicker date filter on Reports > Products > Ordered now works as expected for administrators working in Australian English locales.
- The zip code pattern for Japan now permits only the seven-digit codes that the Japanese postal service accepts. Fix submitted by Oscar Recio in pull request 14300 GitHub-14072
- Magento now correctly validates birth dates in stores running French locales. GitHub-9743
Logging
- Admin action logs now list changes to product quantity as expected.
Messages
- The Payment & Shipping Method area of an order now displays an informative message if the payment method previously selected is no longer available. GitHub-12209
- Magento now displays an error message as expected when a user submits a registration form without first completing the required date of birth field. GitHub-4248
- The error message that Magento displays when a customer submits a product review without selecting a rating can now be translated. GitHub-10474
-
The message that Magento displays under the following circumstances has been improved:
-
You download a database from a staging environment that has code deployed to it that upgrades the schema version, or
-
You are on the master branch in your local environment, which is behind the database. GitHub-9008
-
- The exception message in
findAccessorMethodName()
ofMagento\Framework\Reflection\NameFinder
has been improved. GitHub-9764
Newsletter
- Magento now sends confirmation-of-subscription email to new subscribers only. Fix submitted by Oscar Recio in pull request [11604](https://github.com/magento/magento2/pull/11604. GitHub-5439
- Guest users can now sign up for newsletters for multiple stores. Previously, when a guest user signed up for a newsletter from multiple stores, Magento sent a subscription confirmation message, but did not successfully subscribe the user.
- A customer subscription on one store no longer depends on the customer’s subscription on another store.
- Magento now sends the newsletter subscription success email as expected when a customer successfully subscribes to a newsletter. GitHub-12439
- Magento now sends a confirmation request email to the customer when she unsubscribes to a newsletter. Fix submitted by Ihor Sviziev in pull request 16995. GitHub-15218
- Magento now displays the newsletter subscription confirmation message as expected after a customer clicks the confirmation link in the subscription confirmation email. Fix submitted by Rahul Kachhadiya in pull request 15861. GitHub-14747
- Magento now uses an index to retrieve subscribers from the database instead of the slower
Using where
query. GitHub-12787
- Magento no longer sends redundant newsletter subscription confirmation emails to a customer who creates an account after first logging in as a guest user. GitHub-12876
- The title of the newsletter Subscribe button now wraps correctly.
- Newsletter subscriptions status is now specific to each store in a multistore deployment. Previously, when a customer uses the same email address for each account on different stores, changes to the newsletter subscription for an account on one store affected the accounts on other stores. GitHub-10014
- Syncing of newsletter subscribers now works correctly. Previously, the newsletter
create-date
andchange_status_at
values did not work as expected. GitHub-4004
Orders
- Magento no longer copies every address that has
save_in_address_book
set to 0 to the customer address book. Previously, if you placed an order as a guest and set thesave_in_address_book
value for an address to 0, Magento still copied that address to the customer address book when it registered a new customer on the checkout success page. Fix submitted by Roman K. in pull request 11903. GitHub-7691
- Magento now displays new orders at the top of the orders list as expected when sorting order by purchase date. Fix submitted by Ihor Sviziev in pull request 11931.
- The
getTracksCollection()
method now returns collection objects. Previously, this method returned either collections or arrays. Fix submitted by Roman K. in pull request 11680. GitHub-8022
- When you place an order in the Admin, Magento now displays the form needed to enter information for enabled payment methods. Fix submitted by serhii-balko in pull request 11683. GitHub-11380
- The Shipment API now adds a customer note to a shipment if the shipment was created through the API and
appendComment
is set to true. Fix submitted by Jeroen Van Leusden in pull request 11519. GitHub-11207
- Magento now displays the State/Province information on Order View > Information > Address Information. Fix submitted by Raul Mateos in pull request 11234. GitHub-10441
- Magento now correctly calculates the value of the
base_shipping_discount_tax_compensation_amnt
field. Fix submitted by Anton Evers in pull request 10435. GitHub-10255
- The Products Ordered report now shows simple (child) products of configurable products. Fix submitted by Ranjith VK in pull request 9908. GitHub-9196
- The Products in Cart report no longer tries to retrieve the data of deleted products. Previously, when Magento tried to generate this report, it threw an exception. Fix submitted by angelo983 in pull request 12540.
- Magento no longer throws a fatal error when you search for a customer from Reports > Reviews > By Customers. Fix submitted by Oscar Recio in pull request 11524. GitHub-10301
- The cancel order and restore quote methods now accurately calculate the amount of stock to be returned to inventory when an order is canceled. Previously, when you canceled an order, some of these methods did not accurately calculate the amount of restored stock. Fix submitted by Danny Verkade in pull request 12952. GitHub-9969
- Invoices and orders now show consistent coupon codes and totals. Previously, invoices did not reflect coupon codes as expected. GitHub-10168
- Coupon codes now work as expected for orders created from the Admin for guest customers. Fix submitted by Vishal Gelani in pull request 16562.
- Magento now sends order confirmation email as expected for orders made using PayPal. Previously, when a customer paid using a credit card, Magento sent email confirmation, but not when an order was paid for by PayPal. Fix submitted by Dmytro Paidych in pull request 14225. GitHub-13778, GitHub-12792
- Magento now uses the store values (prefix, suffix, increment ID, and sequence tables) from the correct store view when placing orders from a non-default store in a multistore deployment. GitHub-9055
- Magento no longer throws error on the Admin order edit page when the order address has extension attributes. GitHub-10438
- When you place an order as a guest and set the
save_in_address_book
value to 0, Magento no longer copies that address to the customer address book if you subsequently register as a new customer on the checkout success page.
- The
cancel
method no longer saves an order and returns true if an order canceled with OrderService cannot be canceled. GitHub-10803
- You can now access the create order page from the customer edit page as expected. Previously, Magento threw a fatal error. GitHub-11832
- New orders are now being saved as expected to the order grid. GitHub-10128
- Magento now correctly applies the designated frontend controller when store view URLs contain store codes (Stores > Settings > Configuration > General > Web > Url Options > Add Store Code to Urls is set to yes). Fix submitted by Vishal Gelani in pull request 15759. GitHub-15565
- Magento now checks if an invoice has been previously canceled before canceling it.
Page cache
- Asynchronous rendering of blocks no longer corrupts layout cache. Previously, when an asynchronous request generated a layout
cacheId
based on same handle as a CMS page, but without loading the associated CMS page, the CMS page-related layout updates were lost. GitHub-8554, GitHub-9050
Payment methods
- Merchants can now provide customized error messages when a transaction fails at the payment stage. Previously, Magento displayed this default message when an error occurred:
Transaction has been declined. Please try again later.
- Magento no longer throws a validation error at the payments step of check out when an agreements checkbox is present. GitHub-11885
- Magento now displays the correct billing address in the order confirmation email when Paypal Express Checkout is enabled. Previously, Magento displayed the shipping address instead of the billing address.
- Customers can now check out using PayPal when the Request Billing Information feature is not enabled. Previously, Magento threw this error when a customer tried to check out with Braintree through Paypal from the shopping cart,
Undefined index: billingAddress in /app/aacdg4mgbgw24/vendor/magento/module-braintree/Model/PayPal/Helper/QuoteUpdater.php on line 138
.
- Magento now provides dedicated payment and shipping debug log files to store information specific to those functional areas.
- PayPal now works as expected with virtual products such as gift cards. Previously, when you tried to place an order for a virtual product using PayPal, Magento did not display the PayPal popup when you clicked Continue PayPal during checkout.
- You can now place orders using PayPal when Payment Action = Order. Previously, when Payment Action = Order, Magento displayed this error when you reached the order review page:
We can't place the order.
- The multi-shipping checkout flow now supports the CyberSource payment method. This payment method is supported by Magento Commerce only. However, as part of the process of adding CyberSource support, we’ve made improvements to the Multi-shipping module to simplify integration process for other payment methods. Users of the CyberSource payment method should note that CyberSource uses the Magento Vault module only to store and retrieve tokens. Stored CyberSource tokens won’t be displayed on the checkout page or customer account.
- Default AVS and CVV codes are now mapped as (null or empty string) instead of
U
for Signifyd.
- The Billing Address field now displays the designated billing address as expected for a registered customer when checking out with Paypal Express Checkout. Previously, Magento displayed the shipping address in the Billing Address field in both the order confirmation email and the Admin.
- Admin users that are not part of the Administrator group can now complete payment for an order using Braintree.
- Magento PayPal integration now supports the Indian Rupee currency (INR).
- Magento now validates that the required Purchase Order Number field is set as expected during checkout. Fix submitted by Pratik Oza in pull request 17670. GitHub-6585
- A type error in the payment void method of the Authorizenet module has been fixed. Fix submitted by Vishal Gelani in pull request 16603. GitHub-16184
- Magento no longer throws an error when you try to add a new shipping address to an order paid with using Braintree from the Admin.
- Magento now creates invoices as expected for orders created using Braintree PayPal. Previously, Magento threw an error when a merchant tried to create an invoice for an order from Sales > Orders.
- Magento no longer disables the Place Order button after an attempt to validate a payment made with PayPal fails. GitHub-12900
- Magento no longer throws an error when you try to open an order page from the Admin or when setting the transaction ID in a payment module. Previously, Magento threw this error:
Notice: Undefined index: value in /app/code/Magento/Backend/Block/Widget/Grid/Column/Filter/Select.php on line 72
. GitHub-3596
- Merchants can now create an invoice for an order placed with PayPal.
- The incorrect @return tag (PHPDocs) in the
placeCheckoutOrder
method has been corrected. Fix submitted by Aki Ojalehto in pull request 13356.
- The
getPaymentMethodList
method no longer sets the value of a group to null in$labelValues
if it already contains group-related values. Previously, theMagento\Payment\Model\Config\Source\Allmethods
config source model did not display every available payment method. Fix submitted by Matthias Zeis in pull request 15134. GitHub-13460
Performance
- The price indexer is now scoped and multithreaded, which improves layered navigation, search, and indexing actions for complex sites with multiple websites and many price books.
- You can change store locale without the exporting and importing configuration data. While Magento is in production mode and the
SCD_ON_DEMAND
is enabled, the Magento store and admin locale options are available. See Change locales.
- The catalog rule re-indexing operation has been optimized, and average re-indexing time (which depends on rule conditions) has improved by more than 80%. Previously, a full catalog rule re-index operation on a medium B2C store took more than 20 minutes.
Pricing
- Magento now uses the current date as expected when setting the start date for a special price. Previously, Magento set the start date for a special price a few years in the future, which prevented the special price for being active.
- Tiered pricing and quantity increments now work as expected with decimal-based inventories.
- You can now add a bundle product that includes a simple product with a price of 0 (zero) to your cart. Previously, Magento threw an error. GitHub-8969
- Magento now displays the correct price on the product page for storefronts running Japanese locales. Fix submitted by Hirokazu Nishi in pull request 15540. GitHub-11711
- Issues with configurable products with custom options and tier prices have been resolved. Previously, the product page did not display the correct product price, but the shopping cart did. GitHub-5774
Product video
- Magento now populates the YouTube video URL and Title fields with the same values as are populated on the default store view on multisite deployments. (These fields are global scope attributes and should be the same on all storefronts.) Previously, Magento left these fields blank in multisite deployments.
- The product video embedding feature is now GDPR-complaint and allows the domain
youtube-nocookie.com
. Previously, when you tried to embed this URL, Magento threw an error.
Quote
- You can now implement a product attribute that sets Catalog Input Type for Store Owner equal to Fixed Product Tax in a multi-store environment. Fix submitted by Danny Verkade in pull request 13019 13019.GitHub-12393
- Magento now successfully saves the value of
REMOTE_IP
when a customer uses an IPV6 (Internet Protocol version 6) address. Previously, this value was only partially saved in thesales_order
andquote
tables. Fix submitted by Dmytro Cheshun in pull request 15142. GitHub-10395
- A type error in
CartTotalRepository
has been resolved. Previously,CartTotalRepository
could not handle extension attributes in quote addresses, and Magento threw aPHP Fatal error: Uncaught TypeError
. GitHub-12993, GitHub-12819
- Magento now displays the correct product price for an order created from the Admin in multisite deployments. Previously, when an order was created from the Admin in a multisite deployment where products were assigned different prices per store view, Magento defaulted to the product price of the primary storeview if the order were edited or updated. Fix submitted by Pratik Oza in pull request 16893. GitHub-14869
- An integrity constraint violation error no longer occurs after you reorder a product with custom options. Fix submitted by Vinay Shah in pull request 13394. GitHub-12705
Reports
- You can now successfully export the Ordered Products report to a CSV file. Previously, the export file contained no report data.
- The scope selector for reports now works as expected. Previously, when a merchant set the scope to All Websites, the generated report showed sales from only a subset of websites.
- The
.csv
export of Coupon reports now shows the correct total for selected coupons. Previously, the total line in the.csv
file showed the totals for all coupons in the selected time period, rather than just the selected coupons.
- Wishlist reports are available on the Admin as expected.
- The Low Stock report now accurately lists all out-of-stock products. Previously, this report was not accurate when the All Websites view was selected. GitHub-10595
- The Admin’s Most Viewed Products tab now displays all the products in all attribute sets, not simply the default attribute set. GitHub-9768
- The timezone has been removed from the date when Magento retrieves the current month from a UTC timestamp. Fix submitted by Michael Wylde in pull request 16492. GitHub-15940
- The Year-to-date dropdown accessed from Stores > Settings > Configuration > General > Reports > Dashboard now displays a numerical list that ranges from 01 to 12 as expected. Fix submitted by Ronak Patel in pull request 17495. GitHub-17289
- A valid XML layout update handle is now preinstalled in the home page. Fix submitted by adrian-martinez-interactiv4 in pull request 11891.
Review
- Magento now displays a
404 page not found
error when a customer tries to navigate to a product review that is not accessible. Previously, Magento displayed a PHP error code. Fix submitted by Malyovanets Nickolas in pull request 17721. GitHub-13102
- Magento no longer throws an error when a merchant edits a product from the Admin when reviews are disabled. Fix submitted by Oleksandr Kravchuk. GitHub-6264
- When a customer creates a product review, the link to the product from the review in the customer’s My Account > My Product Review is now SEO-friendly.
- The Save and Next and Save and Previous buttons on Marketing > User Content > All Reviews now work as expected.
- Magento now checks if a product is assigned to a current website before displaying the write a review page. Fix submitted by Mastiuhin Oleksandr in pull request 14528. GitHub-13010
Return Merchandise Authorizations (RMA)
GET V1/returns/:id
calls return tracks objects as expected.
- The
GET /V1/returns/:id
endpoint retrievestracks
arrays as expected.
- The
GET /V1/returns?searchCriteria
endpoint retrievestracks
arrays as expected.
- The RMA status label now shows on the email that Magento sends to customers when the status of an RMA changes.
- Magento now sends email when the status of a Return Merchandise Authorization (RMA) changes to Return Received, Approved, or Rejected. Previously, no email was sent to the customer who created the order.
- Return Merchandise Authorization (RMA) calls now return order items and comments as expected.
- Magento now sends email when the status of a Return Merchandise Authorization (RMA) changes to Return Received, Approved, or Rejected. Previously, no email was sent to the customer who created the order.
Magento/Rma/Block/Adminhtml/Rma/Edit/Item/Form/Element/Boolean
is a new block element that allows rendering ability for the Boolean RMA attributes on the Admin.
- The Show/Hide details button now works as expected on the Returns (RMA) page.
Rule
- Cart Price rules now correctly display nesting levels for categories with nesting levels that exceed three levels.
Sales
- Magento has added verification for previously set filters in
Magento/Ui/Component/Filters
, which has eliminated duplication of filters in the collectionwhere
conditions.
- Magento now shows all products as expected in the Recently Ordered list when a customer places an order that contains products from multiple stores. Previously, in installations with two storefronts, if a customer added products from both stores to the same shopping cart, and placed a single order, the recently ordered product list would not show all ordered products.
- The grand total for a credit memo now matches the invoiced total when a discount is applied to shipping charges.
- The Items Ordered list now updates as expected when the user clicks OK when changing the options of a configurable product during creation of an order from the Admin. Previously, the update did not occur until the user clicked Update Items and Quantities.
- Admin orders are no longer restricted by a minimum order amount. Previously, Magento required this minimum for both Admin and storefront users.
- Orders exported to a CSV file now display dates in a consistent format.
- Magento now displays text on the New Cart Rules page correctly. Previously, labels listed in the Store View Specific Labels section of this page was sometimes truncated or duplicated. Fix submitted by rostyslav-hymon in pull request 14231. GitHub-12231
- Magento now removes unneeded PDF files after generation. Previously, Magento saved a copy of every generated invoice PDF in
/var
. Fix submitted by Tiago Sampaio in pull request 17280. GitHub-3535, GitHub-14517
- Magento no longer throws an error when a merchant sends an invoice for an order that contains grouped products. Previously, Magento invoiced the order but threw an error, and did not send the email. GitHub-5105
- Sales PDFs now support unicode fonts (GNU Free Font), which broadens language support in these PDFs. Fix submitted by rossmc in pull request 14710. GitHub-9666, GitHub-12323
- Magento now creates invoice numbers using the correct store view ID in a multistore environment. Previously, Magento always used the default store ID for all invoices created in a multistory environment. Fix submitted by Vishal Gelani in pull request 15665. GitHub-14063
- Disabling invoice emails no longer degrades product performance.
- The invoice grid now shows the correct subtotal for a partial invoice. Previously, it showed the entire order’s subtotal. Fix submitted by AlexWorking in pull request 14209. GitHub-13804
- Magento now handles decimals properly in order quantities. Fix submitted by barbazul in pull request 14346. GitHub-14328
- You can now filter orders by customer email. Previously, Magento threw an error when you tried to filter orders by customer email from Sales > Orders.
- The wrong
entity_model
forinvoice
has been corrected in theeav_entity_type
table. Fix submitted by Malyovanets Nickolas.
- An incorrect return type in PHPdoc has been corrected. Previously, this return type resulted in multiple warnings in IDEs. Fix submitted by julianvdrielen in pull request 14304. GitHub-13992
- Magento now syncs an order’s shipping and billing addresses as expected when a customer edits the billing address. GitHub-10856
- The transport variable can now be altered in the
email_invoice_set_template_vars_before
event. Fix submitted by gwharton. GitHub-10210
SalesRule
- Cart price rules with associated coupons are no longer affected by edits to scheduled updates.
- You can now use wildcard values in coupon codes.
- We’ve fixed an error in discount calculations that prevented merchants from creating a rule that set a tex rate and 100% discount. Previously, when a tax rule was applied, and a 100% discount was also applied during check out, the shopping cart displayed a negative grand total. Fix submitted by Stanislav Ilnytskyi in pull request 14468. GitHub-10790
Sample data
- The
sampledata:deploy
andremove
commands now haveno-update
options. Fix submitted by Fabian Schmengler in pull request 12663.
Search
- The Catalog > Products page now contains a keyword search. Fix submitted by Josef Behr in pull request 10089. GitHub-5785
- Magento no longer throws an asymmetric transaction error when you reindex in Magento deployments running Elasticsearch. Fix submitted by Riccardo Tempesta in pull request 10610. GitHub-9930
- You can now submit search criteria by clicking enter when initiating a product search from the Admin. Fix submitted by Malyovanets Nickolas in pull request 1197. GitHub-4696
- Elasticsearch is now the default search engine in Magento. MySQL search has been deprecated.
- Elasticsearch now works as expected in Chinese locales.
- Elasticsearch no longer includes out-of-stock product options in search results.
- Support for Elasticsearch 5.x has been added. See Install and configure Elasticsearch for more information about using Elasticsearch with Magento. Fix submitted by Aurélien Foucret.
- Magento no longer throws an error when a customer uses quick search to search on a term that does not exist in the search database. Previously, Magento returned this error:
TypeError: this._getFirstVisibleElement(...).addClass is not a function
. Fix submitted by Dragan Atanasov in pull request 14301. GitHub-14274
- Magento no longer throws an error when you submit the search form in the header with an empty value. Fix submitted by Dmytro Paidych in pull request 14185. GitHub-13791
- Elasticsearch now correctly calculates the relevance of quick search results according to selected attribute search weights.
- Out-of-stock options for configurable products no longer show up in search and layered navigation results.
- You can now use an asterix when searching on customer names. Previously, if you used an asterix in a search query, Magento displayed this message:
Something went wrong with processing the default view and we have restored the filter to its original state.
Fix submitted by adrian-martinez-interactiv4 in pull request 15077. GitHub-14855
- Search synonyms are now available for all search engines deployed in your Magento store. Previously, search synonyms did not appear in the Admin menu when Elasticsearch 5.0+ was deployed.
- You can now limit the number of results in the search autocomplete. Fix submitted by Max Chadwick in pull request 11572.
- The mini search field no longer loses focus after JavaScript is initialized. Previously, after mini search component’s JavaScript loaded and initialized, search input lost focus. Fix submitted by Mastiuhin Oleksandr in pull request 14180. GitHub-13988
- CatalogSearch has been deprecated and replace with Elasticsearch.
- Sort by Product Name on the category page now works with all available filters. Fix submitted by Ihor Sviziev in pull request 13468.
- An unnecessary
saveHandler
in the CatalogSearch indexer declaration has been removed. Fix submitted by Adrian Martinez in pull request 11626.
- Search synonyms in a group now can declare several words as synonyms. For example, “Elon Musk,tesla” is a valid synonym group, and a search on the phrase “Elon Musk” will also show results for the “tesla” keyword. Previously, you could declare synonyms for each word (for example, “Elon,Musk,Tesla”), but these words didn’t work as a phrase. Synonyms are also now case-insensitive.
- Searching for a value of an attribute set on the store-view level of a product now returns results. Previously, Magento returned results only if the attribute value was entered on the all store-view levels.
- Search terms from the same synonym group now return the same results.
- You can now use the Enter key to submit a search form. Fix submitted by Vishal Gelani in pull request 15696. GitHub-13793
- Search on MySQL-based entities has been improved. (This improvement does not provide a fulltext search, but simply the best way to search when a
SearchCriteria
withfulltext
condition is provided over a MySQL table.) Fix submitted by Riccardo Tempesta in pull request 15685. GitHub-1221
- Magento now displays validation messages as needed on advanced searches. Previously, Magento did not display a message even after a customer submitted the advanced search form with no entries. Fix submitted by Torben Höhn in pull request 17210. GitHub-8131
Shipping
- The free shipping cart price rule now works as expected when UPS shipping method is enabled and Free Shipping is set to “For matching items only”.
- The Magento UPS module has been updated to support new UPS API endpoints.
- You can now use
GET .V1/shipments
to search for shipments that contain a shipping label. Previously, using this call caused Magento to throw an exception. GitHub-6668
- Magento now successfully creates shipping labels for a return merchandise authorization (RMA) when using FedEx Smart Post as the shipping option. Previously, Magento threw an error under these circumstances.
- Multishipping checkout now works as expected. Previously, Magento displayed the
Shipping address is not set
error message when checking out an order with multiple addresses. Fix submitted by Dmytro Cheshun in pull request 16784. GitHub-16555
- Merchants can now ship the remaining items in an order in which some items require a credit memo.
- Customers can now view their completed order from the success page for orders that will be shipped to multiple addresses. Previously, when a customer took a link from the order success page to view their just-completed order, Magento displayed this error: There has been an error processing your request.
- The Shipment grid now displays the status of completed orders correctly. Previously, the Order Status column of the Shipment grid indicated that a completed was being processed.
- The checkout page now displays address fields when the number of address lines has been left at the default. Previously, when the default value was configured, Magento did not display any ship-to address fields. GitHub-7995
- Shipping method radio buttons no longer have duplicate element IDs on the cart page, making it possible for customers to select a second shipping method. GitHub-10795
Sitemap
- Magento now correctly processes global product attributes when generating the sitemap. Fix submitted by Ričards Zālītis in pull request 8999. GitHub-5941
- The sitemap no longer contains
/home
in the URL generated for your store domain. GitHub-12446
- When an error is created during sitemap generation, Magento now sends an informative email to administrators. Previously, Magento threw a fatal error. GitHub-10502
- The lastmod value in the
sitemap.xml
file for a category now contains thecreated_at
timestamp. Previously, this timestamp contained invalid dates. GitHub-9151
- It’s now easier to add additional items to a sitemap. Previously,
SitemapPlugin
worked inconsistently with large sitemaps. Fix submitted by Piotr Kwiecinski in pull request 10442. GitHub-10045
- Sitemap no longer crashes if the scope of the name attribute is set to global. GitHub-5941, GitHub-8999
- Sitemap no longer crashes if the scope of the name attribute is set to global. GitHub-5941, GitHub-8999
- Images in XML sitemap are no longer always linked to the primary store in a multistore deployment. Fix submitted by Pratik Oza in pull request 16813. GitHub-15588
- Magento now generates correct product URLS when you generate a sitemap of categories and products with Use Categories Path for Product URLs set to no ( Stores > Settings > Configuration > Catalog > Catalog > Search Engine Optimization). Fix submitted by Mastiuhin Oleksandr in pull request 14786. GitHub-4788
Staging
- Magento now rolls back updated changes to their pre-update state when a merchant deletes an active scheduled update. Previously, some products were removed from their assigned categories (and categories were removed from the Admin) when an active product update was deleted.
- You can now successfully re-order a configurable product. Previously, a schedule update for one configurable product affected other ordered configurable products.
- Magento no longer deletes products from the Admin product list after a merchant deletes its active schedule update. This deletion appeared only after the scheduled update time.
Store
- Returns from REST endpoint
/V1/store/storeViews
calls now includeis_active
values for stores. GitHub-10922
- The
getUrlInStore()
method no longer returns URLs that contain the store code, which has shortened the extremely long URLs it previously returned. Fix submitted by Pratik Oza in pull request 17261. GitHub-16273
- You can now use an
admin_system_config_changed_section
event to subscribe to changes for all sections in Stores > Settings > Configuration. GitHub-5035
- TinyMCE now loads successfully due to a refactoring of the use of
minify_exclude
configuration. Fix submitted by Pieter Hoste in pull request 13687. GitHub-11577
Swagger
- Swagger now correctly renders POST/PUT operations. Previously, in Swagger, the text area that contained the payload structure of some POST and PUT operations was not displayed.
- Swagger now works as expected when JavaScript minification is enabled. Previously, when JavaScript minification was enabled, the swagger-ui-bundle.js became corrupted, although Swagger worked fine when minification was subsequently disabled, and the files were redeployed. Fix submitted by Pieter Hoste in pull request 17627. GitHub-16927
- Swagger now handles
searchCriteria
-related requests as expected. Fix submitted by Vishal Gelani in pull request 15946. GitHub-11477
- Swagger now works as expected when JavaScript minification and merging are enabled.
Swatches
- Visual swatches now display swatch color in the Admin as expected. GitHub-11828
- The dropdown menu that Magento displays when a user clicks on the Add Swatch button on the Manage Swatch tab now displays all possible options. GitHub-11534
- Color attribute swatches are now visible when sorting is enabled. GitHub-10628
- You can now use REST to import visual swatch attribute options. Previously, you could not add swatch options using service contracts unless a swatch option already existed for the attribute. Fix submitted by gonzalopelon in pull request 12044. GitHub-9410, GitHub-10707, GitHub-10737, GitHub-11032
- The load and merge order of
view.xml
configuration in\Magento\Swatches\Helper\Media
now matches\Magento\Catalog\Helper\Image.
Fix submitted by Patrick McLain in pull request 13506. GitHub-12647
- We’ve replaced
.size()
with.length
to be compatible with jQuery 3.. *Fix submitted by Kirill Morozov in pull request 13686.
- Swatch functionality that has been extended using JavaScript mixins now works as expected in Safari and Microsoft Edge. Fix submitted by rostyslav-hymon in pull request 14247. GitHub-10559
- You can now save a swatch attribute that has an empty option. Fix submitted by enriquei4 in pull request 13220. GitHub-13117
- You can now change attribute type from
swatch
todropdown
. Fix submitted by Malyovanets Nickolas in pull request 17750. GitHub-12695, GitHub-11703, GitHub-9307, GitHub-11403, GitHub-9923
Tax
- Tax total amount is now equal to the sum of the tax details amounts. Previously, Magento displayed the wrong order tax amounts when using specific tax configurations. Fix submitted by Pieter Cappelle in pull request 11594. GitHub-10347
\Magento\Framework\Data\OptionSourceInterface::getAllOptions()
and\Magento\Framework\Data\OptionSourceInterface::toOptionArray()
are now compatible with parent classes. Fix submitted by Yevhen Sentiabov in pull request 34.
- Double tags have been removed from the
config.xml
of theMagento_Tax
module.
- Magento no longer performs redundant tax calculations for every price on category page, which has improved product performance. Fix submitted by JeroenVanLeusden in pull request 15200. GitHub-14941
- Magento now uses the correct table rate shipment when creating a merchant creates an order through the Admin. Previously, when a merchant created an order through the Admin and selected the shipping method table rate, Magento took the shipping rate table from the wrong website ID.
Testing
- Integrations tests no longer throw
Cannot instantiate interface Magento\Framework\Interception\ObjectManager\ConfigInterface
errors. GitHub-12844
- Integration tests now reset the integration test database as expected. GitHub-10025
- A typo in
dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/OnePageCheckoutTest.xml
has been fixed. GitHub-7591
- Static tests now check for the deprecated
each()
function. Fix submitted by Yevhen Sentiabov in pull request 31.
- The
functional.suite.dist.yml
has been updated to handle custom backend names. (This value was previously hard-coded.) Fix submitted by scribam in pull request 12848.
- The
validate_image_info_rollback.php
test suite has been updated. Fix submitted by Harry Mumford-Turner in pull request 12800.
phpunit.xml
is now blacklisted during schema validation static tests, particularlyMagento/Test/Integrity/Xml/SchemaTest.php
.
- The
\Magento\Test\Php\LiveCodeTest::testCodeStyle
method now uses whitelist files. Fix submitted by Adrian Martinez in pull request 11376. GitHub-10559
- Integration test coverage for the new extension point for New Shipment Controller has been added. Fix submitted by Malyovanets Nickolas in pull request 14634. GitHub-788
sjparkinson/static-review
and other obsolete tools (includingdev/tools/Magento/Tools/Layout
,dev/tools/Magento/Tools/StaticReview/pre-commit
, anddev/tools/Magento/Tools/psr/phpcs_precommit_hook.sh
) have been removed from the test code base. Fix submitted by rostyslav-hymon in pull request 14368. GitHub-14138
- Integration tests for product URL rewrite generation have been added. Fix submitted by rostyslav-hymon in pull request 14252.
- The
ProcessCronQueueObserverTest.php
integration test now works correctly. Fix submitted by Eino Keskitalo in pull request 16253. GitHub-16243
setCateroryIds([])
has been corrected tosetCategoryIds([])
throughout the test suites. Fix submitted by Pratik Oza in pull request 16926. GitHub-15590
CreateOrderBackendTest
has been refactored to support the Reorder button when Inventory Management is enabled. Fix submitted by Malyovanets Nickolas in pull request 16006. GitHub-680
- Unit tests have been refactored to no longer check for deleted file
app/code/Magento/Catalog/Model/ResourceModel/Product/Indexer/Eav/AbstractEav.php
. GitHub-11230
CreateCreditMemoEntityTest
has been refactored to support the Inventory Management reservation mechanism. Fix submitted by Malyovanets Nickolas in pull request 16170.
CreateOrderBackendPartOneTest
has been refactored to support the Inventory Management reservation mechanism. Fix submitted by Malyovanets Nickolas in pull request 16153.
Theme
- Customers can now successfully close full-screen zoomed product images displayed on an iPhone 4s, 5s, 6, or 6s with the Safari browser. Previously, if a customer chose full-screen zoom for any product image, he could not close the full-screen zoom.
- The forced setting of
cache_lifetime
tofalse
has been changed to a defaultcache_lifetime
value of 3600 forMagento\Theme\Block\Html\Footer
. GitHub-13595
- The default storefront welcome message now works as expected when the Translate Inline (Stores > Settings > Configuration > Advanced > Developer >) setting is enabled. Fix submitted by Dmytro Paidych in pull request 14177. GitHub-12711
- We’ve improved the display of the Payment Methods section of the checkout page on mobile devices. Previously, the layout of page elements was not correctly spaced. Fix submitted by Marcin Kwiatkowski in pull request 13979. GitHub-13315
Translation and locales
- The
<![CDATA[]]>
statement insystem.xml
now works as expected. Fix submitted by Nickolas Malyovanets in pull request 11679. GitHub-7767
- The JavaScript translation for validation messages now works for customer account pages. Fix submitted by Anton Evers in pull request 10445. GitHub-5820
- Messages on password strength are now translatable. Fix submitted by Anton Evers in pull request 10445. GitHub-5509
- The JavaScript translation regex no longer leads to unexpected results and untranslatable strings. Fix submitted by Anton Evers in pull request 10445. GitHub-7403
- All messages in Customer Account Create are now translatable. Previously, warning messages about password validation appeared in locale language only. Fix submitted by Anton Evers in pull request 10445. GitHub-9967
- We’ve added client-side caching of
js-translation.js
.
- The datepicker date filter on Reports > Products > Ordered now works as expected for administrators working in Australian English locales.
- Magento now supports Malaysian locales. Fix submitted by Oscar Recio in pull request 14305. GitHub-14089
- The string for
moreButtonText
inapp/code/Magento/Swatches/view/frontend/web/js/swatch-renderer.js
can now be translated. Fix submitted by Karla Saaremäe in pull request 16228. GitHub-16079
- Magento now displays the correct price on the product page for storefronts running Japanese locales. Fix submitted by Volodymyr Kublytskyi in pull request 16588. GitHub-11717
- The module responsible for generating the
js-translations.json
file now contains a routine that translates strings in tags. Fix submitted by Pratik Oza in pull request 16892. GitHub-12081
- Magento now displays the correct payment method title on the payments page during checkout in multistore deployments where storeviews implement different locales. GitHub-7582
- The hint provided for the global configuration field on the Admin configuration page has been corrected. GitHub-8958
region_id
is no longer overridden when a customer edits their billing address from a country that requires a value for state to a country where one is not required. GitHub-10317
UI
- Magento no longer sends duplicate delete requests as a result of an unstable Internet connection. Previously, unintentional mass deletion of products sometimes occurred as a result of an unstable Internet connection.
- As you type additional characters into the text field for a product’s custom option, the hint showing the number of characters left before reaching the maximum now decreases as expected.
- Previously missing translation strings have been added to the UI module. Fix submitted by Jeroen Van Leusden in pull request 11440. GitHub-5956
- Administrators who lack access to the CatalogRule module can now perform operations as expected in the Admin cart price rule edit page. Fix submitted by Prince Patel in pull request 16664. GitHub-15009, GitHub-12285
- The UI component configuration XSD file (
ui-configuration.xsd
) now constrains settings so thatabstractSettings
, such as<label>
, can only be placed and read from the top-level<settings>
nodes, while component-specific settings, such as<options>
, can only be placed and read from the appropriate<settings>
descendent of<formElements>
. Fix submitted by Neill Robson in pull request 15161. GitHub-14140
- Users can now press the Esc button on the delete-from-cart confirmation pop-up window without generating a
jQuery
UI error. Previously, when a customer added a product to the shopping cart, then pressed the trash icon to delete it, Magento displayed this confirmation pop-up window, but threw an error when the customer pressed the window’s Esc button. GitHub-14593
- The
font-size
variable has been updated and standardized. Fix submitted by Prince Patel in pull request 16664. GitHub-7399
- We’ve added the
@navigation-level0-item__hover__color
missing variable for mobile and tablet view. Fix submitted by hitesh-wagento in pull request 16796. GitHub-15848
- Footers now behave as expected when displaying Magento on a mobile device. Fix submitted by Malyovanets Nickolas in pull request 17809. GitHub-15118
- The unused totalbar block has been removed from the invoice create and credit memo create layouts. Fix submitted by Danny Verkade in pull request 17414. GitHub-16653, GitHub-16655
- The JavaScript validation rule used to validate AM/PM time settings now works as expected when JavaScript is minified. Fix submitted by Dmytro Cheshun in pull request 17688.GitHub-17648
- The message list component message type now has a message type of success. Previously, this type was always
error
when theparameters
property was specified. Fix submitted by Dmytro Cheshun in pull request 17703. GitHub-17700
- Magento now displays the wishlist icon on the shopping cart page on mobile devices. Previously, Magento cut off the wishlist icon on this page when viewed on a mobile device. Fix submitted by hitesh-wagento in pull request 17911. GitHub-17851
- JavaScript validation rules no longer require validation of fields where completion is not required. Previously, customers could not complete forms unless non-required fields were completed. Fix submitted by Malyovanets Nickolas in pull request 17724.GitHub-16544
- When a user scrolls a page, the datepicker now retains its position relative to other page elements as expected. Fix submitted by hitesh-wagento in pull request 16776. GitHub-7903
- The confirmation modal buttons that Magento displays when a customer sends a product to the trash are now translated as expected. Fix submitted by torhoehn in pull request 17359.GitHub-17193
- The dropdown menu is now positioned as expected under the link on the UI Component listing. Fix submitted by Vishal Gelani in pull request 15746. GitHub-15660
- Magento no longer displays the current date for a product when the
date
attribute is empty. GitHub-9869
- Magento no longer throws a JavaScript error when a user enters a special character (for example,
/
or&
) while adding thestripped-min-length
validation to a UI component. GitHub-9920
- Magento no longer throws an
Uncaught Error: Script error for: trackingCode
error on storefront pages. GitHub-12828
range-word
validation for form fields now works as expected. GitHub-6113
URL rewrites
- Magento now sets the value of
Store_Code
from the current store when this information is included in a URL. Fix submitted by Oscar Recio in pull request 12545. GitHub-12450
- Magento now loads
urlrewrite
router before the Magento base router. Previously, the Magento custom URL rewrite functionality did not work when you added an additional redirection (for example, a custom redirection from/customer/account/create
to another page). Fix submitted by Marc Rodriguez in pull request 11471. GitHub-10231
- Switching store views now works as expected. Previously, under some conditions, users were redirected to a 404 page.GitHub-5416
- You can now reset a form by clicking Reset in Marketing > SEO & Search > URL Rewrites. GitHub-10459
- Categories of the Main menu in the different store view are now updated when Varnish is enabled.
- Magento no longer throws a 404 error when a customer navigates from the Catalog page of the default store to a custom Catalog page on a different store.
- The Reset button no longer causes a JavaScript error on the URL rewrite creation page. GitHub-10462
- The Magento URL rewrite functionality now supports the use of special characters in category names. Previously, the category tree did not load if a category name contained a special character. Fix submitted by Vinay Shah in pull request 13402. GitHub-13296
Visual Merchandiser
- Visual Merchandiser now includes website scope when displaying the correct prices and availability of configurable products.
- We’ve improved the performance of editing or saving products in large categories (more than 18,000 products per category).
Web API
- When you use REST to update an existing product, Magento assigns the update only to the websites that they were assigned to before the update. Previously, updating a product using the REST API (
PUT /rest/all/V1/products/example_sku
) assigned the product update to all websites automatically. Fix submitted by adrian-martinez-interactiv4 in pull request 11443. GitHub-11324
- When you create a credit memo comment with
POST /V1/creditmemo/:id/comments
, Magento now sends credit memo update emails as expected. Previously, Magento did not send this email, and no other transaction emails were sent to the customer.
- Magento no longer creates duplicate shipments for orders created via API. Previously, Magento created duplicate shipments when a merchant created a shipment via the API under certain conditions (mainly with bundled products).
- Product searches using
GET V1/products
returnextension_attributes
for configurable products as expected.
- You can now include custom attributes when filtering the responses of REST calls.
- Magento now returns a 404 error and includes a descriptive error message when a REST search is performed on a non-existent cart.
- Magento now includes the filter groups and the sort order of the
$searchCriteria
parameter in thesearchCriteria
object that is provided for the EAV set repository. GitHub-11022
- Updating a product with the REST API (
PUT /rest/all/V1/products/example_sku
) no longer assigns the product to all websites automatically. (Automatic assignment to all websites now occurs only when you create the product in All Store Views scope.) GitHub-11324
- A generated Admin API token no longer expires immediately. Previously, when you created a token for an administrative user and have set Admin Token Lifetime (hours)) to empty, Magento denied access because the token immediately expired. Fix submitted by Vijay Golani in pull request 15564. GitHub-15564
- Magento now checks for the uniqueness of attribute option values for attributes created via REST. GitHub-8846
salesRefundInvoiceV1
now saves the invoice ID as expected for a credit memo. GitHub-11669
Wishlist
- Magento now displays an error message if you try to add products to a wishlist without first logging in. Fix submitted by Pieter Cappelle in pull request 12681.
- Magento now stores product IDs and SKUs to locally stored customer data for wishlists. Fix submitted by James Halsall in pull request 12896.
SearchCriteriaBuilder
now has a check to determine if sort order should be applied. Previously,SearchCriteriaBuilder
built the wrong criteria (ORDER BY part
). Fix submitted by Nickolas Malyovanets. GitHub-5738
- Registered users can now create new wishlists as expected when multiple wishlists are enabled. Previously, Magento displayed an error.
- Magento no longer changes the grid view to list view on the product list page when a customer adds a product from the wishlist section to the cart, and now displays the appropriate success message.
Known issues
Known issue: After installing a module and running setup:upgrade
, you must run cache:clean config
.
Known issue: When installing or upgrading Magento and upgrading PHP to 7.2, you must specify an encryption key value of 32 symbols (256 bits) or Magento will throw an error, and any sensitive, unsaved configuration data will be lost. When upgrading Magento and upgrading PHP to 7.2, make sure that your encryption key is exactly 32 symbols. To do this, navigate to System > Other Settings > Manage Encryption Key and either enter a new key or generate a new one. To change the key, make sure that app/etc/env.php
is writable.
Known issue: Magento throws the following error when you try to use the API to create two products with the same name without specifying the URL key: URL key for specified store already exists.
However, when you try to create these products through the Admin, Magento does not throw an error, but instead appends a number to the converted URL key if two products have the same name.
Known issue: Currently, ElasticSearch is supported only in Single Source mode for the Default Source. It is not supported in Multi Source mode with custom sources.
Known issue: For Inventory Management, Single Source merchants may experience performance degradation with all products assigned to the Default Source and Default Stock. As a workaround for best performance, we recommend creating and assigning all products to one custom source and stock. This will affect bundled products support. To continue with bundled products, continue using Default Source and Stock in Single Source mode. We plan to have a resolution and bundled product multi-sourcing support in a later release. This does not affect Multi Source merchants. For details, see Inventory Management.
Known issue: For B2B merchants, please assign products to the Default Source and Default Stock for complete support. We will provide complete B2B support in a later release.
Known issue: The bin/magento setup:install — convert-old-scripts
command, which is used to create declarative schema files, has the following limitations. These limitations will be addressed in a future release:
-
Only tables and columns are currently supported.
-
Renaming of tables is not supported.
Known 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.
System requirements
Our technology stack is built on PHP and MySQL. For details, see Technology stack requirements
For more information, see System Requirements.
Installation and upgrade instructions
You can install Magento Commerce 2.3.0 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.