Magento Commerce 2.2.4 Release Notes
Patch code and release notes published on May 2, 2018. Release notes revised on July 1, 2018.
We are pleased to present Magento Commerce 2.2.4. This release includes new tools and numerous functional fixes and enhancements, plus a substantial number of contributions from the wider Magento community.
Look for the following highlights in this release:
Significant new bundled extensions that add instant and accurate tax and shipping calculations right from the cart:
Amazon Pay provides a trusted, familiar way for customers to check in and check out. See Amazon pay for a full description of the advantages this solution offers merchants and their customers.
Klarna Payments is a new payment method. With Klarna Payments, merchants can provide customers with the option to pay now, pay later, or pay by installment for their purchases. See Magento User Guide for information on using Klarna with Magento. For more information on Klarna products, see Klarna Payments.
Numerous fixes and enhancements to the Magento Shipping and dotmailer bundled extensions. Merchants can now use dotmailer to create their own transactional email templates. Magento Shipping capabilities have been expanded, too.
Fixes and enhancements to core features, including performance improvements that enable faster shopping with image loading and search performance enhancements.
Almost 200 community contributions. These community contributions include performance-tuning enhancements plus at least 80 engineering fixes.
This section describes changes in this release that are not full-fledged features or bug fixes, but that add noticeable improvements to product performance or ease-of-use.
- The admin global search is now translatable, extensible, and takes into account the ACL settings for the current user. See Using global search for more information. Fix submitted by Roman K. in pull request 1167. GitHub-7698
- The multi-shipping checkout flow now supports the CyberSource payment method. This payment method is supported by Magento Commerce only. 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.
- Magento has an automated checker to enforce the short array syntax convention that we are now enforcing in new code. This standard complies with all requirements of PSR-2. Fix submitted by Nickolas Malyovanets in pull request 12499.
- Magento now provides dedicated payment and shipping debug log files to store information specific to those functional areas.
- The Emogrifier dependency has been upgraded to 2.0.0 or later. Fix submitted by Oliver Klee in pull request 13132.
- We’ve replaced
is_nullwith strict comparison only for models and block in the following modules:
EAV. Fixes submitted by Alexander Shkurko in pull requests 13171, 13170, 1163.
The dotmailer bundled extension features the following enhancements for this release:
The new Abandoned Cart report table
The ability for merchants to design their own transactional email template
Enhancement of syncs of subscriber’s sales data. Sales data is now synced only if the sales data option is enabled in config.
The ability to set transactional email at the Store level
Enhanced validation for deletion of cron job CSV files
Note: The following known issue has been resolved in Magento Commerce and Open Source 2.2.5. We recommend that all users of 2.2.4 upgrade to 2.2.5 at their earliest convenience. If you are unable to upgrade to 2.2.5, Patch MAGETWO-92926 provides a fix for this issue.
Customers have reported the following behavior after upgrading to Magento 2.2.4 in deployments that span multiple websites:
Magento multi-store installations do not use the store view-specific values from the store configuration settings if these settings have different values than the global default configuration settings. Instead, Magento uses the default configuration for all store views. GitHub-15205, GitHub-15245
We do not recommend upgrading to Magento 2.2.4 if you deploy across multiple websites. Note that this problem is not triggered if you have only a single website with multiple stores or store views.
Installation, setup, and deployment
backupcommand now works as expected. Fix submitted by Jagriti Joshi in pull request 13066. GitHub-12877
- Links to Magento installation documentation in
setup/view/magento/readiness-check/progress.htmlare now correct. Fix submitted by Jonas Hünig in pull request 12857.
- You can now use the
app:config:statuscommand to check whether configuration propagation is up-to-date. Fix submitted by Juan Alonso in pull request 12441.
bin/magento setup:rollback -d filename.sqlcommand now works as expected. Previously, this database rollback operation failed on certain versions of Magento (for example, 2.1.9). Fix submitted by Roman K. in pull request 12108. GitHub-12064
- You can now set API access to integrations for Admin roles, which gives privileged users the ability to grant limited access to users such as third-party integrators. GitHub-9684
- You can now enable or disable the Magento Profiler from the command line. GitHub-9277
- The icons for Extension Manager and Module Manager are now consistent with the main content area and left-hand menu of the Web Setup Wizard. Fix submitted by Danny Verkade in pull request 11388. GitHub-11236
- Magento now continues operating in maintenance mode if it was previously enabled. Previously, Magento disabled maintenance mode when you used one of these commands:
- You can specify a custom version for static files being deployed, and now nginx sample config files can match these custom versions, too. Fix submitted by Scott Buchanan in pull request 12521.
CrontabManager.phpfile has been updated as follows: If
crontabhas already been populated, the
bin/magento cron:installcommand adds
#~ MAGENTO STARTand the rest of code directly to the last row of crontab without any spaces. Fix submitted by Michele Fantetti in pull request.
ext-bcmathPHP extension is now required in Open Source. Previously, it was required for Commerce only. Fix submitted by Mobecls in pull request 12768.
cache_lifetimedefault setting for the
Magento\Theme\Block\Html\Footerblock is no longer set to false, and the new default setting is 3600. Fix submitted by zolat in pull request 13762.
bin/magento maintenance:allow-ipscommand now has the
--addflag, which appends a new IP address to the list of allowed IP addresses. Previously, when you added a new IP address, you had to copy the existing addresses. Fix submitted by Barry vd. Heuvel in pull request 13586.
config:setcommand now has a
lock-configoption, and configuration values are always stored in
app/etc/env.php. Fix submitted by Andreas von Studnitz in pull request 13280.
- In the
redirect_to_basefield are now configured so that the
showInStoreattributes are set to
1. Fix submitted by Jeroen in pull request 13614.
- You can now deploy static content on demand while in production mode.
- The output of the
Magento maintenance:statuscommand no longer inserts a comma in between IP addresses, making it easier to copy and paste the values. Fix submitted by Barry vd. Heuvel in pull request 13587.
DeploymentConfigreader now always returns an array. Fix submitted by Barry vd. Heuvel in pull request 13584.
- Magento has improved how it manages the size of the
- Magento now includes a helper object to facilitate access to styling objects in the Symfony console. Fix submitted by Wesley Guthrie in pull request 11504.
- Magento no longer throws an error when you try to generate a URN catalog for an empty
misc.xmlfile. Fix submitted by Timon de Groot in pull request 11686. GitHub-5188
removecommands now have
no-updateoptions. Fix submitted by Fabian Schmengler in pull request 12359.
- The currencies dropdown menu that is available during the setup process (step 4 – customize your store) no longer displays unallowed currencies. Fix submitted by Ricardo Martins in pull request 13770.
- Save operations now work as expected for bundle products. Fix submitted by dzianis-yurevich in pull request 12734. GitHub-6916
- You can now duplicate a bundle product without stripping the original bundle product of its options. Fix submitted by MattUnity in pull request 1217.
- Magento now successfully updates a product’s
extension_attributeparameter for a product previously created using REST. Fix submitted by nuzil in pull request 13494.
- When two customers check out concurrently for the same product, one of the checkouts now succeeds. Previously, when two customers checked out concurrently for the same product, and the total quantity being ordered is greater than the quantity available, the stock could become negative. Fix submitted by Myroslav Dobra in pull request 2133.
Magento\Catalog\Model\Product\Attribu…no longer returns image URLs with unexpected double slashes. Fix submitted by Igor Tregub in pull request 13498.
- 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.
- The category filter used for layered navigation for configurable products with no available options now counts products accurately.
- When you set the
category_idsattribute to be visible in the storefront catalog, Magento now displays catalog listings as expected. Previously, Magento threw an exception. Fix submitted by Manu Gonzalez Rodriguez in pull request 11389. GitHub-11341
- Product display issues within categories that have been filtered by price have been resolved: Products are no longer repeated within a category, and random products are no longer included. Fix submitted by Mayank Zalavadia in pull request 11429. GitHub-11139
- 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.) Fix submitted by adrian-martinez-interactiv4 in pull request 11444. GitHub-11324
- 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 11617. GitHub-6770
- You can now successfully remove a toolbar from a product listing page. Previously, you could explicitly remove the toolbar from layout configuration, but Magento would return
product_list_toolbarto the layout. Fix submitted by Marius in pull request 11473. GitHub-9413
getAttributeText($attributeCode)method now returns string values as expected. Previously, this method returned an array of attribute values. Fix submitted by p-bystritsky in pull request 12003.
- You can now add customizable options to a product. Previously, when you tried to add a custom option to the product, Magento threw this error:
A 'Uncaught TypeError: Cannot read property 'apply' of undefined' error. Fix submitted by Roman K. in pull request 11965. GitHub-11792
- Magento now correctly decodes single quotation marks in the Admin attribute option input fields. Fix submitted by Erfan in pull request 12133. GitHub-12127
- You can now save emojis in custom product options. Fix submitted by Carlos Lizaga in pull request 12253.
- Magento no longer displays unused product attributes with a value of N/A or NO on the storefront. Fix submitted by p-bystritsky in pull request 12057. GitHub-6634, GitHub-9961
delayparameter now works as expected, which permits you to set the delay on the JQuery widget opening or closing. Previously, this parameter was documented, but did not work as expected. Fix submitted by Sam Carr in pull request 12161.
- Third-party category images now have
typeproperties. Fix submitted by Vova Yatsyuk in pull request 12161.
- Category page X-Magento-Tags headers no longer contain product cache identities when category display mode is set to Static block only. Fix submitted by Atish Goswami in pull request 12466.
- You can now delete rows in the
dynamicRowscomponent. Fix submitted by Roman K. in pull request 921. GitHub-8830
- You can now add a new product with custom attributes that have the same name and attributes as a previously deleted product. Previously, Magento did not let you add this new product because a
request_pathwith the same value already existed in
table url_rewritefrom the previous product. Fix submitted by Nickolas Malyovanets in pull request 12167. GitHub-12110
og:typemeta tag content value has been corrected from
<meta property="og:type" content="og:product" />to
<meta property="og:type" content="product" />. Fix submitted by Atish Goswami in pull request 12530.
- The Product Image Watermark Size Validation message has been revised for accuracy. Fix submitted by Nickolas Malyovanets in pull request 985. GitHub-12613
- Magento no longer creates an extraneous new product when you save an existing product whose SKU you’ve changed. Fix submitted by Nickolas Malyovanets in pull request 984. GitHub-12535
- cURL requests to delete a product’s tier pricing when used on store code all now works as expected. Previously, this cURL request deleted the tier pricing but also all the image selections for the product. Fix submitted by Nickolas Malyovanets in pull request 977. GitHub-10797
- Sort by Price now works as expected on the catalog search page. Fix submitted by Roman K. in pull request 929. GitHub-12468
- If an error occurs when you run
catalog:images:resize, Magento now includes an entry into the log file. Previously, Magento displayed an error message, but did not add an entry into any log files. Fix submitted by Roman K. in pull request 1000. GitHub-8204
- You can now duplicate and save a product successfully. Previously, you could not successfully duplicate a product, and Magento displayed this message:
Notice: Undefined offset: 0 in /home/software/public_html/vendor/magento/module-catalog/Model/Category/Link/SaveHandler.php on line 124. Fix submitted by p-bystritsky in pull request 983. GitHub-12259
- The REST API now saves all product properties as expected. Previously, Magento did not save the price and weight, and these attributes were not returned in the result of the POST request. Fix submitted by Nickolas Malyovanets in pull request 1018. GitHub-6486
hasDataChangesattribute for loaded EAV collection items now returns
falseas expected. Previously, this attribute always returned
true. Fix submitted by virtual97 in pull request 12736. GitHub-12374
ajax:addToCartnow contains the
eventDataparameter, with variables for SKU and quantity. Fix submitted by Renon Stewart in pull request 12875.
- You can now successfully save a new option for a product custom attribute when the value of Admin scope is empty. Previously, Magento threw an exception. Fix submitted by virtual97 in pull request 12755.
- You can now sort product collections by the
is_saleableattribute. Fix submitted by Nickolas Malyovanets in pull request 1045. GitHub-7768
- We’ve added a failsafe to the
items.phtmlfile. Fix submitted by Sam Granger in pull request 13086.
- You can now save a product with customizable options. Previously, if you were trying to add a customizable option (for example, a customer group) to a product, Magento did not let you save the product, the form did not close, and a validation issue was triggered. Fix submitted by LuisMi in pull request 12048. GitHub-11528
- Magento now correctly displays stock status for products. Fix submitted by Roman K. in pull request 955.
- Visual Merchandiser now includes website scope when displaying the correct prices and availability of configurable products.
- The catalog product list widget now works with multiple SKUs. Previously, Magento displayed this error,
We're sorry, an error has occurred while generating this email. Fix submitted by Nickolas Malyovanets in pull request 1050. GitHub-11897
- Magento now loads type-dependent layout handles before more specific ID/SKU layout handles. Previously, when Magento updated a product page layout for a specific ID with
catalog_product_view_id_<product_ID>.xml, some changes were overwritten by a less specific
catalog_product_view_type_<product_type>.xml. Fix submitted by Andreas Schrammel in pull request 12807.
- Unused temporary variables have been removed from
Adminhtml/Category/Save.html. Fix submitted by Pierre Martin in pull request 13663.
- Language switching now works as expected on the Catalog and Product pages. Previously, language switching did not work on these pages in production mode. Fix submitted by p-bystritsky in pull request 1143. GitHub-11963
- The subcategory URL path is now updated for a store view according to the URL path of its parent category.
- In cases where
imagebuildermakes multiple calls, it no longer re-uses attributes from the first call if attributes from a second call are empty. Previously,
imagebuilderre-used the attributes from the first call, which lead to unexpected results in storefront image display. Fix submitted by Ihor Sviziev in pull request 13438.
updateCart.phtmlnow uses dynamic rather than hardcoded validators. Fix submitted by Gil Greenberg in pull request 13462.
- An unused constructor dependency has been removed from the Product Link Save handler. Fix submitted by Ihor Sviziev in pull request 13436.
- A database backup created by
setup:backup --dband restored with
setup:rollback -dnow includes triggers as expected. Previously, the restored database did not include triggers, which meant that indexes could not work correctly. Fix submitted by Denis Ristic in pull request 11369. GitHub-9036
- 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. Fix submitted by gwharton in pull request 13682. GitHub-10595
- We’ve improved the visibility of products when displayed by category, and you can now filter by status. Fix submitted by Peter Jaap Blaakmeer in pull request 12564.
- Magento now correctly sets a
product_linksposition 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.
- We’re resolved issues with product creation that occurred on installations of Magento Commerce with B2B installed and Update by Schedule indexer mode set.
Cart and checkout
- Magento no longer adds addresses with
saveInAddressBookset to 0 to the address book for new customers. Previously, if you placed an order as a guest and set the
save_in_address_booksetting for an address to 0, Magento still copied that address to the customer address book when registering as a new customer on the checkout success page. GitHub-7691
- 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.
- 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, Your credit card will be charged for. Fix submitted by Roman K. in pull request 993. GitHub-12526
- Street format spacing when multiple streets are present is now consistent across Shipping and Review & Payments checkout steps. Fix submitted by nfourteen in pull request 13082.
- 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 Serhii in pull request 1146. GitHub-12231
- When you check out as a guest and click Create an account on the success page, you can now click on the customer name to jump to the customer record. Fix submitted by Renon Stewart in pull request 12998.
XML_PATH_CUSTOMER_MUST_BE_LOGGEDconstant has been deprecated. Fix submitted by Roman K. in pull request 1148. GitHub-7848
dropdownDialogis now required when the mini cart is available. Fix submitted by Alexander Menk in pull request 13830.
- The Check Out with Multiple Addresses page now displays an empty state field as expected when a customer changes from one address to another. Fix submitted by enriquei4 in pull request 13364. GitHub-8621
- You can now use custom price symbols when assigning prices to configurable prices. Previously, Magento did not properly display prices for configurable products when you used a custom price symbol when assigning prices. Fix submitted by pradeep-wagento in pull request 13025. GitHub-12430
- Magento now reorders configurable attribute options as expected on the product page. Fix submitted by wardcapp in pull request 12963. GitHub-7441
- Magento now displays elements of the Catalog > Products > Create Configurations page correctly. Previously, the currency symbol overlapped with the attribute option’s price during the creation of a configurable product. Fix submitted by Vasilina in a pull request.
- If you enter an invalid value for an SKU during the creation of the configurable product, Magento now displays a warning and does not let you save the product. Previously, you were not warned about invalid SKU values, and when you clicked Save, all the product information you entered was lost. Fix submitted by Zamaroka in pull request 12737. GitHub-11953
- Magento now correctly runs a partial attribute (EAV) reindex of configurable products whose child products’ visibility is set to Not Visible Individually. Fix submitted by Roman K. in pull request 1023. GitHub-12667
- Magento now displays the ID and
Visibilityparameter of child products when you use the
LinkManagementInterfaceservice contract to retrieve the ID and visibility of these products. Previously, Magento displayed NULL. Fix submitted by Nickolas Malyovanets in pull request 986.
- The product price indexer (
catalog_product_price reindex) no longer stalls during reindexing.
- Product records inside the
catalog_product_super_linktable are no longer updated needlessly when you save a configurable product. Previously, saving configurable product erased and then reinserted records in the
catalog_product_super_linktable even when child products were not changed. This practice quickly resulted in an unnecessarily large
catalog_product_super_linktable, especially in multi-website installations.
- 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 fixed the invalid parameter configuration that was provided for the
Magento\\Ui\\Component\\HtmlContent. Fix submitted by Tomasz Gregorczyk in pull request 12964.
- Magento now successfully sends an email (with content) even when you make a mistake in the email template file name. Previously, when the template name was incorrect, Magento sent the email with no content. Fix submitted by Roman K. in pull request 970. GitHub-8437
- You can now import customer addresses from websites with country restrictions.
- Magento no longer displays the
Too many passwords reset requestserror when the max wait time between password resets setting has been disabled. Previously, when you attempted to reset a customer’s password through the Admin, Magento threw an error even when you disabled the
max wait time between password resetssetting in the store configuration settings. Fix submitted by Cole Hafner in a pull request. GitHub-11409
- Magento no longer throws an exception when you try to open your account address book immediately after creating a customer. Fix submitted by Chris Pook in pull request 12220. GitHub-12180
isConfirmationRequiredmethod in the
AccountManagementclass is now public, which makes it available for plugins. (For example, you can now develop custom business logic to decide if confirmation is required (yes/no) for certain customers.) Fix submitted by Derrick Heesbeen in pull request 11878.
- When configuring a customer account, you can now leave the prefix or suffix fields as optional. Previously, if you did not select an option for these fields, Magento defaulted to selecting the first option in the list. Fix submitted by Andreas von Studnitz in pull request 11462. GitHub-7241
- The storefront Back to Sign in button now works as expected. Previously, when you clicked that button, Magento simply reloaded the current page. Fix submitted by StasKozar in pull request 12759. GitHub-12715
window.checkout.customerLoginUrlnow contains a URL that includes the referrer in base64 encoding (for example, https://myShop.com/customer/account/login/referrer/aHR0cHM6Ly9teXNob3AuY29tL2NoZWNrb3V0). Previously, the login URL did not include a referrer (for example, https://myShop.com/customer/account/login). Fix submitted by Tommy Quissens in pull request 12630. GitHub-12627
- When you are on the cart page and click a product’s Edit link, the product page now correctly displays the product quantity currently in the cart. Fix submitted by Arnoud Beekman in pull request 13310.
- You can now create a custom attribute of type file for Customer objects as expected. Previously, you could create the custom attribute, but the file would not upload. Fix submitted by Mkennethsmith in pull request 13563. GitHub-11252
- The event
customer_address_after_save_viv_observeris now spelled correctly in the Customer
events.xmlfile. Fix submitted by Renon Stewart in pull request 13661.
is_subscribedextended parameter is now returned when a web API is used to modify or return information about a customer.
top destinationsconfiguration field is now configurable on a store level. Previously, it was configurable on the global level only. Fix submitted by Andreas von Studnitz in pull request 13052.
- When multiple validation errors occur while saving a customer address, Magento now shows unique messages in the
adminhtmlcustomer edit page. Fix submitted by adrian-martinez-interactiv4 in pull request 12922.
- The scrollbar on the Admin store switcher is now scrollable on machines running OSX. Fix submitted by Juan Alonso in pull request 12931.
\Magento\Directory\Model\PriceCurrency::format()method no longer fails if you do not configure a conversion rate from the base to the specified currency. Previously, if you did not specify this conversion rate, Magento rendered the price (amount) in the base currency, not the specified currency. Fix submitted by Nickolas Malyovanets in pull request 1022. GitHub-6965
- 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. GitHub-12378
- You can now disable the State is Required for field. Fix submitted by Burlacu Vasilii in pull request 12917. GitHub-12894
- You can now use a single query to retrieve attribute groups from multiple attribute sets. Fix submitted by Marius Strajeru in pull request 12105. GitHub-11936
- Magento now saves multi-select attributes for a product that has a related product using another attribute set. Previously, multi-select attribute values were not saved for a product in the Admin panel when it had a related product that used another attribute set. Fix submitted by awarche in pull request 12767.
- The product attribute repository save method no longer resets the source model to null when you create a new product attribute through code. Fix submitted by Nickolas Malyovanets in pull request 1012. GitHub-10814
- Magento now uses the correct
table eav_entity_typefor invoices (
Magento\Sales\Model\ResourceModel\Order\Invoice). Previously, in
entity_type_code = "invoice"the
Magento\Sales\Model\ResourceModel\Order. Fix submitted by Nickolas Malyovanets in pull request 980. GitHub-10123
- When a validation message is returned, Magento no longer displays the attribute code (
$attrCode), but instead returns the label (
$label). This change makes it easier to translate messages. Fix submitted by Hewerson Freitas in pull request 12120.
- You can now perform a mass update on products that have more than 60 attributes.
Magento\Eav\Model\Config::getAttributenow stops the Profiler before it returns Profiler runtime. Previously,
Magento\Eav\Model\Config::getAttributedid not stop the Profiler from returning early and consequently reported incorrect runtime. Fix submitted by Nick Anstee in pull request 12810.
beforeSavemethod encodes an attribute value only when it has not yet been encoded. Previously, the JSON-encoded attribute value was loaded correctly, but when you saved a product multiple times, the attribute value was also encoded multiple times. Consequently, Magento did save the product and displayed this error, Unable to unserialize value. Fix submitted by Tibor Kotosz in pull request 13551.
- The deprecated
each()function has been removed from the code. Fix submitted by Ihor Sviziev in a pull request.
- Order confirmation emails from the Admin in multistore environments no longer default to the primary store, but instead are sent from the store that the customer used. Fix submitted by Roman K. in pull request. GitHub-11740
- Magento no longer sends misleading feedback when sending tracking information email. Previously, instead of sending a notice that a shipment was underway, this response was sent, You sent the shipment. Fix submitted by Nickolas Malyovanets in pull request 1245. GitHub-5697
- 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'. Fix submitted by Etty in pull request 12752. GitHub-4292
vendor/magento/framework/composer.jsonnow declares a dependency on
magento/zendframework1. Previously, packages depending on
magento/frameworkpackages failed to execute. Fix submitted by Ihor Sviziev in pull request 12990. GitHub-12967
filePutContents('file.txt')now contains content as expected. Previously, Magento threw this error,
The specified "file.text" file could not be written*. Fix submitted by Nickolas Malyovanets in pull request 962. GitHub-7467
- You can now subscribe to events that contain a number in their name. Fix submitted by Mobecls in pull request 12758. GitHub-5035
- PhpDoc now shows correct parameter types. Previously, PhpDoc showed only a type of
arraywas also a valid parameter type. Fix submitted by Freek Vandeursen in pull request 12826.
- Content no longer jumps when pages are reloaded on the Admin because
notices-wrappernow has a
min-heightsetting. Fix submitted by Anna Völkl in pull request 12985.
- We’ve corrected a typo in the
Magento\Ui\Controller\Adminhtml\Index\Renderaction. Fix submitted by Nick in pull request 12951.
PHPSESSIDnow have the same expiration time. Previously, the
X-Magento-Varycookie had an expiration of
session, which meant it was not considered expired until the browser was closed. In contrast, the
PHPSESSIDcookie had a finite expiration time (not
session). At times, this resulted in Magento caching the wrong page for the logged-in user.
\Magento\Config\Model\Config\Structure\Reader::processingDocumentnow throws a more helpful validation exception. Fix submitted by Patrick McLain in pull request 12859.
- Creating an observer that uses
ObserverInterfaceno longer triggers a patch-level dependency on
magento/framework. Fix submitted by Kristof in pull request 13759.
- RewriteBase directive has been added to the
pub/staticto support the potential installation of Magento code under a directory inside the web root. Fix submitted by Cristiano Casciotti in pull request 13678.
- The doc block of the
walkmethod in a collection now correctly describes that the method accepts a string or array. Fix submitted by ByteCreation in pull request 13373.
- The report processor now returns an HTTP 500 status code (which better communicates the need for user action) instead of a 503 status code. Fix submitted by Andrew Howden in pull request 11513. GitHub-11512
- 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
expectException()calls now accept two parameters (instead of one). Fix submitted by Fabian Schmengler in pull request 11099. GitHub-11059
Magento\Framework\Reflection\NameFinder) now provides a more helpful exception message. Fix submitted by Roman K. in pull request 12303. GitHub-9764
- You can now alter the transport variable in the
email_invoice_set_template_vars_beforeevent. Fix submitted by Roman K. in pull request 12132. GitHub-10210
- Validation of South Korean zip codes now supports current South Korean zip code format. Fix submitted by Roman K. in pull request 903. GitHub-9515
- Scope-based configuration now decrypts data as expected. Previously, scope-based configuration failed to decrypt data on the default store only. Fix submitted by DubovykOleksandr in pull request 8591.
dependsfield now works for fields of type
system.xml. Fix submitted by Javier Villanueva in pull request 11539.
- Magento now sorts fields and amounts as expected when you extend a dynamic-row element in a
ui_componentand add a sort order attribute with an amount that falls between the other elements’ amount. Fix submitted by Harald Deiser in pull request 11846.
- The Setup Wizard page now loads successfully when the session storage method is Memcache. Previously, Magento returned an HTTP 500 error when you navigated to System > Tools > Web Setup Wizard Setup Wizard in installations where you’ve configured the session storage method to Memcache in
env.php. Fix submitted by Marty S in pull request 11608. GitHub-9633
- 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. Fix submitted by Oscar Recio in pull request 12038. GitHub-11825
- Anonymous calls using REST no longer trigger the creation of PHP sessions. Fix submitted by Serhii in pull request 1247. GitHub-7213
Web API framework
- A user who has been denied permissions for negotiable quote editing can now create customer addresses.
- Swagger now works as expected on instances of Magento that are running on non-standard ports. Fix submitted by Jeroen in pull request 12541.
- You can now set attribute values to empty strings using REST. Previously, Magento would not let you use REST to pass the following attributes with empty values:
special_price. Fix submitted by Roman K. in pull request 916. GitHub-8862
- We’ve updated the
webapimodule to improve the order of how arguments are merged in multiple
di.xmlfiles. Fix submitted by Serhii in pull request 995. GitHub-8647
SearchCriteriaBuildernow has a check to determine if sort order should be applied. Previously,
SearchCriteriaBuilderbuilt wrong criteria (
ORDER BY part). Fix submitted by Nickolas Malyovanets in pull request 1003. GitHub-5738
- Anonymous Web API access to the Admin now unlocks REST catalog calls without requiring
authtokens. Fix submitted by Roman K. in pull request 904. GitHub-9468
vendor/magento/framework/composer.jsonnow declares a dependency on
magento/zendframework1. Previously, packages depending on
magento/frameworkpackages failed to execute. Fix submitted by Ihor Sviziev in pull request 12990.
- A customer can now successfully log out of a session and then immediately log back in. Previously, if a customer logged out and then attempted to log in without the logout success page first completing its timeout, Magento displayed the logout page. Fix submitted by Vinay Shah in pull request 13040.
- Magento now displays notification messages for only the expected duration. Previously, Magento displayed these messages indefinitely within a session. Fix submitted by p-bystritsky in pull request 1111. GitHub-11527
- Sorting by product name now works as expected when filters are applied. Fix submitted by p-bystritsky in pull request 1192. GitHub-12860
- We’ve removed the
Magento\ProductAlert\Controller\Add\TestObserverclass. Fix submitted by Alexander Shkurko in pull request 13174.
- In the top-level README file in the Magento Open Source repository, all links to DevDocs have been updated to 2.2. Fix submitted by Bhargav Mehta in pull request 13161.
- Elements within an array in
store_websitetable are now correctly formatted. Fix submitted by Nolwennig Guilbert in pull request 13324.
- A type error in
CartTotalRepositoryhas been resolved. Previously,
CartTotalRepositorycould not handle extension attributes in quote addresses, and Magento threw a
PHP Fatal error: Uncaught TypeError. Fix submitted by p-bystritsky in pull request 12993. GitHub-12993, GitHub-12819
- The WYSIWYG editor image insertion process now takes into account the static URLs configuration value (configuration setting
cms/wysiwyg/use_static_urls_in_catalog). Fix submitted by Nickolas Malyovanets in pull request 1215. GitHub-12147
<![CDATA]>statement in the
system.xmlfile now works as expected. Previously, when you entered an XML layout update with CDATA for the first time, it worked as expected. After you saved the file, however, the
CDATAtag disappeared. Fix submitted by Serhii in pull request 1163. GitHub-12322
- Magento now strips out unnecessary whitespace in the attribute value IDs used on the review form. Previously, rating titles with whitespace resulted in broken ID attributes. Fix submitted by Nickolas Malyovanets in pull request 1119. GitHub-5451
- The header label Price in the invoice PDF is now correctly aligned with the invoice item’s price. Fix submitted by Serhii in pull request 1216. GitHub-8453
- Google Analytics
pageviewis no longer triggered twice. Fix submitted by Bhargav Mehta in pull request 13034. GitHub-12221
- Minor display issues on the Magento home product page have been resolved. Fix submitted by Punit Vaswani in pull request 13081. GitHub-11796
- The copyright year has been updated to 2018. Fix submitted by Bhargav Mehta in pull request 13027.
- 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 13026. GitHub-12601
Learn More Linkwidget option in the Recently Viewed Products widget now respects its setting. Fix submitted by Jeroen in pull request 12946.
- An unused
ifstatement in the order invoice
Save.phphas been removed. Fix submitted by Jeroen in pull request 12887.
sidvariable no longer appears in the storefront URL even if it has been disabled in the Admin. Previously, even when the Magento setting General > Web > Session Validation Settings > Use SID on Storefront was set to No, the
sidvariable no longer appears in the URL. Fix submitted by Roman Strelenko in pull request 12743. GitHub-9453
- The menu item handling has been refactored to read item data from two different sources:
- A typo in the
SINGLE_PRODUCT_LAYOUT_HANLDEconstant has been fixed. Fix submitted by Andreas Schrammel in pull request 12786.
- The tracking link no longer returns a 404 error in the Admin. Fix submitted by Ihor Sviziev in pull request. GitHub-12206
- The product option value price calculation has been improved. Previously, tier prices and customs options were not calculated correctly. Fix submitted by Marina Gociu in pull request 11563. GitHub-5774
- White space that is prepended to a coupon code no longer causes an error. Previously, Magento did not apply the coupon and displayed this message:
Coupon code is not valid. Fix submitted by Roman K. in pull request 1021. GitHub-12656
- The modified date field on editing pages is now updated as expected. Fix submitted by Oscar Recio in pull request. GitHub-12625
- Links to Magento Connect on the Partners and Extensions page have been removed and replaced with links to Magento Marketplace. Fix submitted by Miguel Balparda in pull request 12633. GitHub-12632
- HTML tags have been removed from the display of attribute names in the dropdown menu of the Catalog Product list. Fix submitted by Nickolas Malyovanets in pull request 968. GitHub-8011
- 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.
- Magento now displays information 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 wrongin the response body, and did not display a message.
- The credit card form is now available when you create an order from the Admin, even when only one payment method is enabled. Previously, when only one payment method was enabled, the Admin did not render this form.
- Full Page Cache is no longer invalidated after you save a predictor category. Previously, all product-related cache data was invalidated, when only a narrow subset of cache tags associated with the
product_idshould have been.
- Magento now displays a more meaningful error message when a module name is misspelled in a unit test. Fix submitted by Nickolas Malyovanets in pull request 13740.
- Magento now displays a more meaningful error message when a module name is misspelled in
registration.php. Fix submitted by Jānis Elmeris in pull request 12843.
- In the line
Perform login specific actionin
loginhas been replaced with
logout. Fix submitted by David Angel in pull request 13679.
- The incorrect field value in the joined
variable_valuetable has been replaced with two values:
html_value. Fix submitted by Maksymilian Szydło in pull request 13596.
Magento/Rma/Block/Adminhtml/Rma/Edit/Item/Form/Element/Booleanis a new block element that allows rendering ability for the Boolean RMA attributes on the Admin.
- Duplicate array keys in
app/code/Magento/Downloadable/Helper/File.phphave been removed. Fix submitted by Leandro F. L. in pull request 12513.
- The typo in the
getDispretionPathfunction name has been corrected to
getDispersionPath. Fix submitted by PascalBrouwers in pull request 12507. GitHub-12506
- Magento now saves new orders created by guest accounts to the Order display as expected. Previously, Magento did not display the order with the customer information assigned to it, and although Magento sent an email containing the order ID, the email did not contain information about the ordered items. Fix submitted by Roman K. in pull request 12241. GitHub-10128
- CAPTCHA labels now reflect both the symbols and letters associated with the CAPTCHA image. Previously, the text labels referred to the CAPTCHA image referred to letters only, despite there being numbers in the CAPTCHA images, too. This ambiguity had the potential to mislead users about which text to enter. Fix submitted by RhodriOwainDavies in pull request 12387.
robots.txtresponse header content type is now plain text. Fix submitted by Milan Osztromok in pull request 12310.
- Customers can now successfully use RSS to share their wish lists. Previously, when a logged-in user added products to the wish list and then tried to share them using RSS, Magento threw this exception:
report.INFO: Broken reference: the 'wishlist.email.rss' element cannot be added as a child to 'root', because the latter doesn't existFix submitted by MediaCT in a pull request.
- When you select a new main menu option, the previously selected menu item now loses the
ui-state-activeclass as expected. Fix submitted by Arnoud Beekman in pull request 13341. GitHub-13327
- Issues with displaying full-screen images and video on the configurable product page have been resolved. Previously, Magento displayed video associated with product options on this page as images, rather than video, and full-screen mode for images ignored the configurations settings in
view.xml. Fix submitted by Ievgen Shakhsuvarov in pull request 991. GitHub-12268
- We’ve fixed issues with the “report module enable/disable changes as deployment markers” functionality in the
Magento_NewRelicReportingmodule. Previously, if New Relic’s cron was enabled, Magento sent a New Relic deployment marker for every enabled module once per cron period. This resulted in an excessive number of events. Fix submitted by Kristof in pull request 12477.
- The New Product Configuration process now works as expected from the Admin. Previously, on the last step of this process, Magento displayed
the element.disabled is not a functionmessage and did not create the product variations as expected. GitHub-12555
- Save operations on CMS pages now load from
pageRepository. Fix submitted by Jeroen in pull request 13814.
- 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 13844. GitHub-13827, GitHub-13350
- 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.
- You can now successfully import product images and image labels from CSV files. Previously after import, the alt text field on the Admin was empty, even though the label was imported and was visible on the product list page as alt attribute, and the Product Detail page missed the alt attribute on image fields. Fix submitted by Ben Robie in pull request 11323. GitHub-9931
- The CSV file created by using System > Export now incorporates the value of
hide_for_product_page. Fix submitted by Nickolas Malyovanets in pull request 11926.
- You can now import a value of zero (0) into a custom attribute when using the Admin product import feature. Fix submitted by p-bystritsky in pull request 12283. GitHub-12083
- 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 no longer fails when you import products with image filenames containing round brackets from a CSV file. Fix submitted by p-bystritsky in pull request 1017. GitHub-12084
- 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,
created_at) are absent in the import file, these values are included unchanged.
- Magento now provides a test for adding values to the system variable collection unit test. Fix submitted by Nickolas Malyovanets in pull request 13742.
- You can now successfully import configurable products with specified configurable links when the
store_view_codesetting isn’t set. Previously, you could successfully import a configurable product with both configurable and additional attributes, but when you viewed the category to which the product belonged, the product was not displayed. GitHub-5876
- Save operations on CMS blocks now load from
pageRepository. Fix submitted by Jeroen in pull request 13796.
- The default storefront welcome message now works as expected when the Translate Inline (Stores > Settings > Configuration > Advanced > Developer >) setting is enabled. Fix submitted by Paresh Pansuriya in pull request 13038. GitHub-12711
- You can now use the layout update XML field to include custom CSS in CMS pages. GitHub-4454
- We’ve added an @api annotation to the block argument marker interface. This identifies this interface as requiring only a minor version dependency. See Dependencies for more information. Fix submitted by Vinai Kopp in pull request 13816.
- The URL that points to Magento
crontabdocumentation has been updated to reflect current cron documentation in
app/code/Magento/Indexer/Model/Message/Invalid.php. Fix submitted by Robbie Thompson in pull request 13050.
- You can now view the state of the mview queue in real time, which can be useful when debugging indexing issues. Specifically, you can now view how many items are in the queue pending processing, as well as view information from the
mview_statetable. Fix submitted by Luke Rodgers in pull request 12122.
- Zoom now works as expected when using dropdown menus. Previously, zoom worked fine, but when you hovered over the category dropdown menu to the overlap area of product image and dropdown menu, the zoom was abnormally active, even though the mouse was still on the dropdown menu. Fix submitted by Mayank Zalavadia in pull request 13084. GitHub-5129
- RequireJS loading issues that occur when ad blockers are active have been resolved. Previously,
uBlock(or any ad blocker) forbade the
continue()has been removed from templates. Fix submitted by Ihor Sviziev in pull request 13076.
- The comment that marks the
\Magento\Checkout\Model\Cartclass as deprecated now includes a pointer to an alternative class. This fix is part of an ongoing effort to add pointers to valid replacements when marking methods and classes as deprecated. Fix submitted by Fabian Schmengler in pull request 13061. GitHub-10133
- A new file (
CODE_OF_CONDUCT.md) that defines standards for how to engage in the community has been added. Fix submitted by Ievgen Shakhsuvarov in pull request 12723.
\Magento\Framework\Data\Tree::getNodeById()no longer contains an invalid type in its PHPDoc block. Fix submitted by Roman K. in pull request 964. GitHub-8507
element.disabled is not a functionmessage, and did not create product variations as expected. GitHub-12555
- The About Us and Customer Service links of the Order Confirmation email (and other emails sent to the customer) now work as expected. Fix submitted by Roman K. in pull request. GitHub-12261
- Magento now sends the newsletter subscription success email as expected when a customer successfully subscribes to a newsletter. Fix submitted by Styopchik in pull request. GitHub-12439
- Magento now uses indexes to retrieve subscriber information during the creation of email to newsletter subscribers. Previously, Magento did not use indexes for this task, and performance was poor. Fix submitted by Amit Bera in pull request. GitHub-12787
- Magento no longer sends multiple confirmation emails when a customer successfully subscribes to a newsletter. Fix submitted by Torben Höhn in pull request 13044. GitHub-12876
- The text of the Subscribe to Newsletter button now wraps correctly. Fix submitted by monaemipro in pull request 13041. GitHub-12320
- 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.
getDefaultStoreLocale()method has been added to allow for the fetching of scoped values. Use this method in
getCreatedAtFormatted()to ensure that Magento translates the
created_atorder date in emails for the locale being used in that store view. Fix submitted by Jeroen in pull request 11067.
- You can now successfully open the Order edit page for orders that contain an address with extension attributes. Previously, when you tried to open this page, the page load failed with this error,
Recoverable Error: Object of class Magento\Sales\Api\Data\OrderAddressExtension could not be converted to string in .../module-sales/Model/AdminOrder/Create.php on line 503.
- Magento now saves an invoice ID on the credit memo when you create a credit memo from the invoice in the Admin. Previously, the invoice ID was not included. Fix submitted by Anton Evers in pull request 11067. GitHub-11669
- Credit memos can have the state open (
\Magento\Sales\Model\Order\Creditmemo::STATE_OPEN). As a result, you can create a credit memo with an ID that still has to be refunded, and existing credit memos should be refundable if their state is open. Fix submitted by Anton Evers in pull request 11550.
Magento\Sales\Service\V1\OrderCreateTesttest now has the correct shipping method fixture. Previously, this test contained an incorrect shipping method fixture, which produced an error whenever an order’s shipping method was treated as an object. Fix submitted by andrew-garside-temando in pull request 12227.
- 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.
getReservedOrderId()method now uses the current store as expected instead of the default store. Fix submitted by Timon de Groot in pull request 11702. GitHub-9055
- When you are editing an order’s shipping or billing address, Magento now displays the allowed countries from the correct store view. Previously, possible addresses were derived from the wrong store view. Fix submitted by Roman K. in a pull request. GitHub-12560
\Magento\Sales\Model\Order\Pdf\AbstractPdf::drawLineBlocksmethod now works as expected. Previously, when a text block spanned more than one page, Magento threw a
Zend_Pdf_Exceptionerror, and displayed this error:
Font has not been set. Fix submitted by Serhii in pull request 1016. GitHub-11743
- Magento no longer exports extra records when you export invoices for multiple orders. Fix submitted by Sanjay Patel in pull request 13208. GitHub-12714
- 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 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 12668. GitHub-9969
- Join extension attributes are now added as expected to order results when the order is created using REST. Fix submitted by Nickolas Malyovanets in pull request 1168.
- The Shipment Tracking REST API now throws an error as expected if the specified order doesn’t exist. Fix submitted by Roman K. in pull request 1162.
- Invoices now display the exact quantity of a product ordered, even if it is a fractional unit (for example, 6.5). Previously, when Magento tried to invoice an order that had products with quantities that required decimals, it rounded down the quantity to the nearest whole number in the invoice. Fix submitted by Nickolas Malyovanets in pull request 11997. GitHub-11941
- 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.
- Logged-out customers can no longer see previously saved credit cards. Previously, users logged in as guest could see some payment information from an earlier, canceled order.
- Third-party developers can now customize payment errors messages for payment integrations based on the Magento Payment Provider Gateway.
- PayPal Express Checkout now appears as a payment option on the Checkout page when the PayPal buttons are available on the shopping cart page. Previously, PayPal did not appear as a payment method on the Checkout page when the billing agreement was disabled, although the PayPal buttons were still available on the shopping cart page.
- You can now view order details for an order created with a custom offline payment method. Previously, Magento displayed PHP warning (undefined index) instead of the order details. Fix submitted by Alex in pull request 12296. GitHub-3596
- Magento no longer disables the BrainTree Place Order button after a failed payment validation. Fix submitted by Ievgen Sentiabov in pull request 12902.
is_visiblecolumns now default to true even when column default values are not set in the
vault_payment_tokeninstallation script. Fix submitted by helloitsluke in pull request 12965.
- If you’ve chosen a custom payment method that is offline when you create an order, Magento now displays that payment method’s name as expected when you view order details in Payment & Shipping. Fix submitted by zamoroka in pull request 12731. GitHub-12209
- 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.
- Magento now correctly adds checkout agreements data to requests and validates payment information when you place an order using PayPal Express. Previously, you could check this box, but Magento did not parse the agreements data or pass it to the set-payment-information API. This failure in turn triggered the
CheckoutAgreementsvalidation plugin, which failed to validate. Fix submitted by Ričards Zālītis in pull request 12401.
- Magento no longer archives active orders that are placed using PayPal Express Checkout. Previously, if you placed an order using PayPal Express Checkout, Magento would place the order as expected but also add it to the list of archived orders.
- Magento now correctly displays transparent
PNGwatermarks on JPEG images. Previously, Magento did not correctly display a transparent watermark as expected on an image, but instead displayed a white outline of the box where the watermark should be. Fix submitted by Elze Kool in pull request 11060. GitHub-10661
- 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 13777. GitHub-13315
- Magento now correctly updates the credit memo total when a merchant issues a refund. Fix submitted by Serhii in pull request 1185. GitHub-11798
- The addition of a cache for the
getimagesize()function has improved product image loading.
- Each cache type now has its own separate cache storage.
- We’ve optimized the initialization of the Product View block, which gives an 11% performance improvement for simple product views.
- Magento now caches search results for faster response time on popular searches. A system administrator can configure how many top search queries can be cached. This enhancement can result in up to a 36% improvement for cacheable search terms.
- If a customer changes the currency type of his order-in-progress while viewing the shopping cart, Magento displays a message that shows the minimum order necessary in the new currency. Previously, this minimum was calculated incorrectly. Fix submitted by Neeta Kangiya in pull request 13039.
- Magento no longer truncates very long telephone numbers on the order page. Previously, Magento cut off very long phone numbers at 20 digits. Fix submitted by Danny Verkade in pull request 13015. GitHub-10869
- 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. GitHub-12393
- 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.
- An integrity constraint violation error no longer occurs after you reorder a product with custom options. Fix submitted by Vinay Shah in pull request 13036. GitHub-12705
- The Products in Cart report is now accurate. Previously, if you created a Products in Cart report (Open Reports > Marketing > Products in Cart) after deleting a product from the catalog, the report displayed a blank list of products. Fix submitted by angelo983 in pull request 12539.
- You can now successfully export the Ordered Products report to a CSV file. Previously, the export file contained no report data.
- Magento now display the correct catalog rule price for bundle products with custom options.
- Cart prices now displays the Cart Price Rule shipping discount correctly. Previously, when you placed an order, Magento displayed this error:
Payment method is not available.
- Magento now displays the exact label value that was given in the Admin during the cart price rule creation. Fix submitted by Ihor Sviziev in pull request 13141. GitHub-11428, GitHub-11497
- Magento now correctly displays in Cart Price rules the nesting levels for categories with nesting levels that exceed three levels.
- Coupon codes that a customer has applied to a subsequently canceled order are now available for re-use as expected. Previously, once a customer canceled this order, she could not apply the coupon code to another order. Fix submitted by p-bystritsky in a pull request. GitHub-12817
- Magento now displays popular search terms in SEO & Search > Search Terms as expected. Fix submitted by p-bystritsky in pull request 1024. GitHub-10743
- Layered navigation now displays the correct product count. Previously, the layered navigation product count incorrectly included only in-stock products. Fix submitted by Roman K. in pull request 12063. GitHub-11946
- Grid filtration now handles MySQL special characters as expected. Fix submitted by laconica-sergey in pull request 12749.
- Magento no longer throws an error when you submit the search form in the header with an empty value. Fix submitted by Koen V. in pull request 13811. GitHub-13791
You can find Magento Shipping-specific release notes in Magento Shipping Release Notes.
- The handling fee configuration of shipping methods is now explicitly cast to 0 to avoid warnings from PHP 7.1. Fix submitted by Fabian Schmengler in pull request 13680.
count($_items)in templates have been removed. Fix submitted by Alexander Shkurko in pull request 12901.
- Magento now enforces the minimum order amount during checkout as expected. Previously, you could bypass the minimum order amount logic by clicking Check Out with Multiple Addresses, removing products from the order and then clicking Update Qty & Addresses. Fix submitted by Roman K. in pull request 963.
- DHL product codes now match those published in the latest DHL products and services guide. Previously, three DHL product codes in the DHL Shipping module were incorrect. Fix submitted by gwharton in pull request 12666.
sitemap.xmlnow displays URLs without
/homeappended. Fix submitted by Oscar Recio in pull request 12649. GitHub-12446
- Sitemaps generated in a multi-store environment now include the correct URLs for each store (that is,
http://defaultstore.com/). Fix submitted by Roman K. in pull request 935. GitHub-12482
- Magento now handles errors that occur during sitemap generation in a less intrusive way. If Magento throws an exception when generating a sitemap, it now sends the errors through email as configured in the sitemap configuration XML. The former
_translateModelproperty is not used anymore, and the inline translation is correctly suspended using the
inlineTranslationproperty instead. Fix submitted by Marina Gociu in a pull request. GitHub-10502
- The code formatting in the Swagger block and template has been updated. Fix submitted by Jeroen in pull request 13485.
- 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
- Visual swatches that have a color assigned now show that color in the swatch box. Previously, Magento did not display any color in the color swatch box. Fix submitted by Chris Pook in pull request 13101. GitHub-11828
- The error message displayed when you do not supply enough information during swatch creation has been edited for clarity and grammatical accuracy. Fix submitted by Nickolas Malyovanets in pull request 1117. GitHub-5550
- You can now successfully save a Related Product rule.
- The default selector on the Admin’s tax rule edit page now selects only the correct container (tax rate) following the Tax Rate multi-select. Previously, the default selector selected three elements, which resulted in inaccurate results. Fix submitted by Pieter Hoste in pull request 13643. GitHub-12791
- We’ve removed the redundant default discount tax calculation (
Magento/Tax/etc/config.xml. Fix submitted by Vincent Marmiesse in pull request 13449.
- The Not yet calculated text string immediately adjacent to the string Tax on the checkout page is now translated as expected. Fix submitted by Roman K. in pull request 1147. GitHub-7849
- Magento no longer displays incorrect tax amounts for orders when using a non-default tax configuration. Fix submitted by Pieter Cappelle in pull request 12639. GitHub-10347
ConfigurationTestno longer fails when you install Magento using Composer. Fix submitted by Nickolas Malyovanets in pull request 1161. GitHub-12574
- We’ve added
MagentoStyleto console input and output in Travis tests.
JSTestDriversupport. Fix submitted by Carlos Lizaga in a pull request. GitHub-12342
functional.suite.dist.ymlnow handles custom backend names. Previously, the value for the
backend_nameconfiguration was hardcoded. Fix submitted by scribam in pull request 12884.
- We’ve added a missing preference for
ObjectManager\ConfigInterfacein integration tests. Fix submitted by Fabian Schmengler in pull request 12845. GitHub-12844
- Integration Test Annotation
magentoAppAreano longer breaks with valid values. Fix submitted by Nickolas Malyovanets in pull request 996. GitHub-2907
- The inline documentation of the static test for XSS vulnerabilities now reflects that
@escapeNotVerifiedis disallowed in Magento versions equal or greater than 2.2. Fix submitted by Matthias Zeis in pull request 12639.
- We’ve added integration tests for product URL rewrite generation. Fix submitted by Adrien Louis-Rossignol in pull request 13567. GitHub-5863, GitHub-8227, GitHub-8957, GitHub-10073, GitHub-13240
- 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.
- If a customer is logged in while Magento loads, then the welcome message displays the customer’s full name. Fix submitted by Oleh Kravets in pull request 12738. GitHub-12719
- You can now disable the full-screen gallery on mobile devices Fix submitted by p-bystritsky in pull request 1006. GitHub-12490, GitHub-12285
- Protected method
getHtmlnow checks each child for an existing class and then appends the
$outermostClassif true. Previously, when creating a dependency injection for the
Magento\Theme\Block\Html\Topmenuclass, you could not change class names on children in a
setClass()on all child items. Fix submitted by jonshipman in pull request 12862.
- 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.
Translations and locale
- Inline translations and custom translators now work for Knockout templates. Fix submitted by Dmitry Fedyuk in pull request 12953. GitHub-2156
- Magento now provides a locale for Swedish (Finland). Fix submitted by Nickolas Malyovanets in pull request 1207. GitHub-13095
- Magento now uses current locale (as defined in Stores > Settings > Configuration > Advanced Reporting) when translating the time zone label. Previously, Magento used operating system settings instead of the current locale. Fix submitted by adrian-martinez-interactiv4 in pull request 13408.
- Newsletter labels can now handle the Chinese language. Fix submitted by Dasharth patel in pull request 13029. GitHub-12320
- The module responsible for generating the
js-translations.jsonfile now contains a routine that translates strings in tags such as
<translate args="This won't be translated". Fix submitted by Matti Vapa in pull request 13528. GitHub-12081
- You can now configure a form field with validation range words. As a result, the category name is validated, and the category is created (or displays the correct error message, if validation fails). Previously, Magento displayed an error message on the console. Fix submitted by Robin Huy in pull request 12739.
- The Save Block button on the Add New Block page no longer ignores clicks if the content editor is empty. Fix submitted by Roman K. in pull request 1032. GitHub-8114
- Magento now disables the promo code input box after a user applies a promo code. Fix submitted by Chirag P in pull request 13030.
- 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 12469. GitHub-12268
- The PHP notice that Magento displays when an invalid
ui_componentconfiguration is used has been improved. Fix submitted by Vova Yatsyuk in pull request 12239.
- Magento has added verification for previously set filters in
Magento/Ui/Component/Filters, which has eliminated duplication of filters in the collection
- Inconsistency in the animation of the Admin spinner progress indicator has been corrected. Fix submitted by Neill Robson in pull request 13700.
- When using a store code in a URL, Magento now retrieves the value of
Store_Codefrom the store if the store code value is empty. Previously, under these circumstances, Magento threw an error. Fix submitted by Oscar Recio in pull request 12529. GitHub-8615
Web API framework
- You can now use the REST API to make requests that include a slash (/) in an SKU. Fix submitted by Roman K. in pull request 949. GitHub-8615
- Magento now correctly displays a product’s special price when you add it to a wish list. Previously, if you added a product with a special price to the wish list, Magento displayed the product with its regular price.
- You can now remove an item description from a wish list. Fix submitted by p-bystritsky in pull request 981. GitHub-12582
Merchants are unable to change a store view’s applied theme in Magento 2.2.4. When a merchant tries to change the Applied theme setting for a store view (Content > Design > Configuration), Magento does not change the theme, but instead displays this error:
Something went wrong while saving this configuration: Area is already set. See GitHub-14968 for more information. Workaround: Merchants who are running Magento 2.2.4 should upgrade to 2.2.5, then apply patch MAGETWO-93036.
We are grateful to the wider Magento community and would like to acknowledge their contributions to this release.
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.
Our technology stack is built on PHP and MySQL. For details, see Technology stack requirements
Installation and upgrade instructions
See How to get the Magento software for complete installation and upgrade information.
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.