Magento Commerce 2.2.6 Release Notes

Patch code and release notes were published on September 18, 2018 and last revised October 29, 2018.

We are pleased to present Magento Commerce 2.2.6. This release includes 25 critical enhancements to product security, over 150 core code fixes and enhancements, and over 350 community-submitted pull requests.

Although this release includes these security enhancements, no confirmed attacks related to these issues have occurred to date. However, certain vulnerabilities can potentially be exploited to access customer information or take over administrator sessions, so we recommend that you upgrade your Magento software to the latest version as soon as possible.

See Magento Security Center for a comprehensive discussion of these issues. All exploitable security issues fixed in this release (2.2.6) have been ported to 2.1.15, 1.14.3.10, and 1.9.3.10, as appropriate.

Highlights

In addition to 25 critical security fixes, look for the following highlights in this release:

Core code highlights

This release includes significant performance improvements to the core Magento code:

Substantial improvements to performance

Performance-tuning enhancements focus on catalog indexing and include:

  • Category product indexer logic has been optimized, and re-indexing time has decreased up to 98%, from 40 minutes to one minute for 100,000 categories.  Previously, when your store contained many categories (100,0000), Magento could take up to 40 minutes to re-index product catalogs.
  • The catalog:image:resize command execution time has been reduced by up to 90% in the release. However, this improvement necessitates these additional steps after upgrading your Magento instance to 2.2.6:

    • Remove pub/media/catalog/product/cache . (Removing this folder frees up space.)

    • Run bin/magento catalog:image:resize to generate a new image cache. (This step is necessary because we’ve changed the path to cached images and must remove the previously cached images.)

  • The catalog rule re-indexing operation has been optimized, and the 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.
  • The catalog price indexer is now scoped and multithreaded, which improves the performance of layered navigation, search, and indexing actions for Magento instances with multiple websites and stores. This makes it possible to parallelize catalog price indexing by websites and customer groups. To re-index in parallel mode, add the MAGE_INDEXER_THREADS_COUNT environment variable to env.php.
  • The time required to load category or product pages for products that are configured with many attributes (more than 500) has been significantly reduced. Refactoring the logic for product attribute retrieval has resulted in a reduction of load time of almost 90% for scenarios with a large number of product attribute sets. (Performance will not noticeably improve for deployments with only one attribute set configured with 500 attributes. However, deployments with many attribute sets that contain only a few attributes will show significant performance improvement. For example, a deployment with 100 attribute sets, each of which contains 50 attributes, might see a 40-90% reduction in load time.)
  • The time required to load a store’s home page has been reduced noticeably when the top menu contains many categories. (Load time is still affected by the number of categories and the structure of the top menu.)
  • Merchants can now improve store performance by disabling Magento Report functionality. A new configuration setting (System Configuration: General > Reports > General Options) allows merchants to disable Magento Reports, which is recommended practice if a merchant’s business function does not require this capability.

Improvements to the reliability and ease of the checkout process

  • A shopping cart’s contents remain constant even when the checkout page is repeatedly reloaded. Previously, if a customer reloaded the checkout page several times, Magento emptied the shopping cart, and the customer could not place the order. (This problem primarily affected stores running on HTTPS.)
  • 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 checkout page affected information entered into form fields for a guest checkout.
  • The speed at which Magento places an order is no longer affected by how many shipping methods are available. Previously, when a customer placed an order for which multiple shipping methods were available, Magento took more than 20 seconds to place the order.

Additional enhancements

  • 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 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.

Magento Cloud highlights

  • We’ve added a Docker Compose configuration to the Cloud ece-tools repository for deploying a local development environment.

  • Merchants can now change store locales without the exporting and importing configuration process.

  • A new workflow lets merchant add a robots.txt file and generate a sitemap.xml file for a single domain configuration without requiring a change to the infrastructure.

  • Merchants can now define multiple locales for each theme using the new SCD_MATRIX environment variable, which reduces the amount of theme files to deploy.

  • Zero-downtime deployment has been implemented through a “connection holding” capability, which ensures no lost connections or site unavailability, providing smooth shopper experience even during deployments involving database schema changes.

  • We’ve fixed an issue that caused downtime between the deploy and post-deploy phase. Now, the post_deploy phase begins immediately after the deploy phase ends.

Community contribution highlights

Highlights of community contributions include fixes that improve checkout flow and the sorting of simple products:

  • Customers can now successfully complete an order when it contains a configurable product with an option that is deleted after the product has been placed in the shopping cart. Previously, the shopping cart could not load the shopping cart after the configurable option was deleted. Thanks to community member jonshipman! GitHub-15467

  • Magento now maintains the default sort order for products (“newest first”) when you upgrade your Magento deployment. Previously, after upgrade, the default product order in categories changed from “newest first” to “oldest first”. Thanks to community member Danny Verkade! GitHub-15627

  • Merchants can now successfully change the applied theme setting for a store view (Content > Design > Configuration). Thanks to community member Daniel Ruf! GitHub-14968

  • Magento loads pages faster because it no longer redundantly calculates product taxes when loading category pages. Thanks to community member JeroenVanLeusden! GitHub-14941

Core bundled extension highlights

This release includes many enhancements to our core bundled extensions:

Amazon Pay

Enhancements to Amazon Pay include these features:

  • Implementation of the Magento payment provider gateway, which provides developers a mechanism for integrating stores with payment providers.

  • Improved handling of virtual products.

  • New entry in the Admin that allows Amazon Pay to be displayed in the list of payment options.

  • Combined Synchronous, if possible and Asynchronous settings for authorization mode into one setting. Current settings are now Immediate (previously Synchronous) and Automatic (a combination of the previous Synchronous, if possible and Asynchronous).

dotmailer

Enhancements to dotmailer include these new features:

  • You can now request and capture the consent of customers and guests using dotmailer’s new Consent Insight.

  • You can import only those Magento contacts who have opted in (customer subscribers, guest subscribers, and other subscribers).

  • A warning alerts you when you are about to sync non-subscribers into a dotmailer account.

  • Improvements have been made to the retry process that results after a failed attempt to access EDC.

Klarna

Enhancements to Klarna include support for these new features:

  • The Klarna Payments section now includes a link to Klarna automated onboarding and account sign in.

  • If an approved order is later identified as fraudulent, Klarna notifies the merchant and requests that they try to stop the order from being delivered. In addition, Klarna attempts to cancel the order automatically by sending notification to the merchant. See Managing Your Account for more information.

  • Shipping and discount order lines have been added to order management calls.

  • Klarna now passes shipping details in capture requests.

  • The Klarna API now returns the name and logo URL to use for each payment method instead of hard-coding the payment method names into the module.

For more information on these new features, see Klarna.

Magento Shipping

  • Batch Processing provides merchants with the ability to

    • Specify and modify packages and experiences for orders assigned to a batch

    • Book shipments for a batch

    • Print all packing slips and printing labels for the batch

  • New Shipment Reference field associates bookings between a carrier and a customer

Magento Social

Magento has removed the Magento Social Facebook integration, and no longer supports the extension.

Looking for more information on these new features as well as many others? Check out Magento Developer Documentation and the Magento Commerce User Guide.

Fixes

In addition to security enhancements, this release contains the following functional fixes.

Installation, setup, and deployment

  • You can now use the app:config:status command to check whether configuration propagation is up-to-date. (This fix restores this command, which was inadvertently deleted in a previous release.) Fix submitted by Pieter Hoste in pull request 15174. GitHub-14104
  • 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 using config:set --lock-config. Fix submitted by Juan Alonso in pull request 12410. GitHub-11396
  • Configuration backend models are now populated as expected with all fieldset data, which makes it possible to access all configured values from a current group. GitHub-16712
  • The magento-deploy-ignore setting in composer.json now works as expected. Previously, files specified in this setting were overwritten during deployment.
  • The timestamp fields in oauth_nonce now include indexes to avoid deadlocks while erasing old records. Fix submitted by Carlos Lizaga in pull request 13328. GitHub-10346
  • Sorting has been disabled in the glob and scandir functions to improve performance. Fix submitted by Leandro F. L. in pull request 16052.
  • The nginx.config.sample file no longer includes an option for PHP 5.x. (Magento 2.2.x is not compatible with PHP 5.x.) Fix submitted by Sean Breeden in pull request 16883.
  • Autoloading performance has improved on production environments as a result of the reduction in file_exists calls. Fix submitted by Pieter Hoste in pull request 16435.
  • Setting deploy mode to production mode by using the --skip-compilation flag no longer clears generated code in generated/code/ and generated/metadata/. Fix submitted by platformvaimo in pull request 16211.
  • We’ve made two changes to Magento/Config module: Magento/Config/Test/Unit/Block/System/Config/Form/Field/ImageTest.php::testGetElementHtmlWithValue() method no longer references a invalid backend model, and the anonymous function no longer has an unused $data in Magento/Config/Model/Config/Importer.php. Fix submitted by Marcel Hauri in pull request 15511.
  • The upgrade check implemented during setup now indicates success if the latest version of Magento is already installed. Previously, the message indicated that the latest product version was already installed was presented as error. Fix submitted by Daniel Ruf in pull request 15012.
  • The Add Block Names to Hints configuration setting has been renamed to Add Block Class Type to Hints. Fix submitted by Chris Pook in pull request 14939.
  • The cron:run command now reads cron/enabled configuration setting and if this value is set to 1 (the default value), then the cron:run command will execute. A value of 0 determines that cron:run will not be executed, and prompts Magento to send the customer email indicating that cron is disabled.
  • New command-line interface (CLI) commands support setting and showing indexer dimension modes:

    • bin/magento indexer:set-dimensions-mode sets indexer dimensions mode

    • bin/magento indexer:show-dimensions-mode shows dimensions mode of indexer

Amazon Pay

  • Amazon Pay no longer appears as an option during checkout when a customer selects Check Out with Multiple Addresses. Previously, Magento displayed Amazon Pay as an option, even though Amazon Pay does not support multishipping.
  • You can now change and save Amazon Pay configuration settings from Configuration > Sales > Payment Methods > Amazon Pay when deploying Magento in a Cloud environment. Previously, Magento did not save changed settings.

B2B

  • Company blocked warnings are no longer included in the source code. Previously, source code included these warning strings, which search indexers detected and treated as text.
  • 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.
  • In multisite environments, you can now save the address of a company that is allowed only on the non-primary website. Previously, if a merchant tried to save a company address from the default website, Magento displayed this error, Invalid value of "UA" provided for the 'country_id' field.
  • 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 the correct product total price value on all websites in a B2B deployment. Previously, Magento did not apply cart price rules for product prices on non-primary websites, but instead displayed the product price assigned to products on the primary website to all websites.
  • When Website Restrictions are set to Private Sales: Login Only, access to the storefront is now restricted to customers who log in, and merchants can still create new companies in the Admin. Previously, when a merchant tried to create a company when this setting was enabled, Magento threw this error, Can not register new customer due to restrictions are enabled.
  • Configurable products can now be added to the requisition list directly from the Category page.
  • The beforeSave method on Braintree CountryCreditCard class now has a statement that supports app:config:import. Previously, Magento threw an exception during import if it encountered an empty field in the Braintree configuration file. Fix submitted by Mateusz Lerczak in pull request 14829.
  • 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.
  • Company administrators can now use Quick Order to buy products. Previously, when a company administator tried to use Quick Order to buy products, Magento displayed this error: The SKU was not found in the catalog.
  • You can now successfully search for products when the Shared Catalog setting is enabled.

Bundle products

  • Magento now successfully imports bundle products. Previously, bundle products were not visible in the product catalog, and were listed as out-of-stock on the storefront.
  • The Magento_Bundle module name has been added to the relevant template files to meet Magento standard coding format. Fix submitted by Namrata in pull request 15825.
  • The option variable has been renamed to quoteItemOption to improve code readability in app/code/Magento/Bundle/Model/Product/Type.php. Fix submitted by Leandro F. L. in pull request 16143.
  • Magento now accurately displays the status of bundle product stock when Add to Cart is enabled for bundle products. Previously, bundle products with the User Defined field unchecked could not be back ordered as expected. GitHub-10061

