group | title | menu_title |
---|---|---|
release-notes |
Magento Open Source 2.2.0 Release Notes |
Magento Open Source 2.2.0 Release Notes |
Release notes updated June 4, 2018.
We are pleased to present Magento Open Source 2.2.0 General Availability. This release includes numerous functional fixes and enhancements.
Magento Open Source 2.2.0 includes a wealth of new, exciting features, and hundreds of enhancements and fixes. Look for the following highlights in this release:
-
Bundled extensions. This release of Magento includes the first third-party extension that we are bundling with Magento Commerce -- Magento Social. This extension establishes a connection between your store and your corporate Facebook account, and creates a page with products from your catalog. When shoppers click a product, they are redirected to the corresponding product page in your Magento store.
-
Significant enhancements in platform security and developer experience. Security improvements include the removal of unserialize calls and protection of this functionality to increase resilience against dangerous code execution attacks. We have also continued to review and improve our protection against Cross-Site Scripting (XSS) attacks.
-
Upgraded technology stack. We've dropped support for PHP 5.6, and Varnish 3. We now support PHP 7.1 Varnish 5, and MySQL 5.7. All third-party libraries have been upgraded to the latest stable version.
-
Pipeline deployment, a new deployment process, enables build and deployment stages to minimize production system downtime for site updates. Resource-intensive processes can run on the build server. Pipeline deployment supports easy management of configuration between environments, too. Read more about pipeline deployment [here]({{ page.baseurl }}/config-guide/deployment/pipeline/).
-
Performance gains from improvements in indexing, cart, and cache operations. Customers can browse and shop on a storefront while indexers are running with no visible impact to their experience. Additionally, long-running indexers operate in batches to better manage memory and run times. Cart improvements enable a buyer to create a cart with more than 300 line items, and merchants can process a cart with at least 300 line items. Varnish cache configuration now includes saint and grace mode to ensure Varnish is always presenting a cached page to a shop’s customers. Enhancements to cache invalidation logic and optimization of edge side include blocks for frequently changing data that significantly boost cache hit ratios.
-
Substantial contributions from our Community members. Our Community Engineering Team has been working with skilled and enthusiastic community members, and together they've added hundreds of pull requests to the Magento code base. For more information about our Community Engineering Team. see Magento Community Engineering.
Looking for more information on these new features as well as many others? Check out [Magento 2.2 Developer Documentation]({{ site.baseurl }}/guides/v2.2/).
Magento 2.2.0 includes multiple security enhancements. Although this release includes these 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.
In general, we’ve removed serialize/unserialize from most the code to improve protection against remote code execution attacks. We’ve enhanced protection of code where use of object serialization or unserialization was unavoidable. Additionally, we’ve increased our use of output escaping to protect against cross-site scripting (XSS) attacks.
Contact us for more information.
Magento 2.2.0 GA includes the following known issues. Fixes for these issues are scheduled for patch releases in the near future.
Issue: This issue affects Magento installations that include multiple store views. If you delete a store view, any product grid filtered to that Store View does not load. If you've set your product filter to a store view you’ve deleted, when you open Catalog > Products, Magento displays the following behavior:
-
spinner widget spins indefinitely
-
error message:
A technical problem with the server created an error. Try again to continue what you were doing. If the problem persists, try again later.
Issue: Errors result when a deleted customer tries to log in or register for new account. When you delete a customer from the Admin panel, a fatal error occurs if someone tries to log in or register using that deleted customer account.
Issue: A mistake entering credit card information during an order for a new customer can cause subsequent errors even after the user has corrected the credit card information.
Issue: Failure to specify a – base_url
during installation when using custom server ports results in unresolved static content.
Workaround: You can use the CLI command config:set web/secure/base_url <base_url>
to set the base_url
parameter.
Issue: The Performance Toolkit does not currently work.
This release contains hundreds of fixes and enhancements.
* You can now run `magento setup:upgrade --keep-generated` in production mode. Previously, Magento would throw an error when you ran `setup:upgrade` after compiling dependency injection. (This significantly curtailed your ability to deploy continuous integration.) [GitHub-4795](magento/magento2#4795) * You can now upgrade your Magento installation when using multiple master databases for checkout, order management, and product data. * We fixed an issue that blocked using the web installer to successfully set up Magento. Previously, if you tried to install Magento with the web installer, Magento would indicate that the readiness check failed, and installation would not complete. * You can now deploy build processes on a different staging machine than the one you're running your production environment on. * Magento 2.0.x and 2.1.x now support the use of table prefixing during installation. Previously, when you used table prefixing, your Magento installation failed with this error: "Duplicate key on write or update". [GitHub-5688](magento/magento2#5688) * Third-party command line tools no longer fail when you run `setup:di:compile`. * Magento now correctly applies {% glossarytooltip a3c8f20f-b067-414e-9781-06378c193155 %}website{% endglossarytooltip %} configuration parameters to the corresponding {% glossarytooltip ca5a9ff1-8182-4fc4-a34b-9b3f831dbf3f %}store view{% endglossarytooltip %}. [GitHub-7943](magento/magento2#7943) * Fixed HTML inline style used when sending emails when implementing the upgraded `emorgifier` library. [GitHub-8241](magento/magento2#8241) * We’ve changed how Magento displays status updates during a product upgrade. Previously, potentially vulnerable information such as full paths and module names were displayed in the product GUI, potentially exposing this information to a malicious user. Magento now restricts this potentially vulnerable information to logs that are available to administrators only. * The `cron:install` command now works as expected in Magento 2.2.0. Previously, the configuration for `crontab` commands contained double quotes that were not escaped, which caused invalid commands to be written to the `crontab` file. [GitHub-10040](magento/magento2#10040) * Magento now moves the `sequence_*` table to the correct database after implementing a split database. * Magento no longer throws an exception when the configuration checksum is absent on a new installation. * Custom themes now inherit parent {% glossarytooltip 8c0645c5-aa6b-4a52-8266-5659a8b9d079 %}XML{% endglossarytooltip %} configuration information as expected. * We've removed the sample password from the Setup Wizard * You can now enable JavaScript minification without error. Previously, after enabling JS minification, the Magento Admin displayed 404 errors when accessing JavaScript elements. * Magento no longer displays console errors after CSS merging and minification is enabled. Previously, when CSS merging and minification was enabled, the storefront was not displayed as expected, and the `styles-l.min.css` and `print.min.css` files could not be found. * You can now successfully use the `config:set` command to set allowed or default currencies. * Nginx now redirects to the setup page when using port 81. * We've added the `dev:template-hints:enable` and `dev:template-hints:disable` commands to manage template hints. *Fix submitted by community member [Miguel Balparda](https://github.com/miguelbalparda){: target="_blank"} in pull request [9778](https://github.com/magento/magento2/pull/9778){: target="_blank"}.* * We've added the `dev:query-log:enable` and `dev:query-log:disable ` to manage database query logging. *Fix submitted by community member [Federico Rivollier](https://github.com/federivo){: target="_blank"} in pull request [9264](https://github.com/magento/magento2/pull/9264){: target="_blank"}.* * We've added the `varnish:vcl:generate` command to create the Varnish VCL file. *Fix submitted by community member [Piotr Kwiecinski](https://github.com/piotrkwiecinski){: target="_blank"} in pull request [9286](https://github.com/magento/magento2/pull/9286){: target="_blank"}.* * Magento now adds a new record to the quote table and adds the current date and time to the `created_at` field. Previously, this field was not updated. * The installation script no longer creates files in the root directory for missing modules when you install a community-created language pack. Translation packs created by the community often include translations for Magento Commerce modules. When you install these translation packs on an Open Source installation, the Commerce modules are missing. Previously, the installation script creates a file in the root directory for these Commerce modules instead of skipping them. [GitHub-6260](magento/magento2#6260) * We've fixed issues with upgrading installations with split databases. * The import URL directive now contains base URL and locale placeholders instead of the real URL. * Magento now works as expected on an Apache `php-fpm` environment. * The `DOCUMENT_ROOT` directory is now writable. Previously, installation failed because this directory was not writable. * When upgrading Magento from 2.1.x to 2.2, the `quote_address.free_shipping` column is the same whether you upgraded from a previous installation of Magento or performed a fresh installation. Previously, different upgrade/installation options affected the contents of this column. * Command-line users now have read and write permissions to the `var/generation` directory. [GitHub-7933](magento/magento2#7933) * The Magento command-line interface now sets the correct exit codes when an upgrade task fails. [GitHub-7576](magento/magento2#7576) * You can now disable the Review module without incurring an error in the Product Edit page. Previously, if you tried to edit a product after disabling the review module, Magento displayed this error: "Something went wrong". [GitHub-6704](magento/magento2#6704) * You can now use Component Manager to enable a previously disabled module. Previously, when you ran `bin/magento module:disable Magento_AnyModule`, then tried to re-enable that module, Magento fails to enable it and any previously enabled cache types, and module installation fails. [GitHub-6078](magento/magento2#6078) * Magento no longer inserts HTTPSS:// for HTTPS in a store address when you install Magento using an HTTPS address over SSL. [GitHub-6262](magento/magento2#6262) * We’ve fixed problems with the uninstall process. Previously, when Magento tries to uninstall a module using composer, it simultaneously tried to update the `symfony/process` version. However, because the `module:uninstall` command uses `symfony/process`, the command stopped running. [GitHub-5797](magento/magento2#5797) * Magento now implements the minicart maximum display recently added item setting to your {% glossarytooltip c7ecb18d-cefe-452d-83e2-3c4d5e355db9 %}shopping cart{% endglossarytooltip %}. Previously, Magento displayed all the items in the shopping cart, even when the number of items exceeded this limit. [GitHub-4750](magento/magento2#4750) * You can now reload a page during {% glossarytooltip 278c3ce0-cd4c-4ffc-a098-695d94d73bde %}checkout{% endglossarytooltip %} without unintentionally changing shipping information. * Custom address attributes now appear in the Checkout summary. * Lengthy {% glossarytooltip ab517fb3-c9ff-4da8-b7f9-00337c57b3a5 %}Order Status{% endglossarytooltip %} tables are now paginated as expected. * Magento now displays the product add validation message ("Product was added to the cart") only after you have successfully added a product to your cart. * We've resolved an issue that prevented you from adding more than one product to a {% glossarytooltip c7ecb18d-cefe-452d-83e2-3c4d5e355db9 %}shopping cart{% endglossarytooltip %} from a wishlist. [GitHub-5282](magento/magento2#5282) * The number of items in the minicart is now updated correctly when you run Magento in mixed HTTP/HTTPS mode. [GitHub-6487](magento/magento2#6487) * The minicart now performs as expected in deployments that span multiple websites. Previously, in a Magento installation that had multiple websites, products that you added to one {% glossarytooltip a3c8f20f-b067-414e-9781-06378c193155 %}website{% endglossarytooltip %} appeared in the other websites' minicarts. * A cart rule with a coupon code no longer overrides a cart rule without a coupon code when multiple {% glossarytooltip b3292cb5-4262-4914-a258-efac79ac8b99 %}cart rules{% endglossarytooltip %} are applied. Previously, when you created two cart rules and applied them to a cart, the rule with a coupon was applied, but the second rule was not. [GitHub-6294](magento/magento2#6294) * Refreshing your browser page while on the Review and Payments page of the checkout process no longer clears information from form fields. Previously, Magento cleared information from the **Ship to** field if you refreshed your browser page during this process. * Magento no longer lets you add a product variation to your shopping cart if the item is out of stock. Previously, Magento permitted you to select an out-of-stock item and when you added it to your cart, displayed the "Product is out of stock" message. * We've corrected a problem with Magento throwing an HTTP ERROR 500 intermittently during checkout. * We fixed a {% glossarytooltip 312b4baf-15f7-4968-944e-c814d53de218 %}JavaScript{% endglossarytooltip %} error that occurred on the Checkout page after you changed the country in the **Estimate Shipping and Tax** field. * Magento now successfully estimates shipping costs. Previously, when you tried to estimate shipping costs, the load indicator would spin indefinitely, and Magento displayed this exception,```Object doesn't support this action```. [GitHub-5358](magento/magento2#5358), [GitHub-7051](magento/magento2#7051) * Magento now displays the **State/Province** field on the Add New Address page. [GitHub-5279](magento/magento2#5279) * Credit card information now persists as expected after a user enters a promotion code during checkout. Previously, After an user enters credit card information, then discount code and then click **Place Order**. The credit card information fields are emptied and user has to enter the credit card information again to proceed with the order transaction. * You can complete your order after entering a new shipping address during checkout. Previously, Magento would not let you place an order if you entered a new shipping address during checkout. * Magento no longer throws an exception when a customer updates their shopping cart after you've enabled the Minimum Order setting. *Fix submitted by community member Eric Rislerin pull request 8474{: target="_blank"}.*
* You can now translate the FPT label on the checkout page. *Fix submitted by community member [Oleksii Korshenko](https://github.com/okorshenko){: target="_blank"} in pull request [9204](https://github.com/magento/magento2/pull/9204){: target="_blank"}.* * Magento no longer truncates bill-to names and ship-to names to 20 characters in the Admin. *Fix submitted by community member [Isolde](https://github.com/SolsWebdesign){: target="_blank"} in pull request [9654](https://github.com/magento/magento2/pull/9654){: target="_blank"}.* * You can now delete the last item in your cart when the Minimum Order setting is enabled. *Fix submitted by community member [storbahn](https://github.com/storbahn){: target="_blank"} in pull request [9714](https://github.com/magento/magento2/pull/9714){: target="_blank"}.* * You can now create unique checkbox IDs for the Terms and Conditions part of the checkout process. *Fix submitted by community member [Bernhard](https://github.com/bka){: target="_blank"} in pull request [9717](https://github.com/magento/magento2/pull/9717){: target="_blank"}.* * Magento now correctly displays the coupon label in the shopping cart during checkout. *Fix submitted by community member [Sylvain Rayé](https://github.com/diglin){: target="_blank"} in pull request [9721](https://github.com/magento/magento2/pull/9721){: target="_blank"}.* * Magento now pre-fills prefixes and suffixes in the quote shipping address *Fix submitted by community member [Anton Evers](https://github.com/ajpevers){: target="_blank"} in pull request [9925](https://github.com/magento/magento2/pull/9925){: target="_blank"}.* * The country drop-down box now correctly shows the countries for which the current store and customer account are configured. *Fix submitted by community member [Marcel](https://github.com/mimarcel){: target="_blank"} in pull request [9429](https://github.com/magento/magento2/pull/9429){: target="_blank"}.* * The shopping cart now handles products with custom options. [GitHub-5612](magento/magento2#5612) * Magento now requires completion of the State field during the check out process if this field has been configured as required. * Checkout now loads as expected in Safari private mode. [GitHub-7942](magento/magento2#7942), [GitHub-7329](magento/magento2#7329), [GitHub-8358](magento/magento2#8358) * Minicart now shows all products you’ve added, whether you added them while signed-in or not. Previously, the minicar contained only products that you added while signed in. [GitHub-7500](magento/magento2#7500) * Magento now displays the correct error message when you enter an invalid discount code when making a payment. [GitHub-7230](magento/magento2#7230) * Changing a product price under the website scope now updates the product price across all stores. Previously, any price you set on the store view level overrode the price set in website scope. [GitHub-5133](magento/magento2#5133), [GitHub-7251](magento/magento2#7251) * You can now directly add a configurable product to your shopping cart from category page. [GitHub-2574](magento/magento2#2574), [GitHub-5850](magento/magento2#5850), [GitHub-5882](magento/magento2#5882), [GitHub-6572](magento/magento2#6572), [GitHub-5558](magento/magento2#5558), [GitHub-4184](magento/magento2#4184) * Magento now displays out-of-stock products in the shopping cart. Previously, if a product’s status changed between the time you added it to the cart and you proceeded to check out, Magento removed the product from your cart. [GitHub-6583](magento/magento2#6583) * When you select `New Address` while reviewing order information during check out, Magento now profiles the username and country fields, but leaves the address fields empty. Previously, Magento did not leave the address fields empty, and the checkout process failed. [GitHub-6869](magento/magento2#6869) * Checkout agreement validation now works as expected after you change payment method. [GitHub-6224](magento/magento2#6224) * The shopping cart now displays a shipping rate that reflects tax settings. Previously, the prices displayed in your shopping cart were not adjusted to include these settings. [GitHub-6166](magento/magento2#6166) * Magento now displays the ”Thank you for your purchase!" on the checkout success page. * Magento no longer locks the `category_product_entity` table. Unlocking this table reduces the potential of lock-related timeouts that can occur when indexing and checkout operations run in parallel. Previously, Magento locked the `category_product_entity` table. * The {% glossarytooltip 1a70d3ac-6bd9-475a-8937-5f80ca785c14 %}storefront{% endglossarytooltip %} now displays images that Magento resizes during product save operations, rather than resizing the product on the storefront. Previously, the image path contained `store_id`, and during save operations, Magento resized images for images the default store only. * The `\Magento\CatalogInventory\Model\Stock\Status\getStockId()` method now returns the correct values. * The {% glossarytooltip 1a70d3ac-6bd9-475a-8937-5f80ca785c14 %}storefront{% endglossarytooltip %} gallery now displays all the images associated with a {% glossarytooltip 2fd4d100-28d2-45ca-bec1-128444ea98e6 %}configurable product{% endglossarytooltip %}. Previously, when you clicked on the swatches associated with a configurable product, the gallery displayed only one of several possible images. [GitHub-6195](magento/magento2#6195), [GitHub-4101](magento/magento2#4101) * Magento now displays the **This is a required field** message immediately adjacent to the product options as needed during {% glossarytooltip 278c3ce0-cd4c-4ffc-a098-695d94d73bde %}checkout{% endglossarytooltip %}. Previously, Magento displayed this message at the bottom of the checkout form. * You can now save a product with images multiple times. * The category page now shows the current price after Magento runs a scheduled update. Previously, the category page would not update the price after running a scheduled update. [GitHub-4945](magento/magento2#4945) * You can now sort and filter on the New Review page. [GitHub-5391](magento/magento2#5391) * Magento now displays server-side Ajax error messages. * Magento now validates the uniqueness of product attribute values as you create or edit them. Previously, you could add identically named values to an attribute. [GitHub-4881](magento/magento2#4881) * Magento now displays the price of out-of-stock products on the product page. * If you remove an item from the Compare Items list that is displayed on any {% glossarytooltip 50e49338-1e6c-4473-8527-9e401d67ea2b %}Category{% endglossarytooltip %} page, Magento no longer redirects you to the Compare Products page. * Subcategories no longer show up in the menu when the parent category is disabled or hidden from the menu. [GitHub-10664](magento/magento2#10664) * We've corrected a problem with Magento throwing an HTTP ERROR 500 intermittently during checkout. * The product attribute `category_ids` can have only **Global** scope. Previously, you could change the scope value of `category_ids` to **Store**. * A price change to a custom option affects only that option. Previously, changing the price of a custom option also affected the price of related products. [GitHub-4588](magento/magento2#4588), [GitHub-5798](magento/magento2#5798), [GitHub-6041](magento/magento2#6041), [GitHub-6097](magento/magento2#6097) * The prices you assign to custom options no longer change unexpectedly after you save them. [GitHub-6116](magento/magento2#6116) * You can now create a blank attribute option using the drop-down input option on products that do not require an attribute. [GitHub-3545](magento/magento2#3545), [GitHub-5485](magento/magento2#5485), [GitHub-4910](magento/magento2#4910) * Magento no longer encounters an error when it cannot find a product image file. [GitHub-5184](magento/magento2#5184), [GitHub-5497](magento/magento2#5497), [GitHub-5871](magento/magento2#5871) * You can now successfully set an SKU mask to empty. Previously, when a product SKU mask was set to empty, Magento experienced problems loading the Product Add page. [GitHub-5618](magento/magento2#5618) * Magento now correctly displays custom options at the store-view level. [GitHub-2908](magento/magento2#2908), [GitHub-5885](magento/magento2#5885), [GitHub-5612](magento/magento2#5612) * Magento now provides swatch input for the Admin Scope, and the attribute fall back mechanism now reverts to the default option valueif no values are specified for specific store view. GitHub-5143, GitHub-5142
* You can now create a custom attribute for a category that successfully uploads a custom image. Previously, you could create the attribute, but could not save the image. * Sorting configurable products by price now works as expected when a simple product has a special price. [GitHub-4778](magento/magento2#4778) * Magento no longer displays an error when you open a product with a Fixed Product Tax attribute enabled. * We've improved the process of using the WebAPI interface to save a product stock item. Previously, this type of save action worked inconsistently. * You can no longer change or fake a product price from the Magento {% glossarytooltip 1a70d3ac-6bd9-475a-8937-5f80ca785c14 %}storefront{% endglossarytooltip %} and then complete an order with that faked price. * View permissions to high-level product categories now work as expected. Previously, Magento displayed only the product categories that users who belonged to the NOT_LOGGED_IN customer group were permitted to view, no matter which user logged in. Additionally, a user restricted to browse a category could still see the category in the top-level navigation menu if the page were previously cached in FPC. * You can now successfully add a product to the compare list. Previously, when you tried to add a product to a compare list, Magento displayed an error. * You can now remove custom options from simple products. Previously, when you tried to remove a custom option from a product, Magento did not remove the options, and displayed an error message. * You can now successfully set the **Enable Product** attribute to **no**. * Magento no longer permits a shopper to place a re-order once you've disabled one of items in the order. * Fixed an issue that occurred in the Catalog Gallery on mobile displays when the `allowfullscreen` setting is enabled. *Fix submitted by community member [Dennis van Schaik](https://github.com/Crossmotion){: target="_blank"} in pull request [8434](https://github.com/magento/magento2/pull/8434){: target="_blank"}.* * Magento now successfully loads re-ordered related products when Edge-Mode is activated. *Fix submitted by community member [@kirashet666](https://github.com/kirashet666){: target="_blank"} in pull request [8467](https://github.com/magento/magento2/pull/8467){: target="_blank"}.* * Magento now displays cross-sells as expected when you use the `product/list/items.phtml` template. *Fix submitted by community member [Koen V](https://github.com/koenner01){: target="_blank"} in pull request [8602](https://github.com/magento/magento2/pull/9662){: target="_blank"}.* * Magento now displays the **Yes** or **No** attribute value on Product pages. *Fix submitted by community member [Timo Klement](https://github.com/TKlement){: target="_blank"} in pull request [8623](https://github.com/magento/magento2/pull/8623){: target="_blank"}.* * Setting the **show_out_of_stock** attribute to **No** now works as expected. *Fix submitted by community member [Theis Corfixen](https://github.com/Corefix){: target="_blank"} in pull request [8736](https://github.com/magento/magento2/pull/8736){: target="_blank"}.* * Magento now uses parent names (instead of SKU-based names) when creating configurable products. *Fix submitted by community member [Pascal Brouwers](https://github.com/PascalBrouwers){: target="_blank"} in pull request [9681](https://github.com/magento/magento2/pull/9681){: target="_blank"}.* * You can now create an `etc/view.xml` file containing an `images` tag with an attribute `module`. *Fix submitted by community member [Marius Strajeru](https://github.com/tzyganu){: target="_blank"} in pull request [10052](https://github.com/magento/magento2/pull/10052){: target="_blank"}.* * Magento now displays the Category selection UI under Conditions when you select a rule for editing. *Fix submitted by community member [duckchip](https://github.com/duckchip){: target="_blank"} in pull request [10094](https://github.com/magento/magento2/pull/10094){: target="_blank"}.* * Magento now displays the correct image when you switch between a configurable product's options. Previously, Magento loaded product images from a different product. * The Magento WYSIWYG editor now handles special characters such as percent sign (%). [GitHub-9452](magento/magento2#9452) * The `indexer:reindex catalog_category_product` process can now handle more than 500 products in a category. * Magento now displays the price set at store view-level for a product that has different prices set on the global and store view level. * Out-of-stock options for configurable products no longer show up in search and layered navigation results. * Magento no longer throws an error when you try to save a product with imported custom options. * Magento now displays the product price even when the product is out-of-stock. * `productWebsiteLink` no longer deletes a product’s custom origins. * Magento now successfully handles purchases of product with minimum quantities of less than one. [GitHub-5570](magento/magento2#5570) * Magento no longer pre-fills the **Set Product as New From Date** field when you set a special price for a product. [GitHub-4387](magento/magento2#4387) * When you edit a widget’s existing condition, Magento now loads the SKU grid with all available SKUs. [GitHub-6985](magento/magento2#6985) * Combine rule conditions now work as expected for product list widgets. [GitHub-7274](magento/magento2#7274) * Component Manager now handles custom Composer modules. Previously, when you tried to install a custom extension using **System > Tools > Web Setup > Component Manager**, Magento displayed the spinning widget indefinitely. [GitHub-6718](magento/magento2#6718) * We’ve fixed an issue with sorting products by tier price. Previously, if you enabled the Used for Sorting in Product Listing field in the Edit Tier Price Attribute page. and then selected sort by tier price on the storefront, Magento displayed an error message. [GitHub-6751](magento/magento2#6751) * Products returned by an API product paginated search now include `category_ids` as a member of `custom_attributes`. [GitHub-6127](magento/magento2#6127) * Product images in Magento installations with multiple store views are now assigned as expected to each store view. [GitHub-6259](magento/magento2#6259) * Magento no longer adds an empty product option to each PUT request. Previously, Magento added an empty option even when the options array was empty. [GitHub-5963](magento/magento2#5963) * You can now successfully disable the lowest price of a {% glossarytooltip 2fd4d100-28d2-45ca-bec1-128444ea98e6 %}configurable product{% endglossarytooltip %} and its associated simple products. Previously, Magento displayed a configurable product's lowest price even after you disabled that price. * Magento no longer applies one simple product's special price to another {% glossarytooltip f85f36ad-2942-446e-b711-39f2a16f6364 %}simple product{% endglossarytooltip %} of the same configurable product. Previously, when you set a regular and special price for a child product, all products associated with the same configurable product displayed a regular and special price, even when these amounts were the same. [GitHub-4442](magento/magento2#4442), [GitHub-5097](magento/magento2#5097), [GitHub-6645](magento/magento2#6645) * You can now edit a product attribute for multiple configurable products. Previously, when you tried to bulk-edit an attribute on a collection of filtered, configurable products, Magento would complete the process without incorporating your edits, and then incorrectly tell you that the products had been edited. * Magento no longer throws an {% glossarytooltip 53da11f1-d0b8-4a7e-b078-1e099462b409 %}exception{% endglossarytooltip %} when you add a configurable product by {% glossarytooltip fd4bed67-7130-4415-8a6f-ad8d8ef8f25e %}SKU{% endglossarytooltip %} if an associated simple product is out-of-stock. * Magento now correctly displays a product as out-of-stock if its child products are disabled. Previously, the {% glossarytooltip 50e49338-1e6c-4473-8527-9e401d67ea2b %}category{% endglossarytooltip %} page failed to list the product at all, rather than listing it as out-of-stock. * A price change to a custom option affects only that option. Previously, changing the price of a custom option also affected the price of related products. [GitHub-4588](magento/magento2#4588), [GitHub-5798](magento/magento2#5798), [GitHub-6041](magento/magento2#6041), [GitHub-6097](magento/magento2#6097) * The check that Magento runs to confirm a configurable product's readiness for sale is now faster. (The `isSalable` method checks that a {% glossarytooltip 2fd4d100-28d2-45ca-bec1-128444ea98e6 %}configurable product{% endglossarytooltip %} can be sold (that is, is in a salable state)). * Query optimizations have improved the speed of configurable product price calculation. * Magento no longer calculates configurable product special prices on the category page. Previously, Magento calculated special prices on the category page, but did not display them. * Magento now displays configurable products as expected after creation. * Magento no longer displays a configurable product on the storefront when its child products are deleted and the **show out-of-stock** setting is set to **No**. * Configurable products no longer show up on category page when all children are set to **enable product = No** and **display out-of-stock products = Off**. * Magento no longer displays the **as low as** label for a disabled price on the Category page. * The price you set on the website scope no longer overrides any local settings you set on configurable products at the store view level. * You can now successfully disable the lowest price of a configurable product and its associated simple products. Previously, Magento displayed a configurable product's lowest price even after you disabled the price. [GitHub-4419](magento/magento2#4419) * Magento now correctly displays a product as out-of-stock if its child products are disabled. Previously, the {% glossarytooltip 50e49338-1e6c-4473-8527-9e401d67ea2b %}category{% endglossarytooltip %} page failed to list the product at all, rather than listing it as out-of-stock. * Magento now displays the correct drop-down option labels for configurable products when using attributes with custom source. * Magento now shows the correct price of a configurable product based in installations that run multiple websites. * We’ve improved the performance of Magento installations that contain configurable products with many (1600+) options. * We’ve resolved some issues with the display of configurable products on the Magento frontend after product creation. * Magento now displays only the set price for a configurable product, not its set price and “as low as” price. Previously, Magento showed both prices if a minimum price was not configured. * Magento no longer removes the simple products associated with a configurable product if you click on the **Save** button more than once while saving the configurable product. Previously, if you clicked on **Save** more than once during an attempt to save a configurable product, Magento removed the simple products that were assigned to it. * Special prices now display correctly for future discounts [GitHub-8375](magento/magento2#8375) * Magento no longer applies one simple product's special price to another simple product of the same configurable product. Previously, when you set a regular and special price for a child product, all products associated with the same configurable product displayed a regular and special price, even when these amounts were the same. [GitHub-4442](magento/magento2#4442), [GitHub-5097](magento/magento2#5097), [GitHub-6645](magento/magento2#6645) * Magento now shows the correct product price for products that you add to the wish list from the category page. [GitHub-6866](magento/magento2#6866) * Users no longer lose configurable product data when you change the interface locale to Chinese (China) or Arabic (Egypt). * You can now successfully disable the lowest price of a configurable product and its associated simple products. Previously, Magento displayed a configurable product's lowest price even after you disabled the price. [GitHub-4419](magento/magento2#4419) * Magento now successfully loads the New Order Email templates. [GitHub-5101](magento/magento2#5101) * The **Send Welcome Email From** field now identifies the store that the customer is associated with. * Magento no longer sends email when the **Disable email communication** setting is set to **yes**. Previously, Magento sent email even when this setting was enabled. [GitHub-5988](magento/magento2#5988) * Static file generation is no longer affected by a race condition that affected merging CSS files. Previously, this race condition interfered with the proper generation of the product frontend. * The ability to disable module output has been removed from Admin. If you disabled module output from Admin in a previous release, you must manually configure these settings. See [Disable module output]({{ page.baseurl }}/config-guide/config/disable-module-output.html) for details. * Static tests run in a Windows environment no longer fail due to file path mismatches. *Fix submitted by community member [Barbazul](https://github.com/barbazul){: target="_blank"} in pull request [9902](https://github.com/magento/magento2/pull/9902){: target="_blank"}.* * You can now link a simple product to a configurable one. Previously, when you tried to use REST to link a simple product to a configurable one, the products were not linked even though Magento responded, `Status Code: 200 OK`. * Videos now play as expected on simple products as they do for configurable products. Previously, simple product videos were displayed as thumbnail images only.[GitHub-6360](magento/magento2#6360) * Magento now displays special characters in store names in email subject lines. Previously, special characters in the store name were converted to numerical character references in the email subject field. [GitHub-8094](magento/magento2#8094) * Configuration paths `persistent_identifier` & `compression_threshold` for Redis Sessions have been corrected. *Fix submitted by community member [Luke Hanley](https://github.com/LukeHandle){: target="_blank"} in pull request [9368](https://github.com/magento/magento2/pull/9368){: target="_blank"}.* * You can no longer delete a currently logged-in user. * Inline editing in Admin now includes ACL checks. Previously, the Quick Edit editor did not respect permissions. * Magento now supports new top level domains for email addresses. [GitHub-4547](magento/magento2#4547) * Page titles in layout files are not translatable. *Fix submitted by community member [Anton Evers](https://github.com/ajpevers){: target="_blank"} in pull request [9992](https://github.com/magento/magento2/pull/9992){: target="_blank"}.* * The `setup:static-content:deploy`, `setup:di:compile` and `deploy:mode:set` commands now return non-zero exit code if an error occurs. *Fix submitted by community member [Pablo Ivulic](https://github.com/pivulic){: target="_blank"} in pull request [7780](https://github.com/magento/magento2/pull/7780){: target="_blank"}.* * We've changed the `select `protected property to `query` in the AbstractSearchResult class. *Fix submitted by community member [Alex Gusev](https://github.com/flancer64){: target="_blank"} in pull request [5043](https://github.com/magento/magento2/pull/5043){: target="_blank"}.* * `\Magento\Framework\Interception\Code\Generator\Interceptor` now supports interceptors for generating for methods that return references. [GitHub-9167](magento/magento2#9167) * The Magento Framework now makes its dependency upon the `zendframework/zend-stdlib` library explicit in `composer.json`. [(GITHUB-6442)](https://github.com/magento/magento2/issues/6442){: target="_blank"} * The currency setup in Admin no longer throws an `in_array` error when a single value is selected. *Fix submitted by community member [Derik Nel](https://github.com/deriknel){: target="_blank"} in pull request [8077](https://github.com/magento/magento2/pull/8077){: target="_blank"}.* * Magento now writes all default configuration values to the `config.php` file. * Customers can now place orders as expected when Magento is running a French locale in production mode. Previously, customers could not complete a transaction in a storefront running a French locale, although they could if they switched to the storefront running the English locale. * Magento now displays server-side Ajax error messages. * JavaScript mixins now work when you add a `urlArgs` argument to a `require_js` file. *Fix submitted by community member [James Reed](https://github.com/thelettuce){: target="_blank"} in pull request [9665](https://github.com/magento/magento2/pull/9665){: target="_blank"}.* * The Magento storefront and Admin panel no longer share form keys. Previously, if a user were navigating both a storefront and the Admin simultaneously, he would be unexpectedly redirected to the Admin dashboard. [GitHub-6201](magento/magento2#6201)Thanks to our hardworking Magento Open Source community members for the following contributions!
* We’ve removed `Zend_Json` from Magento Theme and replaced it with a new serializer class. *Fix submitted by community member [David Manners](https://github.com/dmanners){: target="_blank"} in pull request [9262](https://github.com/magento/magento2/pull/9262){: target="_blank"}.* * We’ve removed `Zend_Json` from the Weee module. *Fix submitted by community member [David Manners](https://github.com/dmanners){: target="_blank"} We’ve removed pull request [9261](https://github.com/magento/magento2/pull/9261){: target="_blank"}.* * We’ve replaced the direct usage of `Zend_Json` with a call to the `Json_Help` class. *Fix submitted by community member [David Manners](https://github.com/dmanners){: target="_blank"} in pull request [9344](https://github.com/magento/magento2/pull/9344){: target="_blank"}.* * We’ve replaced `Zend_Json` in the configurable product block test. *Fix submitted by community member [David Manners](https://github.com/dmanners){: target="_blank"} in pull request [9753](https://github.com/magento/magento2/pull/9753){: target="_blank"}.* * We’ve removed `Zend_Json` from form elements. *Fix submitted by community member [David Manners](https://github.com/dmanners){: target="_blank"} in pull request [9754](https://github.com/magento/magento2/pull/9754){: target="_blank"}.* * We’ve replaced the Magento Framework's `Zend_Session` interface usage with SessionHandlerInterface. *Fix submitted by community member [Timon de Groot](https://github.com/tdgroot){: target="_blank"} in pull request [9285](https://github.com/magento/magento2/pull/9285){: target="_blank"}.* * We’ve removed `Zend_Wildfire` and `Zend_Controller` from the codebase. *Fix submitted by community member [Isolde](https://github.com/SolsWebdesign){: target="_blank"} in pull request [9622](https://github.com/magento/magento2/pull/9622){: target="_blank"}.* * We've resolved issues with selecting widgets in TinyMCE. [GitHub-9655](magento/magento2#9655), [GitHub-9518](magento/magento2#9518) *Fixes submitted by community member [Pieter Hoste](https://github.com/hostep){: target="_blank"} in pull request [9540](https://github.com/magento/magento2/pull/9540){: target="_blank"} and community member [Bernhard](https://github.com/bka){: target="_blank"} in pull request [9711](https://github.com/magento/magento2/pull/9711){: target="_blank"}.* * We’ve replaced `Zend_Log` with `Psr\Log\LoggerInterface`. *Fix submitted by community member [Timon de Groot](https://github.com/tdgroot){: target="_blank"} in pull request [9285](https://github.com/magento/magento2/pull/9285){: target="_blank"}.* * Magento no longer throws a `Zend_Db_Statement_Exception` when a user opens an empty Category page. *Fix submitted by community member [adrian-martinez-interactiv4](https://github.com/adrian-martinez-interactiv4){: target="_blank"} in pull request [9400](https://github.com/magento/magento2/pull/9400){: target="_blank"}.* * You can now save products using the multiple select attribute value. Previously, you could not save values if using this attribute. * You can now log in successfully after creating a custom attribute. Previously, Magento would display an error message, and you could not log in, after first creating a custom attribute, then logging out. * Magento now correctly displays customer address during account creation. Previously, when you selected a default billing address during creation of a new customer account, Magento would not display the address. * Admin users with restricted permissions can now log in successfully as determined by those permissions. Previously, Magento displayed a fatal error when you logged in under these conditions. * We've removed the duplicated {% glossarytooltip bf703ab1-ca4b-48f9-b2b7-16a81fd46e02 %}PHP{% endglossarytooltip %} settings from the sample web server configuration files. * When creating a new page with the Add New Page feature, Magento no longer throws a JavaScript error when {% glossarytooltip 73ab5daa-5857-4039-97df-11269b626134 %}Layout{% endglossarytooltip %} is set to empty. * We've removed the sample password from the Setup Wizard. * You can now assign open-ended start and complete dates for product rules. Previously, if you left the start and end date field blanks when creating a rule, Magento would supply the start and end dates based on the save date. * The Magento Framework now makes its dependency upon the `zendframework/zend-stdlib` library explicit in `composer.json`. [GitHub-6442](magento/magento2#6442) * You can now upload changes to the `robots.txt` file from the Admin panel. * We've eliminated difficulties saving product information when logged in as Admin. Previously, the Product Save feature worked erratically for Admin users. * Custom themes now inherit parent {% glossarytooltip 8c0645c5-aa6b-4a52-8266-5659a8b9d079 %}XML{% endglossarytooltip %} configuration information as expected. * Information set by the **Default Billing Address** and **Default Shipping Address** checkboxes on the Customer page are now saved correctly. * {% glossarytooltip 29ddb393-ca22-4df9-a8d4-0024d75739b1 %}Admin{% endglossarytooltip %} users with appropriate permissions can now reset the passwords of more than one customer at a time. [GitHub-5260](magento/magento2#5260) * Admin interface forms now load data as expected after initializing all components. Previously, under certain conditions, the load indicator would spin indefinitely, and Magento would not load data. * Showing reports on the **Reports > Coupons** page no longer throws an error when the user is in a non-default Admin locale. [GitHub-7037](magento/magento2#7037) * You can now generate static content without a database connection. [GitHub-10041](magento/magento2#10041) * Static content deployment now generates secure content, whether content included secure or non-secure URLs. * The Recently Viewed Products block now appears as expected when the full page cache is enabled. [GitHub-3890](magento/magento2#3890) * We've resolved an issue that prevented you from adding more than one product to a {% glossarytooltip c7ecb18d-cefe-452d-83e2-3c4d5e355db9 %}shopping cart{% endglossarytooltip %} from a wishlist. [GitHub-5282](magento/magento2#5282) * Widgets now accept UTF-8 special characters type as input parameters. Previously, you could successfully create a widget, but UTF-8 special characters were broken. [GitHub-4232](magento/magento2#4232) *Fix submitted by community member [Pieter Hoste](https://github.com/hostep){: target="_blank"} in pull request [9333](https://github.com/magento/magento2/pull/9333){: target="_blank"}.* * Mass actions now work as expected on the Customer grid. Previously, Magento could not process more than 20 items at a time. * Customers who subscribe to a newsletter are now subscribed as expected after confirming their account. Previously, Magento unsubscribed customers from the newsletter after confirming their account. * You can now save products using the multiple select attribute value. Previously, you could not save values if using this attribute. * You can now assign open-ended start and complete dates for product rules. Previously, if you left the start and end date field blanks when creating a rule, Magento would supply the start and end dates based on the save date. * Magento no longer generates incorrect URLs in the site map when the **Use Secure URLs in Admin** setting is set to **Yes**. [GitHub-8644](magento/magento2#8644) * We’ve resolved a conflict that occurred after you changed a base URL. Previously, after you changed a `base_url` value (**Stores->Configuration > General > Web > Base URLs (Secure)**), Magento would update the base URL, then resubscribe, potentially resulting in a failure during the next update secure `base_url` call. * Magento now displays newly registered customers in the Admin customer list as expected. * The Customer Segment page no longer shows non-matching customers when a customer logs in and you refresh the Customer Segment page. * You can now add a `translate` attribute to any String argument in the `di.xml` file for any class. This attribute provides an ability on the level of dependency injection configuration to specify that an argument can be translated. The actual translation of strings is handled by another Magento component. * Magento frontend scope filters now work as expected. Previously, Magento did not reload product information correctly when you applied a filter using **Catalog > Product**. * Only users with permission to view a store can view or process the orders placed on it. * You can render the `tax_class_id` attribute nonsearchable. Previously, Magento displayed a 503 error under these circumstances. * Fixed the location of the `wishlist.js` file. *Fix submitted by community member [Koen V.](https://github.com/koenner01){: target="_blank"} in pull request [8633](https://github.com/magento/magento2/pull/8633){: target="_blank"}.* * You can no longer download products after you’ve set order state to `STATE_CANCELED`. *Fix submitted by community member [nazarpadalka](https://github.com/nazarpadalka){: target="_blank"} in pull request [8917](https://github.com/magento/magento2/pull/8917){: target="_blank"}.* * Fixed a typo in the Pull Request Template. *Fix submitted by community member [tomislavsantek](https://github.com/tomislavsantek){: target="_blank"} in pull request [8908](https://github.com/magento/magento2/pull/8908){: target="_blank"}.* * You now receive an error message as expected if you try to submit a product review while not logged in. *Fix submitted by community member [quienti](https://github.com/quienti){: target="_blank"} in pull request [9001](https://github.com/magento/magento2/pull/9001){: target="_blank"}.* * Fixed grammar error in the customer dashboard. *Fix submitted by community member [Petar Sambolek](https://github.com/sambolek){: target="_blank"} in pull request [9080](https://github.com/magento/magento2/pull/9080){: target="_blank"}.* * The popup window in the Safari browser now closes properly. *Fix submitted by community member [Hans Schouten](https://github.com/HansSchouten){: target="_blank"} in pull request [8824](https://github.com/magento/magento2/pull/8824){: target="_blank"}.* * We’ve fixed minor performance issues when you use `/pub `as `docroot`. *Fix submitted by community member [Joseph Maxwell](https://github.com/JosephMaxwell){: target="_blank"} in pull request [9094](https://github.com/magento/magento2/pull/9094){: target="_blank"}.* * The Actions dropdown menu is now properly aligned in the Admin when the action column is not the last column. *Fix submitted by community member [Marius Strajeru](https://github.com/tzyganu){: target="_blank"} in pull request [10082](https://github.com/magento/magento2/pull/10082){: target="_blank"}.* * Magento now deletes pending entries in `cron_schedule` when you reconfigure a cron job. *Fix submitted by community member [Anton Evers](https://github.com/ajpevers){: target="_blank"} in pull request [9957](https://github.com/magento/magento2/pull/9957){: target="_blank"}.* * We’ve fixed the cron timestamp method. *Fix submitted by community member [Anton Evers](https://github.com/ajpevers){: target="_blank"} in pull request [9943](https://github.com/magento/magento2/pull/9943){: target="_blank"}.* * You can now save customers with unique attributes. *Fix submitted by community member [storbahn](https://github.com/storbahn){: target="_blank"} in pull request [9712](https://github.com/magento/magento2/pull/9712){: target="_blank"}.* * The `Magento_Framework/View/Layout/etc/elements.xsd` file `blockReferenceType` definition now allows for the optional argument template. *Fix submitted by community member [jissereitsma](https://github.com/jissereitsma){: target="_blank"} in pull request [9772](https://github.com/magento/magento2/pull/9772){: target="_blank"}.* * Customer sessions for different customers are no longer shared on installations on multiple websites. [GitHub-4842](magento/magento2#4842), [GitHub-6468](magento/magento2#6468) * Magento now handles quotation marks in product names. Previously, quotation marks in product names caused a JSON error on the Product page. [GitHub-8059](magento/magento2#8059) * When you add an address, new custom attributes are now displayed together, along with other address details. * You can now edit the default store view and save it under a different name. [GitHub-7349](magento/magento2#7349) * `.htaccess` deny code execution now works as expected for Apache and php-fpm. [GitHub-6766](magento/magento2#6766) * Magento now displays the WYSIWYG editor as expected. [GitHub-6222](magento/magento2#6222), [GitHub-4828](magento/magento2#4828), [GitHub-6815](magento/magento2#6815) * The Admin’s Most Viewed Products tab now displays correct product prices. Previously, prices for products in Most Viewed Products tab were incorrectly listed as $0. [GitHub-5660](magento/magento2#5660) * Magento now renders images as expected in the product description area. Previously, Magento did not render images in this area, and would display a broken link. [GitHub-6138](magento/magento2#6138) * When you override `module-directory/etc/zip_codes.xml` from a local module, all country codes are now included as expected. Previously, only the last country code was included, which affected the custom check out process. [GitHub-6694](magento/magento2#6694) * We’ve added the missing single quote (‘) to the Google API Tracking code. *Fix submitted by community member [Petar Sambolek](https://github.com/sambolek){: target="_blank"} in pull request [9084](https://github.com/magento/magento2/pull/9084){: target="_blank"}.* * Google Analytics tracking now works when Cookie Restriction is enabled. *Fix submitted by community member [Bernhard](https://github.com/bka){: target="_blank"} in pull request [9713](https://github.com/magento/magento2/pull/9713){: target="_blank"}.* * The CSS minify option no longer removes the whitespace around the minus (-) sign. Also, this option is now compatible with the `calc()` CSS function. *Fix submitted by community member [Petar Sambolek](https://github.com/sambolek){: target="_blank"} in pull request [9027](https://github.com/magento/magento2/pull/9027){: target="_blank"}.* * Magento no longer encounters an error when it cannot find a product image file. [GitHub-5184](magento/magento2#5184), [GitHub-5497](magento/magento2#5497), [GitHub-3545](magento/magento2#3545), [GitHub-5871](magento/magento2#5871) * Magento now successfully saves images that you edit in a {% glossarytooltip 98cf4fd5-59b6-4610-9c1f-b84c8c0abd97 %}WYSIWYG{% endglossarytooltip %} editor. Previously, when you tried to change an image by right-clicking it in a WYSIWYG editor and choosing Insert/Edit Image, Magento did not save your changes. * You can now preview uploaded images. * You can now set an image size for product watermarks. [GitHub-5270](magento/magento2#5270) * Graphics now scroll as expected on mobile devices. [GitHub-5302](magento/magento2#5302) * Magento now successfully saves images that you edit in a {% glossarytooltip 98cf4fd5-59b6-4610-9c1f-b84c8c0abd97 %}WYSIWYG{% endglossarytooltip %} editor. Previously, when you tried to change an image by right-clicking it in a WYSIWYG editor and choosing Insert/Edit Image, Magento did not save your changes. * Inserted images on the content block of Category no longer reference the Admin URL. Previously, when you used the Wysiwyg editor to insert an image into the Content block of a Category, the image URL on the frontend would reference the Admin location. When you subsequently logged out of the Admin panel, and refreshed the Category page, the image is no longer available. * You can now successfully import multiselect attributes that contain special symbols or delimiters. Previously, when you tried to import attributes containing delimiters, data validation (and the import) failed. * You can now import negative quantities. Previously, when importing a product quantity of '-1', Magento returned an error. * Magento now imports custom options correctly. Previously, when you tried to import a custom option, the import failed, and Magento displayed this error: `Javascript Error: Uncaught RangeError: Maximum call stack size exceeded`. [GitHub-5573](magento/magento2#5573) * We’ve added a new way to import images: You can now successfully import images when you set your document root to `your_Magento_install_dir/pub`. Previously, you needed to set document root to `/magento` to import images. Both ways of importing now work. [GitHub-5359](magento/magento2#5359) * Magento now removes category URL keys from the `url_rewrite` table as expected during import. Previously, Magento did not remove these keys, which triggered a failure during import. This subsequently caused Magento to quickly reach the maximum error count, returning this error: "Maximum error count has been reached or system error is occurred!". [GitHub-1471](magento/magento2#1471) * You can now export a {% glossarytooltip fbcfce51-68e2-482f-84d5-f28d84404cff %}bundle product{% endglossarytooltip %} that contains a custom text area attribute. Previously, if you tried to export this type of bundle product, the export would fail, and Magento displayed the message, "There is no data for the export". * Magento now maintains super attribute ordering of configurable products with multiple super attributes after export or import. Previously, after import or export, the ordering of super attributes was not maintained. [GitHub-6079](magento/magento2#6079) * Magento now correctly displays both configurable and simple products, their attribute values, and visibility values after import if SKU is an integer. [GitHub-5547](magento/magento2#5547) * Magento now imports customer data as expected after the data passes the pre-import validation step. Previously, although data passed this validation step, an error would occur during import, and Magento displayed this message: `Invalid data for insert`. [GitHub-4921](magento/magento2#4921), [GitHub-9469](magento/magento2#9469) * The export process now populates values in the configurable variations column for configurable products as expected. Previously, when exporting more than one product, the values for the configurable variations column for configurable products were not included. * Magento now displays imported product images in this order: first, the base image, then the additional images in the order in which they were listed in the {% glossarytooltip 6341499b-ead9-4836-9794-53d95eb48ea5 %}CSV{% endglossarytooltip %} file. Previously, Magento displayed images in this unexpected order: first, an additional image, then the base image, and finally, all remaining additional images. * Magento now runs a selective partial re-indexing operation after import if you enable **Update on Schedule**. Previously, Magento ran a full reindex no matter which index mode was set. * We've fixed an issue with the correct representation of date and time zones of items in a product {% glossarytooltip 8d40d668-4996-4856-9f81-b1386cf4b14f %}catalog{% endglossarytooltip %} during import or export. Previously, Magento exported all dates in the default format (UTC-8), including values that you set to be displayed using another standard. * Magento now successfully imports customer multiselect attributes. Previously, when you imported a CSV file with either the option's ID numbers or the option's values, Magento returned an error. * Magento now displays more verbose information about duplicated information with links to action for troubleshooting the import process. Previously, Magento displayed duplicated or incomplete information on the product page after import. * Magento now exports rows only once when product information contains HTML special characters. Previously, Magento exported rows containing product information that included HTML characters at least twice. * We've improved the import speed of advanced pricing data. Previously, the import process for this information frequently stopped after the import of approximately 300 rows of data, and Magento displayed this message: `Please Wait`. * The CatalogImportExport uploader now handles HTTPS images as expected. *Fix submitted by community member [Clement Beudot](https://github.com/clementbeudot){: target="_blank"} in pull request [8278](https://github.com/magento/magento2/pull/8278){: target="_blank"}.* * You can now successfully import multiselect attributes that contain special symbols or delimiters. Previously, when you tried to import attributes containing delimiters, data validation (and the import) failed. * When you delete an image in Admin, Magento no longer deletes it on the server. Previously, Magento deleted it from the server as well, which caused errors for other products (example error message: `Cannot gather stats! Warning!stat(): stat failed for`). * The exported sheet now generates or renders data for columns that indicate associations for configurable products. * Magento no longer deletes a product after you select the Replace option while importing a product. Previously, Magento deleted the product rather than replacing it. * Magento can now import `additional_images` that are tagged with labels that contain a comma separator. * We've fixed an issue where product URL keys (for SKUs) were not auto-generated as expected during import. [GitHub-5188](magento/magento2#5188) * Magento now updates attribute sets as expected when importing products from CSV. [GitHub-5498](magento/magento2#5498) * The CatalogImportExport uploader can now handle HTTPS images. Previously, if the URL of a file contained HTTPS, the uploader still used the HTTP provider to retrieve the image, which lead to an error. [GitHub-8277](magento/magento2#8277) * With valid permissions, you can now regain access to your Admin account after it is temporarily disabled due to invalid credentials. Previously, you could not unlock the account of a valid Admin user if it were disabled due to multiple invalid login attempts. * Web API tokens now have a default expiration period: 4 hours for Admin tokens and 1 hour for Customer tokens. This can be changed in the [Admin Panel configuration settings]({{ site.baseurl }}/guides/v2.2/get-started/authentication/gs-authentication-token.html#admin-and-customer-access-tokens) * You can now edit `authentication_lock` from the Admin. *Fix submitted by community member [Elias Kotlyar](https://github.com/EliasKotlyar){: target="_blank"} in pull request [9820](https://github.com/magento/magento2/pull/9820){: target="_blank"}.* * We've improved the performance of the algorithm that Magento uses to calculate batch sizes while indexing categories. * The category/product indexer now successfully completes a full reindexing of all indexes on large profiles with 500,000 or more products. Previously, Magento successfully generated a large profile, but failed to complete the reindexing of the categories or products, and displayed the following error: "Error 1114: Table is full". * `IndexerHandlerFactory` no longer tries to cast the `$indexer` object to a String if an error occurs. Since `$indexer` is an object of type `IndexerInterface` and does not have a `__toString()` method, attempting to cast the `$indexer` object to a String previously resulted in an error. [GitHub-5155](magento/magento2#5155) * The Magento flat indexer now collects correct product data for `ROW_ID`. * The Magento flat indexer no longer throws an error after flat tables are enabled and reindexed. This fix applies to both product and {% glossarytooltip 8d40d668-4996-4856-9f81-b1386cf4b14f %}catalog{% endglossarytooltip %} tables. * Magento now runs a selective partial re-indexing operation after import if you enable **Update on Schedule**. Previously, Magento ran a full reindex no matter which index mode was set. * `IndexerHandlerFactory` no longer tries to cast the `$indexer` object to a String if an error occurs. Since `$indexer` is an object of type `IndexerInterface` and does not have a `__toString()` method, attempting to cast the `$indexer` object to a String previously resulted in an error. [GitHub-5155](magento/magento2#5155) * The category/product indexer now successfully completes a full reindexing of all indexes on large profiles with 500,000 or more products. Previously, Magento successfully generated a large profile, but failed to complete the reindexing of the categories or products, and displayed the following error: "Error 1114: Table is full". * We’ve resolved failures with indexing in installations that implemented catalogs containing at least 5,000 - 6,000 SKUs. * We've improved the performance of the algorithm that Magento uses to calculate batch sizes while indexing categories. * Reindexing no longer results in an SQL error that prevents bundle products from being reindexed, and results in wrong product prices. * We’ve added PHP interfaces that add the ability to change the status of a {% glossarytooltip c8f00e9d-7f70-4561-9773-60da604ba5c9 %}shipment{% endglossarytooltip %}. The new Creditmemo interface supports tasks you can already do through the Magento Admin, including the ability to:* support returning multiple units of a configurable product. Previously, when you tried to refund an order, you could refund only one unit of a configurable product, not the amount in the original order.
* return the product to stock
* change order status after a credit memo has been created.
- We've introduced the
Magento\Vault\Block\TokenRendererInterface::getToken
method. This method provides details about payment tokens to renderer components, such as public hash and available card or account details. Third-party developers can use this method to implement this functionality in their payment integrations.
* Save customer PayPal account information in the Braintree Vault when using Braintree as a service. This enhancement provides a secure method for charging my customers without prompting them to enter a payment information for multiple purchases or for purchases from multiple devices. We've also added support for Maestro and Discover BINs added to the credit card form both for Braintree and PayPal solutions.
* Configure dynamic descriptors (Company Name, Phone and URL) for Braintree. This enhancement supports customers easily identifying a source of transactions in their bank statements. (This will potential simplify the resolution of disputed transactions by supporting the display of the Kount status for Braintree in the Admin interface.)
Uncaught Error: [paypal-container] is not a valid DOM Element
.
Uncaught Error: [paypal-container] is not a valid DOM Element
.
This release includes substantial improvements to Magento caching, image processing, and re-indexing, among other enhancements.
* We've improved the speed of static asset deployment and now support a variety of asset deployment strategies that can be used to optimize speed and size of assets deployed. Indexers can now be run with 256M of PHP RAM and default MySQL configuration settings. Developers can further tune memory usage to improve indexer performance (in some cases up to 100% improvement). Please see [Magento Optimization Guide]({{ site.baseurl }}/guides/v2.0/config-guide/prod/prod_perf-optimize.html) for further details. * We've improved {% glossarytooltip 1a70d3ac-6bd9-475a-8937-5f80ca785c14 %}storefront{% endglossarytooltip %} performance when creating 2500 or more product variants. * Opening many products from the Admin interface is now faster. * Creating many (2500 - 5000) product variants, both simple and complex {% glossarytooltip 6e836354-0067-48ac-84ce-a4ab7c0c492e %}product types{% endglossarytooltip %} is more efficient. * You can now quickly generate or preview multiple variations of a {% glossarytooltip 2fd4d100-28d2-45ca-bec1-128444ea98e6 %}configurable product{% endglossarytooltip %}. (Saving these variations to the database can be time-consuming, if you have several thousand product options, and our efforts to improve performance continue.) Previously, Magento threw an Invalid Form key error is thrown while you tried to save a configurable product with variations. * Magento no longer performs unnecessary file check operations (for example, `file_exists`, `is_file`), which improves the performance of the category and product pages. * We've optimized compiler performance (that is, the [`setup:di:compile`]({{ page.baseurl }}/config-guide/cli/config-cli-subcommands-compiler.html) command). * We’ve improved the performance of the Display Time for Category Edit page for catalogs with many products or categories. [GitHub-7469](magento/magento2#7469) * We've improved the process of resizing images on the {% glossarytooltip b00459e5-a793-44dd-98d5-852ab33fc344 %}frontend{% endglossarytooltip %}. * The process of loading many configurable products with multiple images (for example, configurable products with three attributes and 250 options) is more efficient. [(GITHUB-6979)](https://github.com/magento/magento2/issues/6979){: target="_blank"} * Magento now caches image metadata, which avoids the time-consuming need to read images for {% glossarytooltip 3f0f2ef1-ad38-41c6-bd1e-390daaa71d76 %}metadata{% endglossarytooltip %} loading. * Magento now caches attribute options for the layered navigation feature. This reduces the number of queries to the database, and consequently improves performance. * We’ve optimized and streamlined how we cache EAV attributes by removing unnecessary SQL queries. * PHPCS can now correctly parse the syntax of PHP 7.x return types. * Cart Price rules are now applied as expected to {% glossarytooltip 422b0fa8-b181-4c7c-93a2-c553abb34efd %}payment method{% endglossarytooltip %} conditions. Previously, discounts set in Cart Price rules were not applied during {% glossarytooltip 278c3ce0-cd4c-4ffc-a098-695d94d73bde %}checkout{% endglossarytooltip %}. * Magento now handles the `catalog_product_entity_media_gallery_value.position` value the same whether you’ve installed or upgraded the product. Previously, these values differed depending upon whether you upgraded or freshly installed your Magento code. * You can now successfully install Magento with sample data when **auto_increment_increment** is set to **3** in the `options` file. Previously, installation completed successfully, but Magento displayed this error: `Something went wrong while installing sample data. Please check var/log/system.log for details. You can retry installing the data now or just start using Magento.` * You can now select and add a category to a Cart Price rule. Previously, Magento displayed this error: "Uncaught ReferenceError: sales_rule_form is not defined", and did not add the selected category to the condition. [GitHub-5526](magento/magento2#5526) * A cart rule with a coupon code no longer overrides a cart rule without a coupon code when multiple {% glossarytooltip b3292cb5-4262-4914-a258-efac79ac8b99 %}cart rules{% endglossarytooltip %} are applied. Previously, when you created two cart rules and applied them to a cart, the rule with a coupon was applied, but the second rule was not. [GitHub-6294](magento/magento2#6294) * The SalesRule table is the same whether you’ve freshly installed or updated Magento 2.2. * Magento no longer discounts items that belong to an excluded category. Previously, you were unable to exclude products assigned to a specific category due to the cart price rule. * The Cart Price rule nows affects coupon life as expected. Previously, coupons did not persist longer than the current date if they did not have a designated end-date. * Customers can no longer apply a coupon code twice. Previously, the "Uses per Coupon" limit did not work for auto-generated coupons. * Magento now implements free shipping if there is a Cart Price Rule match. [GitHub-6584](magento/magento2#6584) * SalesRule now applies to auto-generated coupon codes as expected. * You can now create a cart price rule without any date range restrictions. Previously, if you left the **From** and **To** dates empty, Magento filled them in with the current date. [GitHub-6762](magento/magento2#6762), [GitHub-6122](magento/magento2#6122) * When you change the currency associated with store, Magento also adjusts the currency in all product listings. [GitHub-6746](magento/magento2#6746) * Non-administrative users with access rights to Products, Marketing, Promotions, and Cart Price rules can now search for categories in Cart Price rules. GitHub-6168](magento/magento2#6168) * Changing a product price under the website scope now updates the product price across all stores. Previously, any price you set on the {% glossarytooltip ca5a9ff1-8182-4fc4-a34b-9b3f831dbf3f %}store view{% endglossarytooltip %} level overrode the price set in website scope. [GitHub-5133](magento/magento2#5133) * The list of allowed countries is now configured as part of website scope, not store view scope. [GitHub-2946](magento/magento2#2946) * A restricted user can now change storeview- or website- level attributes that are defined within his scope. * You can now select the scope for an action that you are running from the Catalog page's product table. * The price you set on the website scope no longer overrides any local settings you set on configurable products at the store view level. * The Product page scope selector now displays all related websites associated with a restricted user. * Out-of-stock items no longer erroneously appear in results of layered navigation if that product option is out-of-stock. * Segmentation faults no longer occur when doing a `catalogsearch_fulltext` re-index, and indexing succeeds. Previously, in a large database (more than 70,000 products), the `catalogsearch_fulltext` (MySQL) re-index failed with a `Segmentation fault` message. [GitHub-7963](magento/magento2#7963) * Magento now factors in the Weight attribute as expected when you use advanced search on grouped products. * Attribute weighting now works correctly for the MySQL adapter. [GitHub-9020](magento/magento2#9020) * UPS now generates shipping rates for Puerto Rico postal codes. * Magento now displays tracking information when selected for the second shipping label created for the DHL shipping method. Previously, when you tried to display a completed DHL shipping label, Magento displayed an exception. * Refreshing your browser page while on the Review and Payments page of the checkout process no longer clears information from form fields. Previously, Magento cleared information from the **Ship to** field if you refreshed your browser page during this process. * You can now reload a page during {% glossarytooltip 278c3ce0-cd4c-4ffc-a098-695d94d73bde %}checkout{% endglossarytooltip %} without unintentionally changing shipping information. * You can now save the settings you enter when creating a shipping label on an existing shipment. Previously, clicking the **Save** button resulted in an error, and the shipping label was not saved. * Added missing translation to label `argument xml`. *Fix submitted by community member [Mr Khoa](https://github.com/mrkhoa99){: target="_blank"} in pull request [9095](https://github.com/magento/magento2/pull/9095){: target="_blank"}.* * Magento no longer throws a fatal error when you create a new shipment for a placed order. * The State/Province field now changes to an input field as expected after you select United Kingdom when filling out the shipping address during checkout * The Free Shipping rule now works as expected with table rate shipping. [GitHub-6346](magento/magento2#6346) * Magento now passes the correct object to the `\Magento\Shipping\Model\Shipping::collectRatesByAddress` method. [GitHub-7309](magento/magento2#7309) * Magento now displays the checkout page or cart as expected when you try to edit a virtual item from the multi shipping page. Previously, Magento displayed a 404 error page instead of redirecting to the checkout page or shopping cart. [GitHub-7257](magento/magento2#7257) * We've resolved an issue where Magento did not display applicable flat-rate USPS box methods during checkout. [GitHub-6798](magento/magento2#6798) * Sitemap image URLs now match the URLs on product pages. *Fix submitted by community member [Petar Sambolek](https://github.com/sambolek){: target="_blank"} in pull request [9082](https://github.com/magento/magento2/pull/9082){: target="_blank"}.* * The sitemap is no longer generated in the wrong folder when `vhost` is connected to `/pub`. *Fix submitted by community member [Joseph Maxwell](https://github.com/JosephMaxwell){: target="_blank"} in pull request [9094](https://github.com/magento/magento2/pull/9094){: target="_blank"}.* * Magento now displays UPS rates on the initial load of the checkout page. Previously, although shipping rates showed up properly at the cart level, the payment page did not load the correct shipping options. [GitHub-6564](magento/magento2#6564) * We've corrected a problem with `_requirejs` asset retrieval via `static.php` in {% glossarytooltip a3e37235-4e8b-464f-a19d-4a120560206a %}static content{% endglossarytooltip %} versioning. * Versioning of {% glossarytooltip 363662cb-73f1-4347-a15e-2d2adabeb0c2 %}static files{% endglossarytooltip %} (including CSS, JS, font, and image files) is now enabled by default. * We've improved the speed of static asset deployment. See [Deploy static view files]({{ site.baseurl }}/guides/v2.1/config-guide/cli/config-cli-subcommands-static-view.html){: target="_blank"} for more information about available options. * The `setup:static-content:deploy` command now provides flags that you can use to exclude or include individual themes, areas, and locales. For more information, see [GitHub-4294](magento/magento2#4294). * Magento no longer creates redundant objects when initializing a configurable product on the Category page. * You can now disable swatches for both the {% glossarytooltip 8d40d668-4996-4856-9f81-b1386cf4b14f %}Catalog{% endglossarytooltip %} page and search results (quick or advanced). To disable swatches from these requests, disable **Stores > Configuration > Catalog > Storefront > Show Swatches in Product List**. * We've optimized the logic that Magento uses to validate swatch attributes. * Magento now caches swatch data in the block cache, which improves the responsiveness of the configurable product pages. * Magento now correctly matches images to products. Previously, after you selected a configurable product, Magento displayed the images for another product. * Magento no longer displays a notice error when you create a text swatch attribute while the **update product preview image** setting is set to **Yes**. *Fix submitted by community member [Pascal Brouwers](https://github.com/PascalBrouwers){: target="_blank"} in pull request [6707](https://github.com/magento/magento2/pull/6707){: target="_blank"}.* * Magento now displays Up-sells on the Product page. * We’ve fixed an SQL error that previously caused a logical error during the creation of a TargetRule. (This issue affected the `modifyConditionByCategoryIdsAttribute` function.) * Magento now correctly calculates tax and order totals when a discount is used for prices that include tax and catalog prices excluding tax. Please note this is not a valid tax configuration and can introduce rounding errors. * We’ve improved the performance of the Tax Rules form in installations containing many tax rates. * You can now create a tax rule when running Magento in Mozilla Firefox and Internet Explorer. Previously, you could not select a tax rate, and Magento displayed an error. * The `tax_region_id` value is no longer hard-coded in the `\Magento\Tax\Setup\InstallData` file. * We've fixed a fatal issue that occurred if you executed the CatalogImportExport test before running a subsequent test. Previously, you'd receive this error: ```Failed asserting that false is true```. * We've fixed a fatal issue that occurred if you ran Travis builds on `imagettfbbox 2.1.2`. Previously, you'd receive this error:```PHP Fatal error: Call to undefined function Magento\Framework\Image\Adapter\imagettfbbox() in /home/travis/build/magento/magento2/lib/internal/Magento/Framework/Image/Adapter/Gd2.php```
- Varnish now supports
grace
andsaint
mode to ensure that customers always see cached pages.
We are grateful to the wider Magento community and would like to acknowledge their contributions to this release. Check out the following ways you can learn about the community contributions to our current releases:
-
If a community member has provided a fix for this release, we identify the fix in the Fixed Issue section of these notes with the phrase, "Fix provided by community member @member_name".
-
The Magento Community Engineering team Magento Contributors maintains a list of top contributing individuals and partners by month, quarter, and year. From that Contributors page, you can follow links to their merged PRs on GitHub.
Our technology stack is built on PHP and MySQL. For more information, see [System Requirements]({{ site.baseurl }}/magento-system-requirements.html).
See [How to get the Magento software]({{ site.baseurl }}/guides/v2.2/install-gde/bk-install-guide.html) for complete installation and upgrade information.
The [Data Migration Tool]({{ page.baseurl }}/migration/migration-migrate.html){: target="_blank"} 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]({{ page.baseurl }}/migration/migration-tool-install.html){: target="_blank"}. Consider exploring or contributing to the Magento Data Migration repository{: target="_blank"}.
The Code Migration Toolkit{: target="_blank"} helps transfer existing Magento 1.x store extensions and customizations to Magento 2.0.x. The command-line interface includes scripts for converting Magento 1.x modules and layouts.