Catalog

  • The breadcrumbs component no longer relies on the mageMenu widget. Fix submitted by Vova Yatsyuk in pull request 15178. GitHub-14987
  • The data-container class name is now based on view mode. Fix submitted by sunilit42 in pull request 15350. GitHub-15319
  • 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 15347. GitHub-15037
  • Disabling a product now removes it from the flat index as expected. Fix submitted by Mr. Lewis in pull request 15019. GitHub-14966
  • The success message that Magento displays when a customer adds a product to the compare list now contains a link to the comparison list. Fix submitted by Andreas von Studnitz in pull request 13862.
  • Cache problems no longer occur when currencies are used without a currency symbol. Fix submitted by Dmytro Cheshun in pull request 15902.
  • Catalog component blocks now contain correct return type suggestions, and typos have been corrected where needed in the PHPDocs. Fix submitted by Dmytro Cheshun in pull request 15913.
  • Widget cache errors that resulted in one widget being loaded twice on the storefront have been resolved. Fix submitted by Alexandr Kozyr in pull request 12764. GitHub-4389
  • Magento no longer makes redundant requests on the ‘customer data’ on the checkout page. Fix submitted by Andrey Bezyazychnyy in pull request 14314. GitHub-13765
  • Administrators with permission to change product names on one website only cannot change product names on any other sites. Previously, an administrator with permission to change a product name on one site only could change product names on all websites in a multisite deployment.
  • Administrators with limited privileges can now save products as expected.
  • 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.
  • Magento now reliably displays category images on the custom store view level. Previously, the category image on custom store view level alternately disappeared and appeared after every save operation.
  • Magento no longer removes downloadable product links after an attribute is updated.
  • Extra POST requests are no longer sent if the Synchronize widget products with backend storage option is set to yes.
  • 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.
  • You can now use the Magento\Catalog\Model\ProductRepository class to assign a product to one website as expected. Previously, using this class to save a product assigned the product to all existing websites, not just the specified one.
  • Images now load as expected on the product display page (PDP) when the image name contains double quotation marks.
  • The SEO-friendly URL for the Category page now works as expected.
  • The Use Default Value checkboxes in the design section of the category page are now enabled by default as expected.
  • Customers can now use the Add Product By SKU button to add configurable products to a sales order.
  • Empty dropdown or swatch type product attributes are no longer visible on the product page.
  • Attributes that have empty values across all products being compared are not displayed as rows in the comparison table. Previously, Magento displayed these attributes with an N/A value on the Compare Products page.
  • The Catalog page now displays breadcrumbs as expected.
  • Tiered pricing and quantity increments now work as expected with decimal-based inventories.
  • Magento now updates the catalog_category_product_index table as expected after a category is deleted.
  • Customizable options are now configured the same for all websites to which a product is added. Previously, when a merchant added a product with customizable options to an additional site, the options were corrupted.
  • The Use default value option is no longer unchecked unless the user overrides the value of the attribute in the store view scope. Previously, after creating an item, if the user changed to store view scope and did not make any modifications to the item’s attributes and only clicked Save, most of the attributes that were set as Use default value became unchecked.
  • Category product indexer logic has been optimized, and re-indexing time has been noticeably reduced.  Previously, when you had many categories (100,000), Magento could take up to 40 minutes to re-index product catalogs.
  • Widget selection by Enabled Products no longer causes a fatal error on a storefront when the Flat Product is configured.
  • Merchants can now change the status and update attributes from the product page. Previously, Magento returned a 404 page when bulk enabling or disabling products in the Admin with a restricted user role that is limited to a specific website.
  • Magento now maintains the default setting for a product’s status attribute when you create a new product. Previously, when creating a new product after changing the default option from Enabled to Disabled for this attribute, the status is incorrectly set to enabled by default.
  • The print preview of product comparison results (that is, the page of results that Magento produces when you click Compare after selecting two or more products) now displays as expected. Previously, only a subset of page elements was displayed.
  • Magento now maintains the correct dates in the results of filtering the Admin Product Grid Filter: Set Product as New from Date. GitHub-11517
  • 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.
  • Merchants can now set custom option fixed prices with negative values in the Admin. GitHub-7333
  • You can now unset a category image on the store-view level when the image is defined on all store views.
  • The Catalog Products List widget can now display products on the storefront that have specific attributes.
  • The shopping cart now correctly displays images of configurable products that have only size options (that is, no color options). Previously, when a customer added a configurable product that had only size options to her shopping cart, the shopping cart did not display the expected product image. Fix submitted by Ronak Patel in pull request 16863. GitHub-16843
  • 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.
  • Magento now successfully displays product prices in currencies without minor units if the price amount is less then the number group size. GitHub-11711
  • Magento now displays the correct price on the product page for storefronts running Japanese locales. Fix submitted by Vishal Gelani in pull request 15909. GitHub-11711
  • Magento now correctly saves the value of a product’s custom options. Previously, Magento saved all objects by using the same value object for all values. Fix submitted by Jeroen Van Leusden in pull request 13569. GitHub-5067
  • Magento now displays the product name as browser title as expected. Previously, the meta title tag was missing, which prevented Magento from displaying the product name. Fix submitted by Riccardo Tempesta in pull request 15532. GitHub-15501
  • Magento now maintains the default products sort order of “newest first” when you upgrade your Magento deployment to 2.2.4. Previously, after upgrade, the default products order in categories changed from “newest first” to “oldest first”. Fix submitted by Danny Verkade in pull request 15629. GitHub-15627
  • Links on product pages are now linkable as expected. Previously, when Magento displayed a product page, none of the provided links were clickable. Fix submitted by simonjanguapa in pull request 15687. GitHub-15393
  • Deprecated methods in Message Manager have been replaced with valid methods. Fix submitted by Tiago Sampaio in pull request 16924.
  • Array short syntax usage has been standardized in these files: app/code/Magento/Catalog/Test/Unit/Model/ProductTest.php, app/code/Magento/GroupedProduct/Test/Unit/Model/ProductTest.php, and setup/src/Magento/Setup/Module/Di/Code/Reader/FileScanner.php. Fix submitted by Leandro F. L. in pull request 16880.
  • The error message that Magento displayed when a duplicate error key occurred during product import has been improved. Fix submitted by Vishal Gelani in pull request 16389.
  • We’ve removed the direct use of the object manager when saving Admin attribute sets. Fix submitted by AnshuMishra17 in pull request 16217.
  • Breadcrumb JSON configuration has been moved to the view model and serialized using the Magento JSON serializer. Fix submitted by Diederick Bruin in pull request 15521.
  • row_id has been added to the flat action indexer, ensuring that index values are not set to 0 for new products when using index on save. Previously, if you used \Magento\Framework\Api\SearchCriteriaBuilder, and the flat product row_id is set to 0, Magento did not show the product in the getList of the ProductRepository. Fix submitted by Mr. Lewis in pull request 15010.
  • Magento no longer inserts redundant links to the homepage into breadcrumbs on the product page. Fix submitted by Vova Yatsyuk in pull request 14994.
  • Magento now correctly displays product information for products that have a negative price as a custom option. Fix submitted by Danny Verkade in pull request 15202.
  • Product names can now contain a double quotation mark character ("). Previously, when a product name contained this character, Magento threw a JavaScript error. Fix submitted by Vova Yatsyuk in pull request 15162.
  • 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 Neos2007 in pull request 14886.
  • Magento now updates product options and quantity by checking the item ID when updating a cart that contains configurable products with different options. Fix submitted by Nitin Khalasi in pull request 14765.
  • Product meta descriptions no longer contain unnecessary HTML tags. Fix submitted by David Windell in pull request 14538.
  • Attributes that have empty values across all products being compared are not displayed on the Compare Products page as rows in the comparison table. Previously, these attributes were displayed with a value of N/A.
  • Magento now maintains the correct dates in the results of filtering the Admin Product Grid Filter: Set Product as New from Date. GitHub-11517
  • Company Admin can now use Quick Order to buy products. Previously, when a company administator tried to use Quick Order to buy products, Magento displayed this error: The SKU was not found in the catalog.

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.
  • The \Magento\Captcha\Observer\CaptchaStringResolver class is now covered by unit tests. Fix submitted by Yaroslav Rogoza in pull request 16065. GitHub-14966
  • The CheckRegisterCheckoutObserver class is now covered by unit tests. Fix submitted by Yaroslav Rogoza in pull request 16160.
  • The \Magento\Captcha\Observer\CheckGuestCheckoutObserver class is now covered by unit tests. Fix submitted by Yaroslav Rogoza in pull request 16680.
  • Autocomplete for CAPTCHA inputs has been disabled. Fix submitted by Denis Belevtsov in pull request 17114.
  • Integration tests now check that customer login attempts are removed after a successful login or account details edit. Fix submitted by Yaroslav Rogoza in pull request 16306.
  • Integration tests now check that administrator login attempts are removed after a successful login or account details edit. Fix submitted by Yaroslav Rogoza in pull request 16300.
  • The CheckGuestCheckoutObserver class is now covered by unit tests. Fix submitted by Yaroslav Rogoza in pull request 16680.

Cart and checkout

  • 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 16379. GitHub-16378
  • The dropdown toggle icon on the shopping cart now works as expected. Previously, the arrow did not change direction as expected when you toggled the Discount or Tax options. Fix submitted by Karla Saaremäe in pull request 15991.
  • The shopping cart icon on the checkout page on mobile screens now displays hover color and regular color as expected. Fix submitted by Karla Saaremäe in pull request 16002.
  • Customers are not unexpectedly logged out if the customers hits the F5 key twice during checkout. Fix submitted by adrian-martinez-interactiv4 in pull request 14428. GitHub-4301, GitHub-12362, GitHub-13427
  • The Purchased Order Form button is now correctly aligned. Fix submitted by Neeta Kangiya in pull request 15331. GitHub-15334
  • The Purchased Order Form button is now visible. Fix submitted by hitesh-wagento in pull request 15372. GitHub-15334
  • Magento no longer displays duplicate element IDs on the Checkout page. Fix submitted by Julien ANQUETIL in pull request 15585. GitHub-13415
  • During the payment step of checkout, a customer can now successfully deselect the Billing save-in address book checkbox in a selected payment method other than the default method. Fix submitted by Rakesh Gangani in pull request 15344. GitHub-13692
  • The .block-minicart element on the mini cart dropdown menu no longer has an empty class. Fix submitted by Karla Saaremäe in pull request 14715. GitHub-14669
  • Customers can now add configurable products to their shopping cart when Magento is running on Internet Explorer 11.x.
  • The free shipping cart price rule now works as expected when the UPS shipping method is enabled. Previously, UPS Ground shipping method was not available for free shipping at checkout when the UPS shipping method was enabled.
  • Cart price rule condition values now handle commas as expected.
  • Free shipping coupons now work as expected with Table Rates shipping. Previously, Magento displayed this message when a customer tried to use a free shipping coupon: Sorry, no quotes are available for this order. GitHub-8172
  • Magento now displays correct store view prices for cases when a merchant uses a CSV file to add products by SKU from the Admin.
  • A merchant can successfully use SKU values that contain capital letters to add a product to a cart from the Admin.
  • 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 checkout out page affected information entered into form fields for a guest checkout.
  • The speed at which Magento places an order is no longer affected by how many shipping methods are available. Previously, when a customer placed an order for which multiple shipping methods were available, Magento took more than 20 seconds to place the order.
  • Magento now maintains browser history as expected when a user navigates from the checkout contact information page to the checkout payment information page. Previously, when a user tried to retrace her steps after landing on the payment information page, Magento did not return them to the checkout contact information page, but instead landed on a product page.
  • Magento now displays a message when a gift card card is removed during checkout.
  • Guest orders placed with gift cards can now be canceled.
  • A shopping cart’s contents remains constant even when the Checkout page is repeatedly reloaded. Previously, if a customer reloaded the checkout page several times, Magento emptied the shopping cart and the customer could not place the order. (This problem primarily affected stores running on HTTPS.)
  • The message that Magento displays when a customer has successfully added a product to his shopping cart now contains a link to the cart. Fix submitted by Andreas von Studnitz in pull request 13904.
  • The Update button now behaves the same whether product quantity is manually edited or changed by JavaScript. Fix submitted by Valerij Ivashchenko in pull request 14935.
  • Magento no longer displays the infinite checkout loader when a module that is loading makes a require call, but the dependency is not returned (typically due to network error). Fix submitted by Vova Yatsyuk in pull request 14874.
  • The minicart quantity label no longer has a fixed length. Fix submitted by Karla Saaremäe in pull request 14716.
  • Double-clicking on the Proceed to checkout button from the minicart no longer returns an empty shopping cart.

Cleanup

Our community contributors have made many helpful, minor corrections to spelling and code syntax throughout the code base.

Spelling corrections

  • Corrected misspelling of formatedPrice throughout the code base. Fix submitted by Arnoud Beekman in pull request 16726.
  • Corrected return message from ProductRuleTest.php. Fix submitted by Namrata in pull request 16721.
  • Replaced the proccessAdditionalValidation method with processAdditionalValidation. Fix submitted by Tiago Sampaio in pull request 16414.
  • Corrected misspelling in SynonymGroupRepositoryInterface. Fix submitted by AnshuMishra17 in pull request 16711.
  • Corrected misspelling in library file. Fix submitted by Namrata in pull request 16495.
  • Corrected punctuation in the message displayed on CONTENT > Design > Configuration. Fix submitted by Erik Hansen in pull request 16489.
  • Correct misspellings in Model and library files. Fix submitted by Namarata in pull request 16230.
  • Corrected misspelling in _exportAddressses method name. Fix submitted by Marcel Hauri in pull request 15275.
  • Corrected misspelling in comments for addTaxPercents() in app/code/Magento/Catalog/Model/ResourceModel/Product/Collection.php. Fix submitted by AnshuMishra17 in pull request 15431.
  • Corrected misspelling in abstract.js. Fix submitted by VitaliyBoyko in pull request 15411.
  • Corrected misspellings in app/code/Magento/Sales/Block/Adminhtml/Order/Create/Sidebar/AbstractSidebar.php, app/code/Magento/Ui/view/base/web/js/form/components/fieldset.js, app/code/Magento/Ui/view/base/web/js/form/components/group.js, setup/pub/angular-sanitize/angular-sanitize.js, and setup/pub/angular-sanitize/angular-sanitize.min.js.map. Fix submitted by Danny Verkade in pull request 15715.
  • Corrected misspelling in app/code/Magento/Catalog/Model/Product/Type/AbstractType.php. Fix submitted by Saurabh Parekh in pull request 15519.
  • Corrected misspellings in Multishipping and User modules. Fix submitted by Anna Völkl in pull request 15513.
  • Corrected a misspelling in function comment in app/code/Magento/Paypal/Model/Api/Nvp.php Fix submitted by Namrata in pull request 15302.
  • Corrected misspellings in PHPDocs and comments. Fix submitted by Dmytro Cheshun in pull request 15293.
  • Corrected typo in method name _getCharg[e]ableOptionPrice. Fix submitted by Marcel Hauri in pull request 15276.
  • Corrected typo in database column comment in app/code/Magento/Catalog/Setup/InstallSchema.php. Fix submitted by VitaliyBoyko in pull request 15291.
  • Corrected misspelling in the name of private method \Magento\Catalog\Console\Command\ImagesResizeCommand::getUniq[ue]ImageIndex. Fix submitted by Marcel Hauri in pull request 15282.
  • Corrected typo in the \Magento\Framework\Image::open exception message. Fix submitted by Tom Richards in pull request 15269.
  • Corrected misspelling in ResourceModel\Coupon.php:updateSpecificCoupons. Fix submitted by Stephen Biston in pull request 14891.
  • Corrected typo in the name of the \Magento\Framework\App\Request\Http::removeRepitedSlashes method. Fix submitted by Igor Tripolskiy in pull request 15256.
  • Corrected misspelling in app/code/Magento/CatalogSearch/Block/Advanced/Form.php. Fix submitted by Jeevan M R in pull request 15053.
  • Corrected misspelling in .less files. Fix submitted by Kalpesh Mehta in pull request 15023.
  • Removed double occurrence of ‘it’ from sentences and corrected minor grammar error. Fix submitted by Namrata in pull request 16240.
  • Fixed typo in app/code/Magento/Checkout/etc/webapi.xml. Fix submitted by Markus Haack in pull request 15845.
  • Corrected misspelling in file-uploader.js and storage-manager.js. Fix submitted by Saurabh Parekh in pull request 15888.
  • Corrected misspelling in scripts.js. Fix submitted by Ledian Hymetllari in pull request 15878.
  • Corrected grammar error in the “What is this” tooltip for the Braintree vault tool tip. Fix submitted by kreativedev in pull request 17151.
  • Renamed _requesetd to _requested in app/code/Magento/Ui/view/base/web/js/lib/core/element/element.js. Fix submitted by Valerij Ivashchenko in pull request 16971.
  • Removed double occurrences of words from Magento_Catalog, Magento_Customer, Magento_Downloadable, Magento_Sales, and lib and dev test function comments. Fix submitted by Pratik Oza in pull request 16977.
  • Correct misspelling in method name and result in these files: dev/tests/functional/tests/app/Magento/Checkout/Test/Block/Onepage/Shipping/Method.php and dev/tests/functional/tests/app/Magento/Shipping/Test/Constraint/AssertCityBasedShippingRateChanged.php. Fix submitted by Dmytro Cheshun in pull request 15297.

Minor corrections to code and code formatting

  • Removed extra spaces from Magento/Ui. Fix submitted by Ronak Patel in pull request 16872.
  • Improved code formatting. Fix submitted by Pratik Oza in pull request 16821.
  • Removed comments and unnecessary spaces. Fix submitted by Ronak Patel in pull request 16748.
  • Removed space before ending sentence throughout code base. Fix submitted by Namrata in pull request 16717.
  • Removed unnecessary spaces in app/code/Magento/Catalog/Pricing/Price/ConfiguredRegularPrice.php. Fix submitted by Ronak Patel in pull request 15129.
  • Removed double occurrences of words from the lib and dev test function comments and from these modules: Magento_Catalog, Magento_Customer, Magento_Downloadable, and Magento_Sales. Fix submitted by Namrata in pull request 16644.
  • Removed double occurrences from jQuery, Angular JS files and the Magento_Setup module’s scan function’s comment. Fix submitted by Namrata in pull request 16581.
  • Removed extra space from the value of the is_required XML node in SynonymGroup.xml. Fix submitted by Namrata in pull request 16557.
  • Minor corrections to code throughout the code base. Fix submitted by GraysonChiang in pull request 16841.
  • Removed unused data from app/code/Magento/Ui/Model/Export/ConvertToCsv.php and app/code/Magento/Ui/Model/Export/ConvertToXml.php. Fix submitted by Vishal Gelani in pull request 16524.
  • Removed unnecessary translations for label and comment tags and added missing translation strings. Fix submitted by Yogesh Suhagiya in pull request 16090.
  • Removed redundant plug-in information (dev:di:info). Fix submitted by Alexander Shkurko in pull request 16474.
  • Removed redundant semicolon from these files: app/code/Magento/Tax/Model/Sales/Total/Quote/CommonTaxCollector.phpMagento/Multishipping/Test/Unit/Block/Checkout/SuccessTest.php and app/code/Magento/Tax/Model/Sales/Total/Quote/CommonTaxCollector.php. Fix submitted by Saurabh Parekh in pull request 15594.
  • Corrected errors in method description in app/code/Magento/Config/Block/System/Config/Form.php, app/code/Magento/ConfigurableImportExport/Model/Import/Product/Type/Configurable.php, and app/code/Magento/Customer/Model/Session.php. Fix submitted by Vishal Gelani in pull request 15549.
  • Removed extra space and formatted the code in app/code/Magento/Captcha/i18n/en_US.csv. Fix submitted by Saurabh Parekh in pull request 15552.
  • Removed the redundant else statement in app/code/Magento/ConfigurableImportExport/Model/Import/Product/Type/Configurable.php. Fix submitted by Yaroslav Rogoza in pull request 15435.
  • Fixed misplaced bracket in Option/Type/Text.php. Fix submitted by Valerij Ivashchenko in pull request 16566.
  • Removed a duplicate line and added comment in app/code/Magento/Sales/Block/Adminhtml/Order/Create/Totals/Discount.php. Fix submitted by Vishal Gelani in pull request 15362.
  • Removed unused variable in lib/web/css/source/lib/variables/_typography.less. Fix submitted by VitaliyBoyko in pull request 15386.
  • Corrected variable names in LockAdminUserWhenEditingIntegrationTest and AssertCityBasedShippingRateChanged, among others. Fix submitted by Dmytro Cheshun in pull request 15294.
  • Corrected property name in dev/tests/static/testsuite/Magento/Test/Integrity/Magento/Backend/ControllerAclTest.php. Fix submitted by Dmytro Cheshun in pull request 15292.
  • Removed non-existing argument from the constructor’s comment block in app/code/Magento/Translation/Block/Html/Head/Config.php and added space where needed in app/code/Magento/Translation/Model/Json/PreProcessor.php. Fix submitted by Yogesh Suhagiya in pull request 15249.
  • Removed redundant close tag from app/code/Magento/Review/view/frontend/templates/view.phtml. Fix submitted by Yogesh Suhagiya in pull request 14928.
  • Removed extra spaces from a key-value pair in the en_US.csvlanguage file. Fix submitted by Yogesh Suhagiya in pull request 14896.
  • Cleaned up foreach and break statements in app/code/Magento/Rule/Model/Condition/AbstractCondition.php. Fix submitted by Thomas Klein in pull request 14609.
  • Corrected grammar in README.md. Fix submitted by Stanislav Idolov in pull request 14844.
  • Corrected type hints in Webapi/Controller/Soap/Request/Handler.php and Webapi/Model/Plugin/GuestAuthorization.php. Also corrected case in property annotation in Soap\Server.php and added undefined property _appState in Controller\Soap.php. Fix submitted by Prince Patel in pull request 16626.
  • Corrected Magento\Webapi\Model\Soap\Fault::toXml() method invocation in Soap\FaultTest.php. Fix submitted by Prince Patel in pull request 16626.
  • We’ve removed an unused class from the lib/_forms.less file. Fix submitted by Chirag Matholiya in pull request 15791.
  • We’ve removed unnecessary CSS code from _actions-toolbar.less. Fix submitted by Chirag Matholiya in pull request 15789.
  • We’ve removed the unnecessary double semicolon from the style sheets. Fix submitted by Namrata in pull request 15795.
  • We’ve removed the unused code from docs.less. Fix submitted by Daniel Ruf in pull request 15871.
  • Removed extraneous negative margin on product list and product list items. Fix submitted by Steven de Jong in pull request 15936. GitHub-15308
  • Indentation issues with LESS files have been resolved. Fix submitted by hitesh-wagento in pull request 15811.
  • The syntax for before-after operators in LESS files has been corrected. Fix submitted by Namrata in pull request 16181.
  • Redundant keywords have been removed from miscellaneous files. Fix submitted by Namrata in pull request 16182.
  • We’ve corrected misspellings in the comment section of OrderFixture.php. Fix submitted by Namrata in pull request 16183.
  • Unnecessary leading and trailing spaces have been removed from the customer account login page email field. Fix submitted by Piyush Dankhara in pull request 15365. GitHub-6058
  • Unnecessary leading and trailing spaces have been removed from fields in the customer account create and login forms. Fix submitted by Piyush Dankhara in pull request 16192. GitHub-6058
  • Unnecessary leading and trailing spaces have been removed from fields in newsletter, forgot password, checkout login and email to a friend forms. Fix submitted by Piyush Dankhara in pull request 16564. GitHub-6058
  • Unnecessary leading and trailing spaces have been removed from fields in the customer confirmation form. Fix submitted by Vishal Gelani in pull request 16595. GitHub-6058
  • Removed unnecessary commented code from these files: app/code/Magento/Review/Model/ResourceModel/Rating/Collection.php, app/code/Magento/Sales/Model/Order/Creditmemo.php, lib/internal/Magento/Framework/Data/Form/Element/Checkboxes.php, and lib/internal/Magento/Framework/Model/ResourceModel/Db/Relation/ActionPool.php. Fix submitted by Pratik Oza in pull request 17077.
  • Removed unnecessary spaces from the price value in app/code/Magento/Catalog/view/base/templates/product/price/amount/default.phtml. Fix submitted by Valerij Ivashchenko in pull request 17027.
  • Remove unused comments from _initDiscount() function. Fix submitted by Prince Patel in pull request 17002.
  • Corrected misspellings in multiple files, including app/code/Magento/Catalog/Block/Adminhtml/Product/Attribute/Set/Main/Tree/Attribute.php, app/code/Magento/Catalog/view/adminhtml/web/js/product/weight-handler.js, app/code/Magento/Signifyd/Test/Unit/Controller/Webhooks/HandlerTest.php, app/code/Magento/Ui/view/base/web/js/lib/core/element/element.js, and dev/tests/functional/tests/app/Magento/Widget/Test/Constraint/AssertWidgetCmsPageLink.php. Fix submitted by Pratik Oza in pull request 16980.
  • Corrected formatting of the JavaScript code in the app/code/Magento/Ui/view/base/templates/control/button/split.phtml and app/code/Magento/Ui/view/base/web/js/grid/controls/button/split.jstemplate files. Fix submitted by Yogesh Suhagiya in pull request 14967.
  • Removed redundant @throws hinting and unused import for AdvancedPricingImportExport module classes. Fix submitted by Dmytro Cheshun in pull request 15872.
  • Added missing PHPDoc to methods throughout the code base. Fix submitted by Leandro F. L. in pull request 16215.
  • Fixed mismatches in case between class and method name spellings. Fix submitted by Leandro F. L. in pull request 16141.
  • Removed an unnecessary comma from the translate attribute in app/code/Magento/Sales/etc/adminhtml/system.xml. Fix submitted by Dmytro Cheshun in pull request 15615.

CMS content

  • Page layout issues that resulted from incorrect module sequence have been corrected. Previously, the Magento_theme module was loaded too late, which resulted in unexpected display issues.
  • Corrected use statements and return values in AggregationInterface. Fix submitted by Yaroslav Rogoza in pull request 14893.

Configurable products

  • Customers can now successfully complete checkout when their order contains a configurable product with a configurable option. Previously, customers could not check out when there is a configurable product in the cart with a configurable option, which is now deleted, shopping cart could not be loaded. Fix submitted by jonshipman in pull request 15468. GitHub-15467
  • Magento now displays the manufacturer attribute on the Admin on the Catalog page for configurable products. Previously, Magento displayed these attributes on the simple products catalog page, but not on the configurable products catalog page.
  • Configurable products are now sorted by only visible prices as expected. Previously, sorting a catalog by price resulted in sort results that included the prices of out-of-stock products and disabled child products.
  • When two simple products of a configurable product have different prices, Magento now uses the lowest price as the default price on the product detail page. Previously, if one of the simple products had price=0, Magento did not use it as the default. Fix submitted by Torrey Tsui in pull request 16540.
  • The missing check for a false value has been added to ConfiguredRegularPrice. Previously, when the parent method returned false, Magento threw this fatal error: NOTICE: PHP message: PHP Fatal error: Uncaught TypeError: Argument 1 passed to Magento\Catalog\Pricing\Price\ConfiguredOptions::getItemOptionsValue() must be of the type float, boolean given, called in /app/vendor/magento/module-catalog/Pricing/Price/ConfiguredRegularPrice.php on line 74 and defined in /app/vendor/magento/module-catalog/Pricing/Price/ConfiguredOptions.php:24. Fix submitted by Tibor Kotosz in pull request 15129.
  • Fixed the DocBlock for hasInvoices(), hasShipments(), and hasCreditmemos() in app/code/Magento/Sales/Model/Order.php. Fix submitted by Lyzun Oleksandr in pull request 16554.
  • Fixed type hints and docs for the Downloadable Samples block. Fix submitted by Björn Kraus in pull request 16408.

Cookies

  • Magento now responds to a customer accepting a cookie notice by simply hiding the notice. Previously, Magento reloaded the entire site when a user accepted the cookie notice. Fix submitted by Torben Höhn in pull request 16890.

Customer account

  • Magento no longer logs out a customer after a successful password change.
  • Magento no longer displays the State/Province instead of the State field on U.S. customer address forms.
  • Customer attributes are now correctly validated on the Admin Order form. Previously, Magento validated attributes\length after an order has been submitted, but not on the Admin Order form.
  • Customers no longer lose their session when they switch stores on different domains.
  • Non-U.S. and non-Canadian addresses that are displayed in the Address Book summary field now display the State/Province values as expected if that information was provided.
  • The checkout page no longer displays custom address attributes when Show on frontend is set to no.
  • Magento now displays the default value for a new Customer attribute that is created from the Admin. Previously, Magento set this value to no by default.
  • Administrators can see all customers when the Share Customer Accounts value is set to Global.
  • User login email validation no longer fails if the field contains a leading or trailing space on Internet Explorer 11.x. Fix submitted by Piyush Dankhara in pull request 15365. GitHub-6058
  • Customer accounts are now unlocked as expected after a password reset. Fix submitted by Andrea Gaspardo in pull request 15255. GitHub-15534
  • Magento no longer changes the format of Date of Birth information when this field is enabled on the Create New Customer Account page, and an existing customer tries to re-register. Fix submitted by KaushikChavda in pull request 15272.
  • When saving a customer group, Magento now copies extension attributes to the new data model that is returned. Previously, this action was not completed, and Magento behaved unpredictably. Fix submitted by Joseph Maxwell in pull request 16254.
  • The customer.account.dashboard.info.extra block has been moved to contact information from the newsletter section in app/code/Magento/Customer/view/frontend/templates/account/dashboard/info.phtml. Fix submitted by JeroenVanLeusden in pull request 14923.

Directory

  • You can now configure different Allowed Countries for default and store scopes. Fix submitted by Oleksandr Kravchuk in pull request 16693.

dotmailer

  • The ROI tracking feature now tracks order events properly.

  • The importer now works as expected.

  • Catalog sync now syncs all products across all created collections when it is configured to sync on the store level.

  • The validation process for new subscribers no longer permits subscribers to be enrolled multiple times into the new subscriber program.

  • Unexpected errors during subscriber or customer creation no longer occur.

  • A merchant can now successfully create a new user and displays the appropriate welcome message. Previously, Magento threw an error during the creation of a customer or subscriber, although the new user/subscriber was created.

EAV

  • Magento now displays the fixed product tax attribute label as expected according to the specified store view.
  • Magento now correctly renders multiselect product attributes with a custom source model in adminhtml. Previously, the selected value was saved the first time in the catalog_product_entity_varchar table, and the attribute was added to the eav_attribute table, but the selected options were not highlighted against the attribute.

Frameworks

  • @api annotation has been added to the magento/framework component of the Filter Group and Sort Order classes. Fix submitted by Ronak Patel in pull request 16845.
  • app/code/Magento/Theme/etc/di.xml now uses Translate instead of TranslateInterface. Fix submitted by Wouter Samaey in pull request 17124.
  • Classes with methods that contain variadic arguments can be also used in proxy classes. Fix submitted by Vishal Gelani in pull request 16080.
  • The annotation in _toOptionArray - lib\internal\Magento\Framework\Data\SearchResultProcessor.php has been corrected. Fix submitted by Namrata in pull request 15892.
  • Scheduled XML sitemap generation now works as expected. Previously, you could schedule sitemap generation (Admin > Store > Configuration > Catalog > XML sitemap), but Magento would not generate the sitemap. Fix submitted by James Halsall in pull request 14822. GitHub-5768
  • 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 Rodrigo Mourão in pull request 14800. GitHub-5726
  • The trigger_recollect quote attribute no longer causes a time out. Fix submitted by Philipp Sander in pull request 14719. GitHub-9580
  • Framework\Math\Random now uses PHP 7.x features, including random_bytes and random_int.
  • The catalog:image:resize command execution time has been reduced by up to 90% in the release. However, this improvement necessitates these additional steps after upgrading your Magento instance to 2.2.6:

    • Remove pub/media/catalog/product/cache. (Removing this folder frees up space.)

    • Run bin/magento catalog:image:resize to generate a new image cache. (This step is necessary because we’ve changed the path to cached images and must remove the previously cached images.)

  • We’ve fixed a display error that occurred when both a Critical Admin Notification and Release Notification window were opened.
  • Changes that were made to file permissions for lib/internal/Magento/Framework/View/Asset/Merged.php and its associated test that were made in an earlier release have been reverted. Fix submitted by Ihor Sviziev in pull request 16937.
  • The constructor in Magento\Webapi\Model\Soap\Fault.php now assigns $exception->getOriginator() to _soapFaultCode instead of to the dynamical property _soapCode. Fix submitted by Marcel Hauri in pull request 15515.
  • Corrected annotation in _toOptionArray in lib/internal/Magento/Framework/Data/Collection/AbstractDb.php. Fix submitted by Sanjay Patel in pull request 15336.
  • The invoice table now displays the correct shipping and handling for a partial items invoice. Fix submitted by Ankur Raiyani in pull request 14795.
  • The return values from the usort and value_compare_func function now matches the PHP documentation for these functions. Fix submitted by luke-denton-aligent in pull request 14726.
  • MySQL adapter can now reconnect successfully when using a nonstandard port. Previously, Magento threw this error, Port must be configured within host parameter. Fix submitted by Julien ANQUETIL in pull request 14753.

Application framework

  • You can now manually add a parameter to app/etc/env.php: user_admin_email. When an administrator is created, Magento sends an email to default store’s email and, if present, to the email address defined in user_admin_email.
  • Magento now removes unneeded PDF files after generation. Previously, Magento saved a copy of every generated invoice PDF in /var. Fix submitted by Yaroslav Rogoza in pull request 16401. GitHub-3535, GitHub-14517
  • Logs now indicate when Magento is in maintenance mode, which will help the debugging process. Fix submitted by Ethan Yehuda in pull request 16840.

JavaScript framework

  • lib/web/mage/dropdowns.js no longer fails when autoclose is set to true. Fix submitted by Brian LaBelle in pull request 15499. GitHub-15469
  • You can now view an entire zoomed product image in Fotorama fullscreen from the FireFox browser. Previously, the image jumps and the user cannot view all portions of the image. GitHub-7978

Web API framework

  • The array_push function has been added to the list of forbidden functions. Fix submitted by Leandro F. L. in pull request 16144.
  • A generated admin API token no longer expires immediately. Previously, when you created a token for an Admin user and have set Admin Token Lifetime (hours)) to empty, Magento denied access because the token immediately expired. Fix submitted by Maikel Martens in pull request 15598. GitHub-15564
  • The GET /V1/returns?searchCriteria endpoint retrieves tracks arrays as expected.
  • The GET /V1/returns/:id endpoint retrieves tracks arrays as expected.
  • catalogProductAttributeRepository now returns the frontend_labels value as expected.

Cache framework

  • Magento no longer throws an exception when deploying static content on a deployment where Redis is used for cache management. GitHub-9287
  • When a layout is loaded from the cache, Magento now repopulates the list of applied layout handles to prevent any chance of a layout handle being reapplied later. Fix submitted by Scott Buchanan in pull request 12314.

Dashboard

  • The dashboard now displays the correct order amount on orders when deploying Magento on multiple storefronts with different currencies. Fix submitted by Ankur Raiyani in pull request 15661. GitHub-15660

Directory

  • Magento now supports seven-digit Israeli postal code masks. Fix submitted by Itay Raz in pull request 16250.

General

  • 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.
  • 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.
  • You can now successfully save a product video for one store view in deployments that have several store views. Previously, when you saved a product video for one store view, Magento saved it for all store views, although customers could play the video on the original store only.
  • 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
  • We’ve fixed an issue with unoptimized SQL queries in customer segments. Previously, the customer segment was not saved, and MySQL crashed.
  • 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 My Invitations page now accurately displays the reward points amount in numbers. Previously, this page displayed the special character % instead of numbers.
  • The Enterprise Reward refund logic no longer permits administrators to grant double refunds.
  • We moved the isAllowed method from AccessChangeQuoteControl to a separate service to optimize the logic that supports using recurrent payments in combination with pre-ordered products. Fix submitted by Jeroen Van Leusden in pull request 12566.
  • The attribute checking logic has been optimized by reducing redundant checks. Fix submitted by Freek Vandeursen in pull request 11554.
  • Magento no longer validates customer address attribute value length when the minimum/maximum length fields are not displayed on the Admin.
  • The dropdown menu is now positioned as expected under the link on the UI Component listing. Fix submitted by Ankur Raiyani in pull request 15661. GitHub-15660
  • The timestamp field now includes indexes, which reduces the chances of deadlocks that can occur while erasing old records. Fix submitted by Carlos Lizaga in pull request 13328. GitHub-10346
  • setCateroryIds([]) has been corrected to setCategoryIds([]) throughout the test suites. Fix submitted by Neeta Kangiya in pull request 15621. GitHub-15590
  • Menus with nested elements now align correctly. Fix submitted by hitesh-wagento in pull request 15645. GitHub-7897
  • An administrator can now successfully download a PDF or export data immediately after log in. Previously, an administrator could not download a PDF or export data successfully after log in, but was redirected to the Admin dashboard. Fix submitted by Riccardo Tempesta in pull request 15539. GitHub-15510
  • Merchants can now apply styling by changing LESS variables in the Luma theme as expected. Fix submitted by hitesh-wagento in pull request 15734. GitHub-15608
  • Added a service configuration setting—Send Adminhtml and Frontend as Separate Apps—to collect and send separate data for frontend and adminhtml applications for New Relic reporting. See New Relic Reporting. Fix submitted by Max Chadwick in pull request 12935.
  • 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 Admin > 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 Maksim Gopey in pull request 15826.
  • .limiter now has the same parent selectors as .pages, which prevents clashes between styles and layouts. Previously, .limiter float was too generic. Fix submitted by hitesh-wagento in pull request 15878.
  • The default FormElementDependenceController configuration is now extended by custom configuration rather than overridden. Fix submitted by Valerij Ivashchenko in pull request 16001.
  • inline-block issues with space and font-size in the Name form have been resolved. Fix submitted by Daniel Ruf in pull request 16048.
  • Alignment and layout issues on home and category pages of the Hot Seller section have been resolved. Fix submitted by Chirag Matholiya in pull request 15893. GitHub-15213
  • Updated old font formats of the default fonts (woff and woff2). Fix submitted by Daniel Ruf in pull request 15870. GitHub-15213
  • We’ve corrected the return type of methods and typos in CategoriesJson.php, Engine.php, UrlRewrite.php, and ObserverConfig.php. Fix submitted by Saurabh Parekh in pull request 15993.
  • @escapeNotVerified annotations were replaced in name.phtml and qty.phtml. Fix submitted by Riccardo Tempesta in pull request 15532. GitHub-15501
  • We’ve removed redundant function calls in app/code/Magento/CurrencySymbol/view/adminhtml/templates/grid.phtml. Fix submitted by Saurabh Parekh in pull request 15346. GitHub-15355
  • 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.) Fix submitted by Kacper Chara in pull request 15382. GitHub-4977
  • The Change Password warning message no longer appears twice. Fix submitted by Sanjay Patel in pull request 15774. GitHub-14895
  • You can now add the NOINDEX,NOFOLLOW meta tag to the admin scope to instruct Google and other friendly bots to refrain from adding the Admin URL to search results. Fix submitted by Itay Raz in pull request 17163.
  • The Create Account and Password Forget forms now include the required notice for relevant fields. Fix submitted by Daniel Ruf in pull request 16965.
  • Reworked the addError, addSuccess methods in several files. Fix submitted by Tiago Sampaio in pull request 16921.
  • Minor improvements to app/code/Magento/CatalogRule/Model/Rule/Job.php and app/code/Magento/GroupedProduct/Model/Product/Initialization/Helper/ProductLinks/Plugin/Grouped.php. Fix submitted by Vladymyr Hrivinskyi in pull request 16900.
  • Refactored app/code/Magento/User/Controller/Adminhtml/ by removing the direct use of ObjectManager and included the dependencies using constructor dependency injection. Fix submitted by AnshuMishra17 in pull request 16560.
  • gallery.less no longer imports _responsive.less. Fix submitted by Karla Saaremäe in pull request 16579.
  • Added missing width property for the confirmation modal in lib/web/css/source/components/_modals.less. Fix submitted by Vladymyr Hrivinskyi in pull request 16861.
  • Removed the redundant font-size attribute from the toolbar pager in lib/web/css/source/lib/_utilities.less. Fix submitted by Karla Saaremäe in pull request 16716.
  • Updated the “Reporting security issues” section of README.md to recommend that users create a bugcrowd account. Fix submitted by Tommy Quissens in pull request 16685.
  • The currency format that was previously broken for some locales now works as expected. Previously, broken currency formats resulted in an incorrect price amount on the product page. Fix submitted by Vishal Gelani in pull request 15909. GitHub-11717
  • Changed the My Dashboard string to My Account in multiple files. Fix submitted by Daniel Ruf in pull request 16009.
  • Corrected the annotation to the formatDateTime function in lib/internal/Magento/Framework/Stdlib/DateTime/TimezoneInterface.php file. Fix submitted by Sanjay Patel in pull request 15602.
  • The clickableOverlay option now works as expected. Fix submitted by virtua-pmakowski in pull request 15172. GitHub-7399
  • The Instant Purchase module now works as expected. Previously, the get($type) method in /Magento/InstantPurchase/Model/ShippingMethodChoose/DeferredShippingMethodChooserPool.php threw an exception without showing the shipping method $type as it was hardcoded as ‘chooser’. Fix submitted by Marcel Hauri in pull request 15258.
  • Template files now follow Magento standard coding format. Fix submitted by Vishal Gelani in pull request 15398.
  • Corrected viewModel to view_model where needed in \Magento\Backend\Block\Template. Fix submitted by Abhishek Jakhotiya in pull request 15067.
  • Non-well-formed numeric values that were encountered in app/code/Magento/Directory/Model/Currency.php have been resolved. Fix submitted by Mateusz Lerczak in pull request 14833.
  • The README file for the magento2 repository now has Maintainers and Contributors sections. Fix submitted by Stanislav Idolov in pull request 14790.
  • The documentation for AdapterInterface::update has been improved. Fix submitted by Navarr Barnier in pull request 14769.
  • The product video feature is now GDPR-compliant.

Gift cards

  • Magento now displays the Credit Memo link at the top of the page for orders with a total of 0 (zero). Previously, this link was missing, which prevented users from creating a credit memo for the order.
  • You can now save gift cards without the price being 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 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 the system.log.
  • Orders now retain gift message information on both item and order level. Previously, gift messages disappeared from an order when a customer logged into his account during checkout.
  • Magento now maintains relationships between new gift card accounts when a customer purchases several gift cards in the same order.
  • Magento now refunds only the exact amount used on a gift card if only the part of the gift card was used. Previously, when a customer used a gift card account code to partially pay for an order, and Magento subsequently created a credit memo for a portion of the order, the full amount of the gift card was refunded.
  • Magento now generates the same number of gift card codes when the full order is invoiced as the customer selected when creating an order. Previously, for orders that included both physical products and multiple gift cards, the number of gift card codes generated on an order corresponded to the quantity of the previous physical line items that the user had added to the cart before adding gift cards.

Gift message

  • Orders now retain gift message information on both item and order level. Previously, gift messages disappeared from an order when a customer logged into his account during checkout.

Google Analytics

  • Google analytics pageview is no longer triggered twice. Fix submitted by Torben Höhn in pull request 15765. GitHub-12221
  • Magento\GoogleAnalytics\Observer\SetGoogleAnalyticsOnOrderSuccessPageViewObserver is now covered by unit tests. Fix submitted by Yaroslav Rogoza in pull request 17137.

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 Analytics events are now triggered as expected. Specifically, the addToCart and removeFromCart events are not triggered until after a customer adds a product to the mini cart.
  • Magento now accurately updates the mini cart when a customer removes a product while accessing a storefront using Internet Explorer 11.x. Previously, when a customer removed a product from the mini cart, Magento did not remove the product but instead threw this error, (SCRIPT438: Object doesn't support property or method 'find'. File: sidebar.js, Line: 237, Column: 13 ).
  • 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.

HTML

  • Responsive table headers now work as expected. Previously, when no heading was present in the data-th attribute on a column for a responsive table in Magento, only a colon was present. Fix submitted by Sean Templeton in pull request 16517.
  • Corrected HTML syntax in the report.phtml error template. Fix submitted by abcpremium in pull request 15454.

Import/export

  • Product import now updates the Enable Qty Increments field as expected. Fix submitted by Sergey P in pull request 14379. GitHub-14351
  • Magento_ImportExport now supports unicode characters in column names. Previously, column names such vitamin_a_µg were marked invalid. Fix submitted by Timon de Groot in pull request 15197.

Infrastructure

  • 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.
  • The RMA status label now shows on the email that Magento sends to customers when the status of an RMA changes.
  • 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.
  • Magento now deploys the translations in js-translation.json file when deploying static content. Fix submitted by Sergey Dmitruk in pull request 4814.
  • Magento now updates the Enable Qty Increments field as expected during product import. Fix submitted by Alexander Lukyanov in pull request 15144. GitHub-11354
  • We’ve expanded the HTTP request class by adding the isPostRequest method. Fix submitted by Pavel Usachev in pull request 12626.
  • You can now change only the primary button font-weight without changing regular button font-weight with LESS variables. Fix submitted by Karla Saaremäe in pull request 16012. GitHub-15832
  • We’ve added missing properties to the Magento/Widget component and removed a reference to a non-existent class in the associated tests. Fix submitted by Marcel Hauri in pull request 15647.
  • We’ve improved the readability of app/code/Magento/Backend/Block/Widget/Form/Element/Dependence.php. Fix submitted by Valerij Ivashchenko in pull request 16010.
  • Template syntax errors in app/code/Magento/Theme/Block/Html/Breadcrumbs.php have been corrected. Fix submitted by Namrata in pull request 15339. GitHub-15345
  • The calendar widget (jQuery UI DatePicker) now correctly displays more than one month. Fix submitted by Burlacu Vasilii in pull request 16279. GitHub-7379
  • An error with the template notation for Magento_CatalogWidget module has been fixed. Fix submitted by Namrata in pull request 16530. GitHub-16529
  • You can now use the addTabAfter method to add two or more tabs to the Admin (for example, the Order View page) in the expected order. Previously, Magento did not preserve the correct sort order for the new tabs. Fix submitted by Tiago Sampaio in pull request 16175. 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 16704. GitHub-16703
  • We’ve added @navigation-level0-item__hover__color missing variable for mobile and tablet view. Fix submitted by hitesh-wagento in pull request 16732. GitHub-15848
  • 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. Fix submitted by Oleksandr Kravchuk in pull request 16732. GitHub-6504
  • HTML minification now works as expected. Fix submitted by Ronak Patel in pull request 16916. GitHub-5316
  • The type of the transport event parameter has been changed to DataObject. This change reverts a change from type DataObject to Array() made in a previous release. Fix submitted by gwharton in pull request 16599. GitHub-10210
  • Transport variable can now be altered in the email_invoice_set_template_vars_before event. Fix submitted by gwharton in pull request 15040. GitHub-10210
  • Replaced deprecated methods in the app/code/Magento/CatalogRule/Controller/Adminhtml/Promo/Catalog/ApplyRules.php, app/code/Magento/CatalogRule/Controller/Adminhtml/Promo/Catalog/Delete.php, app/code/Magento/CatalogRule/Controller/Adminhtml/Promo/Catalog/Edit.php, app/code/Magento/CatalogRule/Controller/Adminhtml/Promo/Catalog/Save.php, and app/code/Magento/CatalogRule/Plugin/Indexer/Product/Attribute.php. Fix submitted by Tiago Sampaio in pull request 17227.
  • Replaced deprecated methods in 44 files. Fix submitted by Tiago Sampaio in pull request 17035.
  • The template.js has been updated to make the jquery variable consistently use $. Previously, JavaScript in the template.js sometimes used jquery and sometimes $, and Magento threw an error when running in Internet Explorer. Fix submitted by Angelo Maragna in pull request 17129.
  • Corrected an undefined class property in the app/code/Magento/Backend/Block/Media/Uploader.php getConfigJson() method. Fix submitted by Prince Patel in pull request 17099.
  • Corrected sticky footer in page-main container height on mobile devices. Fix submitted by Denis Belevtsov in pull request 17006. GitHub-15118
  • Corrected the return type of methods in app/code/Magento/Catalog/Controller/Category/View.php, app/code/Magento/CatalogSearch/Model/Indexer/Fulltext/Action/DataProvider.php, and app/code/Magento/CatalogSearch/Model/ResourceModel/EngineInterface.php. Fix submitted by Pratik Oza in pull request 16988.
  • Style groups for mobile devices (max-width) are now specified in the correct order. Fix submitted by Tejash Kumbhare in pull request 16959. GitHub-14476
  • Corrected the namespace that is defined in compare.phtml. Fix submitted by Ronak Patel in pull request 16978.
  • Edited verbose code in app/code/Magento/Customer/Controller/Account/LoginPost.php. Fix submitted by Glenn Cheng in pull request 16928.
  • Fixed annotations in the following methods: lib/internal/Magento/Framework/Acl/AclResource/Config/Converter/Dom.php, lib/internal/Magento/Framework/Acl/AclResource/Config/SchemaLocator.php, and lib/internal/Magento/Framework/Acl/Loader/ResourceLoader.php. Fix submitted by Tiago Sampaio in pull request 16899.
  • Removed or edited code comments in the following files:

    • app/code/Magento/Backend/Block/Dashboard/Bar.php

    • app/code/Magento/Catalog/Setup/InstallData.php

    • app/code/Magento/Newsletter/Block/Adminhtml/Template/Edit.php

    • app/code/Magento/Review/Block/Adminhtml/Add/Form.php

    • app/code/Magento/Sales/Model/Order/Creditmemo.php

    • app/code/Magento/Sales/view/adminhtml/templates/order/totals.phtml. Fix submitted by Pratik Oza in pull request 16891.

  • Improved product gallery block helper code (app/code/Catalog/Block/Adminhtml/Product/Helper/Form/Gallery.php). Fix submitted by Valerij Ivashchenko in pull request 16889.
  • Removed duplicated string from app/code/Magento/ProductVideo/i18n/en_US.csv. Fix submitted by Valerij Ivashchenko in pull request 16882.
  • Refactored code in dev/tests/static/framework/Magento/Sniffs/NamingConventions/ReservedWordsSniff.php so that an undefined index warning is no longer triggered when using uppercase reserved word Fix submitted by Freek Vandeursen in pull request 16785.
  • Regex in ControllerAclTest::getControllerPath() has been changed to avoid classes that are under a namespace with a controller component (such as controller plugins) being interpreted as controllers. Fix submitted by Freek Vandeursen in pull request 16707.
  • Knockout template files now include a title attribute in the img tag. Fix submitted by Namrata in pull request 16691.
  • Added title attribute to links as needed for compatibility with w3c standards to these files: app/code/Magento/Backend/view/adminhtml/templates/page/header.phtml, app/code/Magento/Backend/view/adminhtml/templates/widget/form/element/gallery.phtml, app/code/Magento/Theme/view/frontend/templates/html/bugreport.phtml, app/code/Magento/Theme/view/frontend/templates/html/header/logo.phtml, and app/code/Magento/Ui/view/base/web/templates/block-loader.html. Fix submitted by Namrata in pull request 16689.
  • Search icons are now defined by header icon variables. Fix submitted by Karla Saaremäe in pull request 16559.
  • Module namespace is now defined before template path name. Previously, when we overrode any core block to any custom module, Magento threw an error because trying to find the template file in the custom module if the module namespace is not defined before the template path. Fix submitted by Prince Patel in pull request 16576.
  • Corrected the comment for the Magento_Setup module includeClasses function. Fix submitted by Namrata in pull request 16549.
  • The module:status command now clearly provides an easily parsed listing of all enabled and disabled modules. Fix submitted by Jisse Reitsma in pull request 15543.
  • Fixed the false value for the cache_lifetime argument in Magento/Swatches/view/frontend/layout/checkout_cart_configure_type_configurable.xml. Fix submitted by yuriyDne in pull request 16086.
  • CSRF tokens are now considered sensitive strings. Fix submitted by Robert in pull request 13509.
  • Refactored JavaScript code in popup.phtml and popup.js. Fix submitted by IvanPletnyov in pull request 16216.
  • Removed extraneous cursor property. Fix submitted by Daniel Ruf in pull request 15305.
  • app/code/Magento/Marketplace/view/adminhtml/templates/partners.phtml now uses the stored value of the getPartners method instead of calling same method again. Fix submitted by Saurabh Parekh in pull request 15517.
  • Added missing lowercase conversion on grouped product assignation. Fix submitted by Juan Alonso in pull request 15312.
  • Removed code responsible for multiple add-to-cart initializations when Magento loads the product listing. Fix submitted by Vova Yatsyuk in pull request 15409.
  • Refactored JavaScript code from popup.phtml to meet Magento coding standards. Fix submitted by Rahul Kachhadiya in pull request 15341.
  • Removed redundant PHPdoc comment and deprecated private method getSerializer in \Magento\Customer\Model\Customer\NotificationStorage class. Fix submitted by adrian-martinez-interactiv4 in pull request 15262.
  • CSS code is now automatically updated in the browser. Previously, users had to press CTRL+F5 to see CSS changes. Fix submitted by Alexander Lukyanov in pull request 15144. GitHub-11354
  • Concrete type hints for product and category resources have been added to app/code/Magento/Catalog/Model/Category.php and app/code/Magento/Catalog/Model/Product.php to help with static analysis and IDE autocompletion. Fix submitted by Yaroslav Rogoza in pull request 15136.
  • Replaced rand with rand_int in several modules. Fix submitted by Daniel Ruf in pull request 15017.
  • Optimized if-condition in /Magento/Catalog/Controller/Adminhtml/Product/Initialization/Helper/AttributeFilter.php. Fix submitted by Valerij Ivashchenko in pull request 15002.
  • We’ve upgraded to Node.js 8 from Node.js 6. Fix submitted by Daniel Ruf in pull request 15018.
  • Replaced template/path with Module_Name::template/path in the block class to ensure extensibility of the class. Previously, if the source block classes referenced a template without specifying the module name, then block render failed with this error: Invalid template file. Fix submitted by Abhishek Jakhotiya in pull request 14946.
  • Replaced the \Magento\Backend\Helper\Data parameter with \Magento\Backend\Model\UrlInterface to make them identical with the constructor. Fix submitted by Abhishek Jakhotiya in pull request 14946.
  • The return type of addToCartPostParams in app/code/Magento/Catalog/Block/Product/ListProduct.php has been changed to array. Fix submitted by Sean Templeton in pull request 14946.
  • Datepicker now correctly converts date formats in locales other than en-US. Fix submitted by Tao Sasaki in pull request 14627.
  • default_head_blocks.xml now contains the order attribute for setting the load order of stylesheets. Fix submitted by Tao Sasaki in pull request 14290.
  • Magento now displays validation messages on the advanced search form as expected if you submit the advanced search form without entries. GitHub-8131
  • \Magento\Framework\Reflection\TypeProcessor methods have been simplified.
  • Magento no longer unsets the taxed shipping total information before returning the total tax.

JavaScript

  • Refactored the JavaScript code of the button split widget. Fix submitted by amittiwari024 in pull request 15351. GitHub-15354

Klarna

  • Magento no longer throws multiple JavaScript errors when a customer selects Klarna from the Review & Payments page.

Module Manager

  • Module Manager module grid now works as expected. Fix submitted by Alex Gusev in pull request 15211. GitHub-15192

Newsletter

  • 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.
  • Magento now correctly updates newsletter subscriptions when the customer is registered on two stores. Previously, when the customer tried to subscribe to the newsletter from a second store, Magento displayed this message, You are (not) subscribed to "General Subscription".
  • The newsletter subscription confirmation message does not display after a customer clicks the link that is included in the confirmation email. Fix submitted by Kaushik Chavda in pull request 15247. GitHub-14747
  • Magento now sends a confirmation request email to the customer when she unsubscribes to a newsletter. Fix submitted by Lyzun Oleksandr in pull request 15464. GitHub-15218
  • Removed the direct use of the object manager and loaded the dependency via constructor dependency injection in app/code/Magento/Newsletter/Controller/Adminhtml/Subscriber/MassDelete.php and app/code/Magento/Newsletter/Controller/Adminhtml/Subscriber/MassUnsubscribe.php. Fix submitted by AnshuMishra17 in pull request 16851.
  • Newsletter registration now works the same when registered customers subscribe from My Account and or from the newsletter block. Fix submitted by Lyzun Oleksandr in pull request 15479.
  • Removed the redundant return statement from getJsTemplateName function comment in the Magento_Newsletter’s block file. Fix submitted by Namrata in pull request 16645.

Payment methods

Braintree

  • You can now cancel an order that was placed with Braintree when the Braintree authorization had expired.
  • All invoices now have the merchant account ID set in the store configuration for the Braintree payment method. Previously, the default merchant account ID was sent to Braintree for any subsequent partial order invoices after the initial invoice is generated.
  • Braintree configuration (app/code/Magento/Braintree/etc/adminhtml/system.xml) now contains showInStore attributes. Fix submitted by Andreas Schrammel in pull request 16458.
  • Magento now retains the correct address information when a customer using Braintree’s Pay with PayPal button to complete an order navigates back to the shipping step and changes the shipping address fields. Fix submitted by Vova Yatsyuk in pull request 15133.

PayPal

  • Customers can now continue creating an order after a PayFlow Pro payment has been declined. Previously, under these circumstances. the customer could not continue his purchase.
  • Paypal Onboarding has been configured to work for merchants from countries other than the United States.
  • Magento now accurately displays the status of PayPal orders. Previously, the status of PayPal orders was displayed only as Processing.
  • Magento no longer sends duplicate order confirmation emails when a customer uses PayPal Express to complete an order. Fix submitted by Rocket Web in pull request 14820.
  • Tax amount calculation for payments processed through PayPal now works as expected. Previously, Magento sent the wrong amount to PayPal when a discount was applied to an order.
  • The Allmethods config source model now reports the full list of payment methods as expected. Fix submitted by Manuel Schmid in pull request 15032. GitHub-13460
  • You can now cancel an order placed through Cybersource when the fraud filters are triggered.
  • Magento now emails customer order confirmations for orders that are placed through Worldpay.
  • Magento now correctly applies free shipping to an order after the customer applied the free shipping code during checkout.
  • Magento no longer sends Admin orders to Signifyd for review when Signifyd is disabled on the website on which the administrator is logged in.
  • 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.
  • Magento now sends email about payment failures to customers. Previously, Magento did not send a customer email, but instead logged an error in support.log, and displayed this message on the storefront, Transaction has been declined. Please try again later.
  • Magento no longer throws an error when multiple payment methods are enabled. Previously, when a merchant tried to enable more than one payment method from the Admin, Magento displayed this error in the console, Found elements with non-unique id billing-address-form. Fix submitted by Neeta Kangiya in pull request 15349. GitHub-15348
  • Magento now sends order confirmation emails as expected for orders purchased with WorldPay.
  • A type error in the payment void method of the Authorizenet module has been fixed. Fix submitted by Oleh Kravets in pull request 16194. GitHub-16184

Pagecache

  • Full-page cache now works as expected in multistore deployments. Previously, when you opened the URL of a non-default store in a multistore deployment, full-page cache did not return the URL.

Performance

  • 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.
  • Merchants can now improve store performance by disabling Magento Report functionality if business function does not require this capability. A new configuration setting (System Configuration: General > Reports > General Options) allows merchants to disable Magento Reports, which is recommended practice if a merchant’s business function does not require this capability.
  • You can change store locale without the exporting and importing configuration process. While Magento is in Production and the SCD_ON_DEMAND is enabled, the Magento store and admin locale options are available. See Change locales.
  • The time required to load category or product pages for products that are configured with many attributes (more than 500) has been significantly reduced. Refactoring the logic for product attribute retrieval has resulted in a reduction of load time of almost 90% for certain scenarios.
  • The time required to load a store’s home page has been reduced noticeably when the top menu contains many categories. (Load time is still affected by the number of categories and the structure of the top menu.)
  • The speed of catalog price rule save operations has been improved by these changes:

    • elimination of unnecessary reindexing

    • improvement to the way that the getMatchingProductIds function fetches products, which has eliminated unnecessary checks of the data set. Fix submitted by Andrey Zabara in pull request 14707.

  • The ID to SKU lookup process for tier prices has been optimized. Previously, with a large number of tier or group prices, each tier would separately make a database query to look up the associated SKU. Fix submitted by Todd Christensen in pull request 14699.

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.

Quote

  • 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 was edited or updated. Fix submitted by Riccardo Tempesta in pull request 14904. GitHub-14869
  • 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 the sales_order and quote tables. Fix submitted by George Schiopu in pull request 14976. GitHub-10395
  • Coupon codes now work for guest users through the web API as well as from the storefront. Fix submitted by Marcin Dykas in pull request 15320. GitHub-14056
  • Magento no longer runs an SQL query on every item in the database when a quote is empty, which has improved the performance of the checkout process. Fix submitted by Sean Templeton in pull request 16675.

Reports

  • The timezone has been removed from the date when Magento retrieves the current month from a UTC timestamp. Fix submitted by Prince Patel in pull request 16584. GitHub-15940

Review

  • Removed the unused class declaration from controller’s index action and the unused code in the comment block from the template file in app/code/Magento/Review/view/frontend/templates/redirect.phtml and app/code/Magento/Version/Controller/Index/Index.php. Fix submitted by Yogesh Suhagiya in pull request 15173.

Rule

  • A cart rule that uses a subselection condition now works as executed. Previously, cart rules with this condition automatically granted a discount.
  • The retrieval of first array elements in the following files has been improved: app/code/Magento/Rule/Model/Action/AbstractAction.php and app/code/Magento/Rule/Model/Condition/Combine.php. Fix submitted by Thomas Klein in pull request 16053. GitHub-15940
  • 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 eventually crashed. Fix submitted by Keith Bentrup in pull request 15265. GitHub-15121

Sales

  • Order status now remains in the Complete state after Magento refunds store credit on a partial credit memo. Previously, under these circumstances, Magento changed the status of the order to Closed.
  • You can now create multiple credit memos in one session and save each successfully. Previously, Magento displayed this error when you tried to save a second credit memo after creating the first memo: Could not save credit memo.
  • Magento now displays any errors that occur during order creation in the browser console. Previously, Magento displayed this message: Uncaught ReferenceError: order is not defined during order creation instead of a specific error message.
  • The POST /V1/shipment endpoint processes tracks arrays as expected.
  • Magento no longer reverts to the country associated with the default website when a customer edits the billing address for an order. Previously, if a customer edited the shipping address for an order, Magento would reset the billing address to the default address specified for the default website.
  • Credit memo email template file incorrect object types have been corrected. Previously, when a merchant created a credit memo and checked the Email checkbox, Magento threw an error. Fix submitted by Joseph Maxwell in pull request 16438.
  • Performance issues that resulted from disabling invoice emails have been resolved.
  • The Invoices grid now reflects changes in invoice state as expected. Fix submitted by JeroenVanLeusden in pull request 16286.
  • You can now set the is_visible_on_front parameter from the addStatusHistoryComment of the order mode. Previously, you could set the is_visible_on_front parameter from the Admin only. Fix submitted by Mark Shust in pull request 15637.
  • Module name space is now declared before the template pathname in Magento_Sales::order/info.phtml. Fix submitted by Ronak Patel in pull request 16206.
  • The addFieldToFilter has been added to addressCollection in app/code/Magento/Sales/Setup/UpgradeData.php, which optimizes the process of collecting addresses during upgrade. Fix submitted by Dmytro Cheshun in pull request 15615.
  • Invoice prefixes now contain the correct store ID when Magento is deployed in a multistore environment. Previously, Magento always created the invoice number using the default store view ID. Fix submitted by Sanjay Patel in pull request 15615. GitHub-14063
  • The GET /V1/orders/items/{id} request now returns parent_item. Fix submitted by Sanjay Patel in pull request 15615.

Sales rules

  • Cart price rules with associated coupons are no longer affected by edits to scheduled updates.
  • The discount label in the app/code/Magento/SalesRule/view/frontend/web/js/view/summary/discount.js file is now compatible with custom module discount. Fix submitted by Rodrigo Santellan in pull request 16093.
  • 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 Julien ANQUETIL in pull request 14839. GitHub-14274
  • Customers can now use the Enter key to submit searches from a page header. Previously, when a customer used the Enter key to submit a search query, event handlers that were bound to the form submit (through jQuery) were fired twice. Fix submitted by Amjad M in pull request 15340. GitHub-13793
  • Swagger now handles searchCriteria-related requests as expected. Fix submitted by Jakub in pull request 15040. GitHub-15322
  • The Admin panel search now filters catalogs as expected. Previously, if a merchant tried to narrow a search when using the Search tool in the Admin panel, Magento displayed the full catalog view without narrowing down the list. Fix submitted by Pavel in pull request 12735. GitHub-7861
  • 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 Riccardo Tempesta in pull request 14905. GitHub-14855
  • 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 Ben Robie in pull request 16952. GitHub-8131
  • Server load has been reduced for advanced searching. Previously, when a customer entered text in the search suggestion box, Magento immediately sent every character to the server. The auto-complete box now delays sending the request. Fix submitted by Sean Templeton in pull request 16669.
  • You can now successfully clone the minisearch widget. Fix submitted by Daniel Ruf in pull request 15485.

Shipping

  • A method with a misspelled name was deprecated and the new method with correct spelling added to app/code/Magento/Multishipping/Block/Checkout/AbstractMultishipping.php. Fix submitted by Anna Völkl in pull request 15514.

Store

  • Magento now adds the correct store code to product URLs in stores with more than one store view when Stores > Settings > Configuration > General > Web > Add Store Code to Urls is set to yes. Fix submitted by Elias Kotlyar in pull request 15566. GitHub-15565
  • Magento now displays store views as expected when you select Stores > Terms and Conditions. Fix submitted by afirlejczyk in pull request 14546. GitHub-13944

Elasticsearch

  • Bundle products are now indexed as expected in Elasticsearch.
  • Elasticsearch now correctly calculates the relevance of quick search results according to selected attribute search weights.
  • 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).
  • The Admin global search now returns results that match the keyword for all available pages, or if a user searches in specific sections, the search feature now returns only the results that matched the key words in those specific sections. Previously, the Admin global search did not return results that matched the specified keywords and did not restrict results to specified sections.
  • Catalogs are now correctly filtered by the Admin search bar. Previously, if you attempted to use the Search tool in the Admin, and selected “XX in Products”, Magento displayed the full catalog view without narrowing down the list. Fix submitted by Pavel in pull request 12735. GitHub-12193, GitHub-7861

Shipping

You can find Magento Shipping-specific release notes in Magento Shipping Release Notes.

  • 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 shipping progress dates displayed in tracking popup for FedEx shipping are now accurate.

Sitemap

  • Sitemaps generated by cron no longer display /pub/ in image URLs when docroot is set to /pub. Previously, if the docroot was set to pub and BASE MEDIA URL was not set, the cron-generated sitemap generated incorrect image URLs.
  • Magento now generates correct product URLs for sitemaps. Previously, when the Use Categories Path for Product URLs attribute was set to no in Configuration > Catalog > Search Engine Optimization, Magento generated the wrong product URL in the sitemap.
  • Images in XML sitemap are no longer always linked to the primary store in a multistore deployment. Fix submitted by Steven de Jong in pull request 15689. GitHub-15588
  • Split sitemaps now use the index sitemap name as a prefix. Previously, when generating large sitemaps that result in a single index sitemap and several smaller split sitemap files, the split sitemap files did not use the same name prefix as the parent. Fix submitted by James Halsall in pull request 14836.

Staging

  • Banners remain assigned to a cart rule after a staging Update is applied. Previously, a banner was unassigned from the cart rule after a staging update was applied.
  • 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 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.
  • Merchants can now edit a schedule update as expected. Previously, updating schedule data removed the product from the Admin product list.
  • Magento no longer deletes products from the Admin product list after a merchant deletes its active schedule update. This deletion only appeared after the scheduled update time.
  • Magento no longer throws an error when a merchant edits a product from the Admin when reviews are disabled. Fix submitted by Oleksandr Kravchuk in pull request 70. GitHub-6264
  • Scheduled updates to an existing group price or special price no longer remove the previously configured price. Previously, Magento removed the configured price or reverted the price to its original value after the scheduled update expired.

Store

  • 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 Burlacu Vasilii in pull request 16468. GitHub-16273

Swatches

  • The process of switching attribute input type has been fixed, which resolves multiple issues that customers were experiencing when working with swatches, including:

    • inability to change attribute types from swatch to dropdown

    • inability to remove swatches from existing products when changing an attribute type from swatch

    • no updates to product attributes on the storefront. Fix submitted by Eugene Shab in pull request 12771. GitHub-9307, GitHub-11403, GitHub-11703, GitHub-12695

Tax

  • Redundant product tax recalculation has been reduced during the loading of category pages, which has improved page loading. Fix submitted by JeroenVanLeusden in pull request 15089. GitHub-14941
  • JavaScript code in the *.phtml file of the Tax module has been refactored to meet Magento coding standards. Fix submitted by Vishal Gelani in pull request 15343. GitHub-15352
  • The Invalid country code error message that sometimes occurred during import of tax CSV files now includes the name of the country whose data is causing the error. Previously, the message did not identify which country’s data caused the error. Fix submitted by Adam Moss in pull request 16873.

Testing

  • The testGetIgnoresFirstSlash method in ObjectManagerTest has been updated. Fix submitted by Prince Patel in pull request 17098.
  • The \Magento\Backup\Model\Db model is now covered by unit tests. Fix submitted by Yaroslav Rogoza in pull request 17063.
  • Corrected block name in the Magento_Framework test XML file. Fix submitted by Namrata in pull request 16646.
  • Metadata titles in lib/internal/Magento/Framework/View/Page/Config.php are now covered by a unit test. Fix submitted by Lorenzo Stramaccia in pull request 16333.
  • The \Magento\Checkout\Model\Cart\CollectQuote class is now covered by a unit test. Fix submitted by Chitoraga Eduard in pull request 16271.

Theme

  • Merchants can now successfully change the applied theme. Previously, Magento displayed an error when a merchant tried to save changes to the applied theme on Content > Design > Configuration. Fix submitted by Daniel Ruf in pull request 15137. GitHub-13530
  • Merchants can now successfully change the applied theme setting for a store view (Content > Design > Configuration). Fix submitted by Daniel Ruf in pull request 15137. GitHub-14968
  • Changing the @tab-content__border variable in Blank theme now works as expected. Fix submitted by hitesh-wagento in pull request 15914. GitHub-14999

Translation

  • The translation.json file now contains translatable strings for the phrases “Store Credit” and “Gift Card”. Previously, these strings were not translated for the shopping cart, one-page checkout, or order view in the customer account on the storefront.
  • We’ve added client-side caching of js-translation.js.
  • Removed the unused translation for comment tag from these files: app/code/Magento/Analytics/etc/adminhtml/system.xml, app/code/Magento/Catalog/etc/adminhtml/system.xml, app/code/Magento/Swatches/etc/adminhtml/system.xml, and app/code/Magento/Ups/etc/adminhtml/system.xml. Fix submitted by Yaroslav Rogoza in pull request 15604.
  • Added language translation capability for comment tags in the system.xml file of the Signifyd module. Fix submitted by Yogesh Suhagiya in pull request 15364. GitHub-15361
  • All previously unsupported translate tags in the mini cart template are now supported. Fix submitted by VitaliyBoyko in pull request 15782.
  • The string for moreButtonText in app/code/Magento/Swatches/view/frontend/web/js/swatch-renderer.js can now be translated. Fix submitted by Karla Saaremäe in pull request 16190. GitHub-16079
  • Added language translation capability to the Braintree module’s template file. Fix submitted by Namrata in pull request 16690.
  • Added mini cart checkout-related translations that were missing from app/code/Magento/Checkout/i18n/en_US.csv. Fix submitted by JeroenVanLeusden in pull request 16553.
  • Added language translation capability for labels in the Braintree, Multishipping, and PayPal modules. Fix submitted by Rahul Kachhadiya in pull request 15371.
  • Added language translation capability for message strings in app/code/Magento/AdminNotification/Controller/Adminhtml/System/Message/ListAction.php and app/code/Magento/AdminNotification/i18n/en_US.csv. Fix submitted by Yogesh Suhagiya in pull request 15333.

UI

  • The clickableOverlay option now works as expected, which improves the performance of modal popups. Fix submitted by virtua-pmakowski in pull request 15172. GitHub-7399
  • Customers can now place orders from grouped products where the quantity of subproducts is less than one. Fix submitted by Valerij Ivashchenko in pull request 14752. GitHub-14692
  • Footers now behave as expected when displaying Magento on a mobile device. Fix submitted by Chirag Matholiya in pull request 15353. GitHub-15118
  • The pagination of customer group prices in Advanced Pricing when viewed on the Admin now works as expected. Fix submitted by Dmytro Cheshun in pull request 15614. GitHub-15210
  • Magento now displays a caret icon as expected when a user hovers his mouse over a navigation category on a storefront. Fix submitted by Tejash Kumbhare in pull request 16082. GitHub-15220
  • 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. Fix submitted by Alexander Kras’ko in pull request 16477. GitHub-14593
  • The alignment Title and Items on the left bar has been corrected. Fix submitted by Rafael Corrêa Gomes in pull request 16984.
  • The black color coding standard has been changed from color: #000; to color: @color-black;. Fix submitted by Chirag Matholiya in pull request 17019.
  • The white color coding standard has been changed from color: #fff; to color: @color-white;. Fix submitted by Chirag Matholiya in pull request 16903.
  • Minor issues with the dynamically defined $filter property and missing throws to PHPDocs for methods in the UI export converter classes have been corrected. Fix submitted by Dmytro Cheshun in pull request 15694.
  • The ClassMagento\Ui\Component\Control\ActionPool constructor and getConfiguration() in the UI module are now invoked with the correct number of parameters. Fix submitted by Marcel Hauri in pull request 15512.
  • Unneeded JavaScript was removed from logout.phtml and replaced with a new JavaScript component. Fix submitted by Nimesh Patel in pull request 15301
  • Page wrapper CSS has been moved from media query to .page-wrapper. Fix submitted by Vishal Gelani in pull request 15416.
  • The font-size variable has been updated and standardized. Fix submitted by Vishal Gelani in pull request 15421.
  • Layout arguments now support for the const type. Fix submitted by Igor Vitol in pull request 15058.
  • Button definitions have been moved to the new buttons.js file. Fix submitted by Jisse Reitsma in pull request 15194.
  • Overlay issues with the mini cart have been resolved. Previously, if you logged in as a customer, then clicked on the mini cart icon and then the Account menu, the mini cart overlaid the Account menu. Fix submitted by Arthur James in pull request 14963.
  • Magento now supports multiple ui_components with layout type tabs on a page. Previously, the second UI component failed to render, and Magento displayed this error, Element with ID 'tabs_nav' already exists. Fix submitted by Freek Vandeursen in pull request 14742.
  • The order of style groups for mobile devices has been corrected. GitHub-14476
  • Dynamic data rows no longer fail due to a read operation after a delete condition. Previously, Magento threw an undefined JavaScript error. Fix submitted by Chirag Matholiya in pull request 15840. GitHub-911

URL rewrites

  • Categories of the Main menu in the different store view are now updated when Varnish is enabled.
  • URL key values are now derived from the default value set on the default store. Previously, Magento derived the product URL key value from the product name on storeview level.
  • 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 13397. GitHub-13296
  • An unnecessary parameter has been removed from _addProductLinkBlock(). Fix submitted by Saurabh Parekh in pull request 15891.
  • Template files have been refactored to follow Magento coding standards. Fix submitted by Nimesh Patel in pull request 15422. GitHub-15356
  • Undefined mixin parameters are now defined and variable scope has been improved in lib/web/css/source/lib/_icons.less, lib/web/css/source/lib/_pages.less, and lib/web/css/source/lib/_utilities.less. Fix submitted by Prince Patel in pull request 17097.
  • Magento now removes URL rewrites as expected after you delete a CMS page through the API or in the crontab area. Fix submitted by Roman in pull request 14751.
  • Main menu categories in different store views are now updated as expected when Varnish is enabled.

Visual Merchandiser

  • Magento now maintains manual sort order and adds newly assigned products to the top of the products list. Previously, Magento reset the manual sort order and sorted products by ID.
  • Saving a product no longer reverts the selected sort order for a category. Previously, after a merchant saved a product, Magento reverted the sort order that defined the display of products in that category from the defined sort order to an order defined by product ID.

Vertex

  • The Gross Amount and Tax Amount columns in the Transaction Details Report file now include price and tax for products as expected.

Wishlist

  • Incorrect return type hinting in DocBlocks has been corrected for several methods in the Wishlist module. Fix submitted by Yaroslav Rogoza in pull request 15854.
  • Removed an unnecessary parameter from the toHtml() method in Wishlist/view/frontend/templates/item/list.phtml. Fix submitted by Yaroslav Rogoza in pull request 16023.
  • Magento no longer thows errors when you log in using the wishlist URL. Fix submitted by Oleksandr Kravchuk in pull request 16386.
  • Magento no longer removes a product from the wishlist when you update a wishlist item. Fix submitted by Chitoraga Eduard in pull request 16372.
  • Magento now passes empty arrays (instead of null values) into the DataObject constructor. Previously, a null value was passed, which caused a fatal error. Fix submitted by Abhishek Jakhotiya in pull request 16220.
  • The \Magento\Wishlist\CustomerData\Wishlist::getImageData() method DocBlock now correctly indicates that the method returns an array. Fix submitted by Yaroslav Rogoza in pull request 15718.
  • Magento now displays the correct product image for the selected configurable product variant in the My Wishlist sidebar. Previously, Magento always displayed the image associated with the default configurable product in the My Wishlist sidebar. Fix submitted by kishanpatadia in pull request 15477.

Known issues

Issue: Merchants cannot save a newly created multiselect or dropdown customer attribute or edit existing customer attributes from the customer’s account on the storefront after upgrade to Magento 2.2.6.

Workaround: Download and apply Magento Commerce Support Patch MAGETWO-95591 after logging into your account from the partner portal. This issue will be fixed in Magento Commerce 2.2.7, which is scheduled for release by the end of 2018.

Issue: The catalog:image:resize command execution time has been reduced by up to 90% in the release. However, this improvement necessitates these additional steps after upgrading your Magento instance to 2.2.6:

  • Remove   pub/media/catalog/product/cache. The path for cached images was changed in this release, which explains why you need to clean this directory after upgrade to free up space.

  • Run bin/magento catalog:image:resize to generate a new image cache. This step is necessary because we’ve changed the path to cached images and must remove the previously cached images.

Community contributions

This release includes substantial community contributions: over 100 GitHub issues resolved and over 350 pull requests merged. We are grateful to the wider Magento community for this effort and would like to acknowledge their contributions to this release.

Individual contributor contributions

The following table identifies contributions from our community members. This table lists the external pull requests, the GitHub issue number associated with it (if available), and the community member who contributed the pull request.

Contributing community member Pull Requests Related GitHub Issues
vinayshah #13397 13296
DenisSaltanahmedov #14338 4788
Karlasa #14715 14669
Karlasa #14716  
AlexandrKozyr #12764 4389
andrewbess #14314 13765
davidwindell #14538  
FreekVandeursen #14742  
unicoder88 #14751  
SergeyDmitruk #14290 1821
chrom #14707  
likemusic #14752 14692
navarr #14769  
sidolov #14790  
jalogut #12410 11396
philippsander #14719 9580
julienanquetil #14753  
nit-it #14765  
afirlejczyk #14546 13944
luke-denton-aligent #14726  
rodrigowebjump #14800 5726
sidolov #14844  
ankurvr #14795  
bmxmale #14833  
tao-s #14627  
jameshalsall #14836  
julienanquetil #14839 14274
JeroenVanLeusden #12566  
toddbc #14699  
bmxmale #14829  
hannassy #12735 7861, 12193
jameshalsall #14822 5768
LordZardeck #14876  
Yogeshks #14892  
thomas-blackbird #14609  
sjb9774 #14891  
rogyar #14893  
Yogeshks #14896  
phoenix128 #14905 14855
rocketweb #14820  
phoenix128 #14904 14869
Yogeshks #14928  
Neos2007 #14886  
vovayatsyuk #14874  
JeroenVanLeusden #14923  
chris-pook #14939  
likemusic #14935  
ArtiDjeims #14963  
Jakhotiya #14946  
georgeschiopu #14976 10395
shochdoerfer #15015  
DanielRuf #15018  
kalpmehta #15023  
likemusic #15002  
DanielRuf #15012  
DanielRuf #15017  
DanielRuf #15016  
gwharton #15020 12285, 15009
mash1t #15032 13460
jee1mr #15053  
Yogeshks #14967  
Jakhotiya #15067  
avstudnitz #13904  
adrian-martinez-interactiv4 #14428 4301, 12362, 13427
tkotosz #15129  
rogyar #15136  
vovayatsyuk #15162  
Yogeshks #15173  
sashas777 #15144 11354
hostep #15174 14104
joni-jones #12324  
torreytsui #13185  
JeroenVanLeusden #14614  
virtua-pmakowski #15172 7399
vovayatsyuk #15178 14987
tdgroot #15197  
dverkade #15202  
DanielRuf #15137 13530, 14968
olmer #15256  
vovayatsyuk #14994  
jissereitsma #15194  
Yogeshks #15249  
adrian-martinez-interactiv4 #15262  
IgorVitol #15058  
vovayatsyuk #15133  
t-richards #15269  
mhauri #15282  
VitaliyBoyko #15291  
dmytro-ch #15292  
mhauri #15276  
dmytro-ch #15293  
NamrataChangani #15302  
dmytro-ch #15294  
VitaliyBoyko #15386  
keithbentrup #15265 15121
Yogeshks #15333  
neeta-wagento #15331 15334
rahul-kachhadiya #15341  
vgelani #15343 15352
saurabh-aureate #15346 15355
sunilit42 #15350 15319
amittiwari024 #15351 15354
vgelani #15362  
VitaliyBoyko #15411  
JeroenVanLeusden #15089 14941
KaushikChavda #15247 14747
mhauri #15275  
sanjay-wagento #15332  
sanjay-wagento #15336  
jignesh-baldha #15347 15037
vgelani #15372 15334
chirag-wagento #15353 15118
vgelani #15398  
AnshuMishra17 #15431  
lewisvoncken #15010  
flancer64 #15211 15192
mhauri #15258  
amjadm61 #15340 13793
Yogeshks #15364 15361
rahul-kachhadiya #15371  
vovayatsyuk #15409  
patelnimesh1988 #15422 15356
vgelani #15421  
rogyar #15435  
RebeccaBrocton #15460  
gwharton #15040 10210
jalogut #15312  
abcpremium #15454  
vgelani #15416  
dmanners #15462  
mhauri #15511  
avoelkl #15513  
patelnimesh1988 #15301  
kacperchara #15382 4977
brian-labelle #15499 15469
mhauri #15512  
mhauri #15515  
hitesh-wagento #15459 14153
jonshipman #15468 15467
avoelkl #15514  
saurabh-aureate #15517  
saurabh-aureate #15519  
saurabh-aureate #15552  
vgelani #15549  
dverkade #15097  
DanielRuf #15305  
kishanpatadia #15477  
krukas #15598 15564
sanjay-wagento #15602  
KarlDeux #13328 10346
neeta-wagento #15349 15348
saurabh-aureate #15594  
julienanquetil #15585 13415
dmytro-ch #15615  
neeta-wagento #15621 15590
hitesh-wagento #15645 7897
EliasKotlyar #15566 15565
dverkade #15715  
rogyar #15718  
dankhrapiyush #15365 6058
DanielRuf #15485  
dmytro-ch #15614 15210
torhoehn #15765 12221
scottsb #12314  
phoenix128 #15539 15510
dmytro-ch #15694  
hitesh-wagento #15734 15608
VitaliyBoyko #15782  
chirag-wagento #15791  
chirag-wagento #15789  
NamrataChangani #15795  
NamrataChangani #15825  
chirag-wagento #15840  
rogyar #15854  
DanielRuf #15871  
pusachev #12626  
mpchadwick #12935  
lewisvoncken #15019 14966
dmytro-ch #15297  
Hypo386 #15320 14056
idziakjakub #15322 11477
ankurvr #15661 15660
StevenGuapaBV #15689 15588
Radio #15826 15822
avstudnitz #13862  
saurabh-aureate #15888  
NamrataChangani #15892  
saurabh-aureate #15891  
hitesh-wagento #15878 15323
ledian-hymetllari #15907  
hitesh-wagento #15914 14999
StevenGuapaBV #15936 15308
Karlasa #15991  
likemusic #16001  
Karlasa #16002  
rogyar #16023  
DanielRuf #16048 16047
mhauri #15647  
hitesh-wagento #15811  
chirag-wagento #15893 15213
dmytro-ch #15902  
chirag-wagento #15913  
Karlasa #16012 15832
likemusic #16010  
thomas-blackbird #16053  
lfluvisotto #16052  
rogyar #16065  
vgelani #16080  
rakesh-gangani #15344 13692
andreagaspardo #15534 15255
rogyar #15604  
DanielRuf #15870  
KaushikChavda #15272  
saurabh-aureate #15993  
tejash-wagento #16082 15220
istiahailo #16091  
lfluvisotto #16144  
rogyar #16160  
NamrataChangani #16181  
NamrataChangani #16182  
NamrataChangani #16183  
Karlasa #16190 16079
xpoback #16194 16184
dankhrapiyush #16192 6058
ronak2ram #16206  
platformvaimo #16211  
0m3r #16213 8222
IvanPletnyov #16216  
Jakhotiya #16220  
NamrataChangani #16230  
diedburn #15521  
phoenix128 #15532 15501
dverkade #15629 15627
markoshust #15637  
lfluvisotto #16141  
lfluvisotto #16215  
vgelani #16247  
NamrataChangani #16240  
itaymesh #16250  
eugene-shab #12771 9307, 9923, 11403, 11703, 12695
sanjay-wagento #15774 14895
dmytro-ch #15872  
mhaack #15845  
fmarangi #15929 15205, 15245
JeroenVanLeusden #16286  
rogyar #16300  
rogyar #16306  
p0pr0ck5 #13509  
NamrataChangani #15339 15345
rsantellan #16093  
AnshuMishra17 #16217  
vasilii-b #16279 7379
slackerzz #16333  
hitesh-wagento #16379 16378
gelanivishal #16389  
nuzil #15464 15218
DanielRuf #16009  
yuriyDne #16086  
eduard13 #16372  
swnsma #16386  
JosephMaxwell #16438  
aschrammel #16458  
0m3r #16477 14593
jissereitsma #15543  
gelanivishal #16472  
erikhansen #16489  
sanganinamrata #16495  
gelanivishal #15909 11717
Yogeshks #16090  
phoenix128 #16393  
LordZardeck #16517  
gelanivishal #16524  
sanganinamrata #16549  
JeroenVanLeusden #16553  
sanganinamrata #16557  
mageprince #16576  
sanganinamrata #16581  
lfluvisotto #16143  
JosephMaxwell #16254  
Coderimus #16474  
dankhrapiyush #16564 6058
FreekVandeursen #11554  
eduard13 #16271  
torreytsui #16540  
sanganinamrata #16530 16529
Karlasa #16559  
mageprince #16584 15940
vkublytskyi #16590 11717
mageprince #16626  
sanganinamrata #16644  
sanganinamrata #16645  
sanganinamrata #16646  
LordZardeck #16669  
ronak2ram #16678  
LordZardeck #16675  
sanganinamrata #16689  
sanganinamrata #16690  
sanganinamrata #16691  
AnshuMishra17 #16711  
nuzil #15479  
tiagosampaio #16175 16174
phoenix-bjoern #16408  
tiagosampaio #16414  
nuzil #16554  
likemusic #16566  
rogyar #16680  
swnsma #16693  
quisse #16685  
JRhyne #16704 16703
sanganinamrata #16717  
Karlasa #16716  
sanganinamrata #16721  
hitesh-wagento #16732 15848
arnoudhgz #16726  
JeroenVanLeusden #13569 5067
simpleadm #14379 14351
gwharton #16599 10210
ronak2ram #16748  
Karlasa #16766 16764
mage2pratik #16821  
ronak2ram #16831  
hostep #16435  
gelanivishal #16595 6058
ronak2ram #16845  
hryvinskyi #16861  
ronak2ram #16872  
adampmoss #16873  
ronak2ram #16916 5316
Karlasa #16579  
aleron75 #16707  
FreekVandeursen #16785  
GraysonChiang #16841  
Ethan3600 #16840  
AnshuMishra17 #16851  
likemusic #16882  
lfluvisotto #16880  
likemusic #16889  
mage2pratik #16891  
torhoehn #16890  
tiagosampaio #16899  
chirag-wagento #16903  
tiagosampaio #16924  
ihor-sviziev #16937  
GlennCheng #16928  
ronak2ram #16978  
mage2pratik #16977  
mage2pratik #16980  
mageprince #17002  
AnshuMishra17 #16560  
ronak2ram #16863 16843
sean-wcb #16883  
hryvinskyi #16900  
tiagosampaio #16921  
osrecio #16946  
DanielRuf #16965  
chirag-wagento #17019  
brobie #16952 8131
tejash-wagento #16959 14476
likemusic #16971  
mage2pratik #16988  
rafaelstz #16984  
denistrator #17006 15118
likemusic #17027  
rogyar #17063  
mage2pratik #17077  
mageprince #17097  
mageprince #17099  
mageprince #17098  
denistrator #17114  
angelomaragna #17129  
rogyar #17137  
kreativedev #17151  
simonjanguapa #15687 15393
rogyar #16401 3535, 14517
vasilii-b #16468 16273
woutersamaey #17124  
cmtickle #17163  
tiagosampaio #17035  
tiagosampaio #17227  

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).

Contributing Partner Pull Request Related GitHub issue
Aligent Consulting 14726 N/A
Ampersand 13185, 16540 N/A
Atwix 14338, 14893, 15136, 15291, 15292, 15293, 15294, 15386, 15411, 15435, 15615, 15718, 15614, 15694, 15782, 15854, 15297, 16023, 15902, 16065, 15604, 16160, 15872, 16300, 16306, 16279, 16086, 16372, 16271, 16680, 17063, 17137, 16401, 16468 4788, 3535, 14517, 15210, 7379, 16273
Basecom 15765, 16890 12221
Classy Llama 16489 N/A
Comwrap 14886, 15464, 15479, 16554 15218
Convert 14751, 14379 14351
Corra 15023 N/A
DEG 16952 8131
Divante 14546, 15382, 15320 13944, 4977, 14056
Experius 15010, 15019 14966
Guapa 15689, 15936, 15687 15588, 15308, 15393
H&O 12566, 14923, 14614, 15089, 16286, 16553, 13569 14941, 5067
Imagination Media 16984 N/A
Interactiv4 14428, 15262, 16946 4301, 12362, 13427
Inviqa 14836, 14822, 15129 5768
ISM eCompany 16386, 16693 N/A
Krish TechnoLabs 16206, 16576, 16584, 16626, 16678, 16748, 16821, 16831, 16845, 16872, 16916, 16891, 16977, 16978, 16980, 17002, 16863, 16988, 17077, 17097, 17098, 17099 15940, 5316, 16843
MageSpecialist 14905, 14904, 15539, 15532, 16333, 16393 14905, 14904, 15539, 15532, 16333, 16393
MediaCT 16726 N/A
Netz98 15032 13460
Perficient 15499 15469
Phoenix Media GmbH 16408 N/A
Rocket Web 14820 N/A
Something Digital 14699, 12935 N/A
Space 48 14976, 16873 10395
Two Jay 17163 N/A
Wagento 15331, 15332, 15336, 15353, 15459, 15602, 15349, 15621, 15645, 15734, 15789, 15791, 15840, 15878, 15914, 15811, 15893, 15913, 16082, 16379, 16082, 16732, 16903, 17019, 16959 15848, 14476, 15334, 15118, 14153, 15348, 15590, 7897, 15608, 15323, 14999, 15213, 15220, 14895, 16378
Webjump 14800 5726

System requirements

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.

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.2.x. The command-line interface includes scripts for converting Magento 1.x modules and layouts.

Updated