Magento Commerce 2.2.0 Release Notes
Release notes updated June 4, 2018.
We are pleased to present Magento Commerce 2.2.0 General Availability. This release includes numerous functional fixes and enhancements.
Highlights
Magento Commerce 2.2.0 includes a wealth of new, exciting features, and hundreds of enhancements and fixes. Look for the following highlights in this release:
-
B2B Commerce functionality is designed to meet the needs of merchants whose primary customers are companies, rather than consumers. Companies can create and maintain their own accounts, each with teams of buyers with various roles and levels of permission. B2B Commerce functionality also includes a flexible API that integrates with a variety of ERP solutions from Magento partners. See B2B Quick Start for an overview of the rich B2B feature set we’re introducing in this release, and Getting Started with Magento Commerce for B2B for a more complete exploration of these new features.
-
Magento Commerce Starter. In addition to our Pro version, Magento Cloud (Commerce) now comes in a smaller, platform-as-a-service version — Magento Commerce Starter. This subscription plan differs from our Enterprise Cloud version in some key ways. For an overview of these versions, see Welcome to Magento Commerce Cloud.
-
Improvements to the Magento Commerce (Cloud) deployment process. This release includes new build and deployment variables. Users of earlier versions of Magento Commerce (Cloud) will note that MCC has been replaced by ece-tools and ece-patches, which allows for patching your Magento Commerce (Cloud) without requiring a full installation of base code and the patch.
-
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.
-
Integrated Signifyd fraud protection. You can learn more about this fraud protection service, which can help merchants eliminate liability for any losses or fees from fraudulent orders, in Signifyd fraud protection.
-
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, Varnish 3, and Solr. We now support PHP 7.1 and Varnish 5, along with Redis 3.2 and MySQL 5.7. All third-party libraries have been upgraded to the latest stable version. Note: Although we’ve dropped support for Solr with this release, Solr code will remain in the Magento code base until a later release.
-
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.
-
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.
Security enhancements
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.
Known issues
Magento 2.2.0 GA includes the following known issues. Fixes for these issues are scheduled for patch releases in the near future.
General Issues
The following issues affect all editions of Magento 2.2.0:
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: Magento does not correctly calculate the Catalog Price rule for bundle products with custom options.
Issue: Visual Merchandiser performance is degraded when Category contains many products.
Issue: The Performance Toolkit does not currently work.
Magento Commerce-only issues
The following issues affect the Commerce edition of Magento 2.2.0:
Issue: Store website doesn’t work when Redis cache is installed and the PhpRedis extension is enabled. Workaround: Contact Support for a patch.
Issue: Magento does not apply the Catalog Price Rule as expected when Persistent Shopping Cart is enabled in installations running Fastly cache.
Issue: Magento displays an error (“Error 503 Service Unavailable”
) when you try to save a newly-added Catalog Price rule.
Issue: This issue affects the default configuration of category permissions in a multi-storeview environment. When the use category path in product URL value is set to false, and the user navigates to the product page for a product contained in that category, he is redirected to a 404 error page. Workaround: Log in to your account, then download and apply MDVA-6272_EE_2.2.0_composer.patch
.
B2B-only issues
Issue: Resubmitting an order that contains an out-of-stock product causes an error. Instead of displaying a message that indicates that a product is out-of-stock, Magento displays this exception: Warning: Division by zero in \/usr\/share\/nginx\/html\/vendor\/magento\/module-tax\/Model\/Calculation\/AbstractAggregateCalculator.php
Issue: You cannot save a customized shared catalog when the indexer state table contains duplicates. Workaround: Remove the duplicate record from the database.
Issue: You cannot export Advanced Pricing information to a CSV file on a server running a medium-sized Magento installation (that is, one that supports approximately 40,000 SKUs, 300 shared catalogs, and three store views). Instead, the export will fail due to a time out.
Fixed issues
This release contains hundreds of fixes and enhancements.
Installation, upgrade, deployment
- You can now run
magento setup:upgrade --keep-generated
in production mode. Previously, Magento would throw an error when you ransetup:upgrade
after compiling dependency injection. (This significantly curtailed your ability to deploy continuous integration.) GitHub-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
- Third-party command line tools no longer fail when you run
setup:di:compile
.
- Magento now correctly applies website configuration parameters to the corresponding store view. GitHub-7943
- Fixed HTML inline style used when sending emails when implementing the upgraded
emorgifier
library. GitHub-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 forcrontab
commands contained double quotes that were not escaped, which caused invalid commands to be written to thecrontab
file. GitHub-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.
- It is now possible to configure Redis settings for session storage, default cache, and full page cache from the command line.
- Custom themes now inherit parent XML 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
andprint.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
anddev:template-hints:disable
commands to manage template hints. Fix submitted by community member Miguel Balparda in pull request 9778.
- We’ve added the
dev:query-log:enable
anddev:query-log:disable
to manage database query logging. Fix submitted by community member Federico Rivollier in pull request 9264.
- We’ve added the
varnish:vcl:generate
command to create the Varnish VCL file. Fix submitted by community member Piotr Kwiecinski in pull request 9286.
- 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
- We’ve fixed issues with upgrading installations with split databases.
- Static content deployment (SCD) now works when multiple languages are specified. Previously, Magento displayed an error if you tried to deploy static content in more than one language (for example,
bin/magento setup:static-content:deploy en_CA fr_CA de_DE
).
- 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
- The Magento command-line interface now sets the correct exit codes when an upgrade task fails. GitHub-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
- 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
- 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 themodule:uninstall
command usessymfony/process
, the command stopped running. GitHub-5797
- 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 themodule:uninstall
command usessymfony/process
, the command stopped running. GitHub-5797
AMQP
- The
magento queue:consumers:start
command now works correctly when you provide themax-messages
argument.
-
Magento no longer indicates errors when you install without AMQP. Previously, Magento displayed the following error:
1
`report.CRITICAL: Error Connecting to server (0): Failed to parse address ":" {"exception":"[object] (PhpAmqpLib\\Exception\\AMQPRuntimeException(code: 0): Error Connecting to server (0): Failed to parse address \":\" at /vendor/php-amqplib/php-amqplib/PhpAmqpLib/Wire/IO/StreamIO.php:106)"} []`
- You can now override queue publishers configuration through the
env.php
file.
- Magento now re-processes queue messages if the consumer process is terminated.
- Magento no longer inserts HTTPSS:// for HTTPS in a store address when you install Magento using an HTTPS address over SSL. GitHub-6262
Cart and checkout
- Magento now implements the minicart maximum display recently added item setting to your shopping cart. Previously, Magento displayed all the items in the shopping cart, even when the number of items exceeded this limit. GitHub-4750
- You can now reload a page during checkout without unintentionally changing shipping information.
- Custom address attributes now appear in the Checkout summary.
- Lengthy Order Status 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 shopping cart from a wishlist. GitHub-5282
- The number of items in the minicart is now updated correctly when you run Magento in mixed HTTP/HTTPS mode. GitHub-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 website 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 cart rules 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
- 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 JavaScript 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, GitHub-7051
- Magento now displays the State/Province field on the Add New Address page. GitHub-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 Risler in pull request 8474.
- You can now translate the FPT label on the checkout page. Fix submitted by community member Oleksii Korshenko in pull request 9204.
- Magento no longer truncates bill-to names and shio-to names to 20 characters in the Admin. Fix submitted by community member Isolde in pull request 9654.
- You can now delete the last item in your cart when the Minimum Order setting is enabled. Fix submitted by community member storbahn in pull request 9714.
- You can now create unique checkbox IDs for the Terms and Conditions part of the checkout process. Fix submitted by community member Bernhard in pull request 9717.
- Magento now correctly displays the coupon label in the shopping cart during checkout. Fix submitted by community member Sylvain Rayé in pull request 9721.
- Magento now pre-fills prefixes and suffixes in the quote shipping address Fix submitted by community member Anton Evers in pull request 9925.
- 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 in pull request 9429.
- The shopping cart now handles products with custom options. GitHub-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, GitHub-7329, GitHub-8358
- Minicart now shows all products you’ve added, whether you added them while signed-in or not. Previously, the minicart contained only products that you added while signed in. GitHub-7500
- Magento now displays the ”Thank you for your purchase!” on the checkout success page.
- Magento now displays the correct error message when you enter an invalid discount code when making a payment. GitHub-7230
- You can now directly add a configurable product to your shopping cart from category page. GitHub-2574, GitHub-5850, GitHub-5882, GitHub-6572, GitHub-5558, GitHub-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
- 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
- Checkout agreement validation now works as expected after you change payment method. GitHub-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
- 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
Catalog
- 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 thecategory_product_entity
table.
- The storefront 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 storefront gallery now displays all the images associated with a configurable product. Previously, when you clicked on the swatches associated with a configurable product, the gallery displayed only one of several possible images. GitHub-6195, GitHub-4101
- Magento now displays the This is a required field message immediately adjacent to the product options as needed during checkout. Previously, Magento displayed this message at the bottom of the checkout form.
- 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
- You can now sort and filter on the New Review page. GitHub-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 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 Category 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
- 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 ofcategory_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, GitHub-5798, GitHub-6041, GitHub-6097
- The prices you assign to custom options no longer change unexpectedly after you save them. GitHub-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, GitHub-5485, GitHub-4910
- Magento no longer encounters an error when it cannot find a product image file. GitHub-5184, GitHub-5497, GitHub-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 now correctly displays custom options at the store-view level. GitHub-2908, GitHub-5885, GitHub-5612
- Magento now provides swatch input for the Admin Scope, and the attribute fall back mechanism now reverts to the default option value if 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 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 storefront and then complete an order with that faked price.
- You can now save a product with images multiple times.
- 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 in pull request 8434.
- Magento now successfully loads re-ordered related products when Edge-Mode is activated. Fix submitted by community member @kirashet666 in pull request 8467.
- Magento now displays cross-sells as expected when you use the
product/list/items.phtml
template. Fix submitted by community member Koen V in pull request 8602.
- Magento now displays the Yes or No attribute value on Product pages. Fix submitted by community member Timo Klement in pull request 8623.
- Setting the show_out_of_stock attribute to No now works as expected. Fix submitted by community member Theis Corfixen in pull request 8736.
- Magento now uses parent names (instead of SKU-based names) when creating configurable products. Fix submitted by community member Pascal Brouwers in pull request 9681.
- You can now create an
etc/view.xml
file containing animages
tag with an attributemodule
. Fix submitted by community member Marius Strajeru in pull request 10052.
- Magento now displays the Category selection UI under Conditions when you select a rule for editing. Fix submitted by community member duckchip in pull request 10094.
- 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
- 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.
- You can render the
tax_class_id
attribute nonsearchable. Previously, Magento displayed a 503 error under these circumstances.
- If you’ve enabled persistent shopping cart, you can now check out even after your session has expired.
- 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 no longer pre-fills the Set Product as New From Date field when you set a special price for a product. GitHub-4387
- When you edit a widget’s existing condition, Magento now loads the SKU grid with all available SKUs. GitHub-6985
- 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, GitHub-7251
- Combine rule conditions now work as expected for product list widgets. GitHub-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
- 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
- Products returned by an API product paginated search now include
category_ids
as a member ofcustom_attributes
. GitHub-6127
- Product images in Magento installations with multiple store views are now assigned as expected to each store view. GitHub-6259
- Products returned by an API product paginated search now include
category_ids
as a member ofcustom_attributes
. GitHub-6127
- Product images in Magento installations with multiple store views are now assigned as expected to each store view. GitHub-6259
- Magento now successfully handles purchases of product with minimum quantities of less than one. GitHub-5570
- 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
Configurable products
- 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 that price.
- 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, GitHub-5097, GitHub-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 exception when you add a configurable product by SKU 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 category 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, GitHub-5798, GitHub-6041, GitHub-6097
- The check that Magento runs to confirm a configurable product’s readiness for sale is now faster. (The
isSalable
method checks that a configurable product 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 now correctly displays a product as out-of-stock if its child products are disabled. Previously, the category 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 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, GitHub-5097, GitHub-6645
- Magento now shows the correct product price for products that you add to the wish list from the category page. GitHub-6866
- 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
- Users no longer lose configurable product data when you change the interface locale to Chinese (China) or Arabic (Egypt).
- Magento now successfully loads the New Order Email templates. GitHub-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
Frameworks
- 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 for details.
- Static tests run in a Windows environment no longer fail due to file path mismatches. Fix submitted by community member barbazul in pull request 9902.
- 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
- 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
.
Admin framework
- 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.
Application framework
- Magento now supports new top level domains for email addresses. GitHub-4547
- Page titles in layout files are not translatable. Fix submitted by community member Anton Evers in pull request 9992.
- The
setup:static-content:deploy
,setup:di:compile
anddeploy:mode:set
commands now return non-zero exit code if an error occurs. Fix submitted by community member Pablo Ivulic in pull request 7780.
- We’ve changed the
select
protected property toquery
in the AbstractSearchResult class. Fix submitted by community member Alex Gusev in pull request 5043.
\Magento\Framework\Interception\Code\Generator\Interceptor
now supports interceptors for generating for methods that return references. GitHub-9167
- The Magento Framework now makes its dependency upon the
zendframework/zend-stdlib
library explicit incomposer.json
. (GITHUB-6442)
Configuration framework
- Configuration values no longer return NULL when Redis reaches the limit set in the
max_memory
setting. Previously, when Redis met the limit specified in this setting,ScopeConfig
returned a value of NULL for configuration options, which resulted in significant damage to data (for example, deleting all prices assigned to a website from the database).
- 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 in pull request 8077.
- Magento now writes all default configuration values to the
config.php
file.
JavaScript framework
- 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 arequire_js
file. Fix submitted by community member James Reed in pull request 9665.
Session framework
- 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
Zend framework
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 in pull request 9262.
- We’ve removed
Zend_Json
from the Weee module. Fix submitted by community member David Manners We’ve removed pull request 9261.
- We’ve replaced the direct usage of
Zend_Json
with a call to theJson_Help
class. Fix submitted by community member David Manners in pull request 9344.
- We’ve replaced
Zend_Json
in the configurable product block test. Fix submitted by community member David Manners in pull request 9753.
- We’ve removed
Zend_Json
from form elements. Fix submitted by community member David Manners in pull request 9754.
- We’ve replaced the Magento Framework’s
Zend_Session
interface usage with SessionHandlerInterface. Fix submitted by community member Timon de Groot in pull request 9285.
- We’ve removed
Zend_Wildfire
andZend_Controller
from the codebase. Fix submitted by community member Isolde in pull request 9622.
- We’ve resolved issues with selecting widgets in TinyMCE. GitHub-9655, GitHub-9518 Fixes submitted by community member Pieter Hoste in pull request 9540 and community member Bernhard in pull request 9711.
- We’ve replaced
Zend_Log
withPsr\Log\LoggerInterface
. Fix submitted by community member Timon de Groot in pull request 9285.
- 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 in pull request 9400.
General fixes
- 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 PHP settings from the sample web server configuration files.
- You can now make Return Merchandise Authorization (RMA) comments visible from the storefront by setting Stores > Settings > Configuration > Sales > RMA Settings > Enable RMA on Storefront.
- When creating a new page with the Add New Page feature, Magento no longer throws a JavaScript error when Layout 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 incomposer.json
. GitHub-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 XML configuration information as expected.
- Information set by the Default Billing Address and Default Shipping Address checkboxes on the Customer page are now saved correctly.
- Admin users with appropriate permissions can now reset the passwords of more than one customer at a time. GitHub-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
- You can now generate static content without a database connection. GitHub-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
- We’ve resolved an issue that prevented you from adding more than one product to a shopping cart from a wishlist. GitHub-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 Fix submitted by community member Pieter Hoste in pull request 9333.
- Magento now sends email that provides updates on the status of RMA authorization.
- 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.
- Fixed issue with using the Magento Commerce invitations feature to insert malicious JavaScript and subsequently execute it in the Admin context.
- 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
- 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 securebase_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 thedi.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.
- We fixed an issue where cache-misses sometimes occurred when Fastly cache was implemented. Previously, the header information included in the response sometimes prevented the caching of this page. To minimize this potential problem, Magento now does not include header empty of real content in the response.
- Fixed the location of the
wishlist.js
file. Fix submitted by community member Koen V. in pull request 8633.
- You can no longer download products after you’ve set order state to
STATE_CANCELED
. Fix submitted by community member nazarpadalka in pull request 8917.
- Fixed a typo in the Pull Request Template. Fix submitted by community member tomislavsantek in pull request 8908.
- 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 in pull request 9001.
- Fixed grammar error in the customer dashboard. Fix submitted by community member Petar Sambolek in pull request 9080.
- The popup window in the Safari browser now closes properly. Fix submitted by community member Hans Schouten in pull request 8824.
- We’ve fixed minor performance issues when you use
/pub
asdocroot
. Fix submitted by community member Joseph Maxwell in pull request 9094.
- 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 in pull request 10082.
- Magento now deletes pending entries in
cron_schedule
when you reconfigure a cron job. Fix submitted by community member Anton Evers in pull request 9957.
- We’ve fixed the cron timestamp method. Fix submitted by community member Anton Evers in pull request 9943.
- You can now save customers with unique attributes. Fix submitted by community member storbahn in pull request 9712.
- The
Magento_Framework/View/Layout/etc/elements.xsd
fileblockReferenceType
definition now allows for the optional argument template. Fix submitted by community member jissereitsma in pull request 9772.
- Customer sessions for different customers are no longer shared on installations on multiple websites. GitHub-4842, GitHub-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
- The website column in Customer Segment report now contains correct data. Previously, this column was blank in the Reports > Customer > Segments report.
- 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
- You can now reset a customer password if website restrictions is enabled. Previously, you were redirected to
customer/account/login/
with no possibility to reset the password.
- 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
.htaccess
deny code execution now works as expected for Apache and php-fpm. GitHub-6766
- Magento now displays the WYSIWYG editor as expected. GitHub-6222, GitHub-4828, GitHub-6815
- 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
Gift cards
- Order emails now specify the amount of the gift card that you have purchased.
- The Checkout page no longer freezes when you order a virtual gift card using the Authorize.net Payment Action value set to Authorize and Capture.
- You can now complete the purchase of a gift card in environments where you have set the Braintree payment method Payment Action to Authorize and Capture. Previously, any order made under these conditions would remain indefinitely in the processing stage.
- You can now add a gift card with an undefined amount to the Items Ordered table. Previously, Magento did not permit you to add a gift card of an open value to this table.
- Customers can no longer exceed a gift card balance by using the gift card twice.
- You can now save the configuration settings of a gift card product.
- Gift card accounts are now automatically generated after an invoice is created, when the Authorize and Capture payment action on Authorize.net Direct Post is enabled.
Gift registry
- The State/Province dropdown menu now works as expected in the frontend gift registry.
- We’ve fixed inconsistent gift options checkbox labels in both the CSV file (
app\code\Magento\GiftMessage\i18n\en_US.csv
) and PHTML file (app\code\Magento\GiftMessage\view\frontend\templates\inline.phtml
). Fix submitted by community member vpiyappan in pull request 9421.
Gift wrapping
- The Allow Gift Wrapping for Order Items setting now works as expected. Previously, when Stores > Settings > Configuration > Sales > Gift Options was set to No, users saw the Gift Option link under each product in their shopping cart.
- You can now add gift options to an order if logged in using a secure URL
- Your gift wrapping selection now appears in the shopping cart regardless of whether you’ve selected a shipping method. Previously, Magento did not display your gift wrapping choice until you selected a shipping method.
- Magento no longer displays the gift wrap tax when no gift wrap is selected.
- You can now save products using the multiple select attribute value. Previously, you could not save values if using this attribute.
- We’ve fixed an issue with fetching quote item by ID. Fix submitted by community member Mladen Ilic in pull request 10059.
- We’ve corrected the ACL for the Developer Section resource. Fix submitted by community member Pascal Brouwers in pull request 10149.
- Layout merging no longer fails when you save a widget that contains the grave accent character in the data. Fix submitted by community member Timon de Groot in pull request 10151.
- Magento now uses the correct order when uploading image to the Admin using Content > Design. Fix submitted by community member Ihor Sviziev in pull request 10126.
Google Analytics
- We’ve added the missing single quote (‘) to the Google API Tracking code. Fix submitted by community member Petar Sambolek in pull request 9084.
- Google Analytics tracking now works when Cookie Restriction is enabled. Fix submitted by community member Bernhard in pull request 9713.
HTML
- 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 in pull request 9027.
Images
- Magento no longer encounters an error when it cannot find a product image file. GitHub-5184, GitHub-5497, GitHub-3545, GitHub-5871
- Magento now successfully saves images that you edit in a WYSIWYG 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
- Graphics now scroll as expected on mobile devices. GitHub-5302
- Magento now successfully saves images that you edit in a WYSIWYG 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.
Import/Export
- 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
- 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 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
- You can now export a bundle product 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 now correctly displays both configurable and simple products, their attribute values, and visibility values after import if SKU is an integer. GitHub-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, GitHub-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 CSV 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 catalog 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 in pull request 8278.
- 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 now updates attribute sets as expected when importing products from CSV. GitHub-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 now displays the WYSIWYG editor as expected. GitHub-6222, GitHub-4828, GitHub-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 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
Integrations
- 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
- You can now edit
authentication_lock
from the Admin. Fix submitted by community member Elias Kotlyar in pull request 9820.
Indexing
- We’ve improved the performance of the algorithm that Magento uses to calculate batch sizes while indexing categories.
- Magento no longer displays an indexing error when Elasticsearch is enabled. Previously, Magento displayed this indexing error when Elasticsearch was enabled:
mapper_parsing_exception
.
- 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 typeIndexerInterface
and does not have a__toString()
method, attempting to cast the$indexer
object to a String previously resulted in an error. GitHub-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 catalog 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 typeIndexerInterface
and does not have a__toString()
method, attempting to cast the$indexer
object to a String previously resulted in an error. GitHub-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.
Orders
-
We’ve added PHP interfaces that add the ability to change the status of a shipment. 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.
-
- You can now set the customer group when creating a new order from the Admin interface. GitHub-6162
- You can now print invoices and credit memos from the Order page.
- You can now successfully place orders when the Enable and Configure Website Payments Standard Payment Action attribute is set to Sale. Previously, under these conditions, Magento would display an error message and not allow you to complete the purchase. GitHub-4785
- Attributes of the
salesInvoiceRepository
methods are now more appropriately type cast. (The data type is now a nullable float.) Previously, due to the use of an incorrect data type, Magento would produce an error when calling thesalesInvoiceRepositoryV1GetList
method. GitHub-3605
- The order comments history no longer duplicates the time that a comment was made. Previously, the time that a comment was made was listed twice.
- Magento now uses the address template from store view level of the placed order (similar to how order confirmation email works). Previously, Magento used the wrong address template for order e-mails.
- Magento now correctly identifies an order being processed when it is placed in a store configured for multiple currencies. Previously, these orders always were identified as potentially fraudulent.
- The order comments history no longer duplicates the time that a comment was made. Previously, the time that a comment was made was listed twice.
- You can now add a gift card with an undefined amount to the Items Ordered table. Previously, Magento did not permit you to add a gift card of an open value to this table.
- The Print Shipping Label link now displays on the product frontend. Previously, the layout for the Shipping and Tracking block did not work properly.
- You can now create an order through Admin if there is a
translate csv
for order-header. Fix submitted by community member Pascal Brouwers in pull request 6856.
- You can now use a second credit memo to successfully issue a full refund for a credit memo with adjustment fees. Fix submitted by community member Max Pronko in pull request 9715.
- Coupon codes are now included in invoice print outs. Fix submitted by community member Belgacem Naoui in pull request 9780.
- The Orders grid now displays correct order dates. Fix submitted by community member Anton Evers in pull request 9941.
- Magento now displays the correct order time in the Sales Order grid in the Admin panel. GitHub-9426
- We’ve increased the size of the
sales_order_payment.cc_number_enc
field. GitHub-7334
- We’ve fixed an issue with an undefined offset in the
order\config.php
file. GitHub-6111
- The Create Order page now works as expected after you select Update items and quantities.
- Magento no longer creates unnecessary loaders during checkout with an order that contains virtual products.
- New orders no longer stay in the processing state after you click the Place Order button. Previously, new orders stayed in the processing state even after you clicked Place Order. GitHub-5860
- You can now use either the parent order item ID or child product order item ID when using the REST API (
/V1/order/:orderId/invoice : POST method API
) to create an invoice for an order containing bundle products. GitHub-6988
- We’ve increased the size of the
shipping_method
column in thesales_order
andquote_address
tables. GitHub-6475
- Magento now creates the shipping address as expected when you use REST to create an order. Previously, when you used REST to create an order, then subsequently viewed the order from the Admin, Magento threw an error.
- Magento now displays all tax details as expected on the Admin order page. Previously, Magento did not save the order tax rate information, and the full tax summary was incomplete.
- You can now cancel an order of a bundle product. GitHub-5194
- We’ve fixed an issue with an undefined offset in the
order\config.php
file. GitHub-6111
- 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
- New orders no longer stay in the processing state after you click the Place Order button. Previously, new orders stayed in the processing state even after you clicked Place Order. GitHub-5860
Payment methods
- We’ve added support for the change to the USPS API that USPS implemented on September 1, 2017. After installing or upgrading to this release, Magento will display the Domestic rate for USPS, First-Class Mail Parcel as expected. Previously, the USPS First-Class Mail Parcel option was not available after September 1, 2017 on installations running Magento 2.x.
- You can now successfully complete Paypal checkout with products that have custom options. GitHub-5938
- Third-party payment gateways are now visible from the Admin. GitHub-7891
- Magento no longer displays the No Payment method available message when a customer tries to ship items to a billing-restricted country.
- Magento no longer displays the No Payment method available message when a customer tries to ship items to a billing-restricted country.
- Magento now successfully completes checkout when a custom address attribute is added. Previously, an error occurred during checkout when the user added a required custom address attribute.
- Removed a duplicate method call to the
getLinkField
method in theMagento\Catalog\Model\ResourceModel\Category
class. Fixed by will-b in pull request 9057.
- During order creation, you can now continue with a payment after clicking the Back button to the payment selection window. GitHub-4580
-
The expiration year validator now works as expected. GitHub-8482
-
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.
- Error messages associated with the
Authorize.net
payment method are now translated to fit the configured locale. GitHub-5934
- We’ve increased the size of the
shipping_method
column in thesales_order
andquote_address
tables. GitHub-6475
- We’ve fixed an issue with the REST API that previously resulted in the PayPal gateway rejecting requests. GitHub-10410
Braintree
- You can now place orders from the Admin using the Braintree payment method.
-
We’ve enhanced our PayPal and Braintree implementations so that merchants can now:
-
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.)
-
- Kount and 3D Secure now work as expected for Braintree Vault.
- Magento now updates you as expected on order comments and order history after you initiate a refund using Braintree. Previously, when you clicked the Refund button (to initiate a refund), Magento did not redirect you to order comments and history information.
- You can now use Braintree as a payment method when applying reward points or store credit to an order.
- The Braintree payment method now works as expected with Vault table prefixing.
- Magento no longer encounters an error when using the Braintree Vault payment GET order API call. GitHub-6215
- You can now use JCB and Diners Club credit cards with the Authorize.net payment method.
- Fixed issue with credit card capture information failing to remain associated with its first authorization. GitHub-6716
- You can now successfully place orders with Braintree when using an alternative merchant account ID. (The merchant account does not need to match the 3D Secure authorization merchant account.) GitHub-5910
- Braintree no longer encounters an error during checkout when you apply a 100% discount coupon to a product and enable free shipping. Previously, Magento displayed a spinning loader widget, and your screen froze. The Developer console displayed this error:
Uncaught Error: [paypal-container] is not a valid DOM Element
.
- The Braintree payment method now works as expected with Vault table prefixing.
- Merchants can now accept payment on a Suspected Fraud order without Magento altering the amount in Total Paid. Previously, when a merchant accepted payment for an order with a status of Suspected Fraud, Magento doubled the payment amount.
- Braintree no longer encounters an error during checkout when you apply a 100% discount coupon to a product and enable free shipping. Previously, Magento displayed a spinning loader widget, and your screen froze. The Developer console displayed this error:
Uncaught Error: [paypal-container] is not a valid DOM Element
.
- The Braintree PayPal locale now has its own setting. GitHub-9639
- You can now modify the product quantities of a previous order and re-order it using the saved credit card information from the first order.
PayPal
- We’ve improved and streamlined the Magento Admin PayPal configuration interface.
- PayPal Payflow Pro now uses the currency you’ve specified in your store settings. Previously, Magento converted the total price into U.S. dollars, no matter which currency was specified in the store settings.
- We’ve fixed an issue with using PayPal Express Checkout to order products with custom options. Previously, although an Admin user could create and configure “File type” custom options, customers could not upload and store files within the order quote. GitHub-5434
- Fixed issue related to incorrect stock quantity calculation for bundle and configurable products during place order flow with PayPal Express Checkout.
- Third-party payment gateways are now visible from the Admin. GitHub-7891
- Fixed issue with credit card capture information failing to remain associated with its first authorization. GitHub-6716
- PayPal Express payments no longer fail when there is adequate product inventory to cover your order. Previously, you’d receive this error message:
We can't place the order
. GitHub-6296
- Paypal errors no longer occur when Fixed Product Tax (FPT) is enabled. Previously, when a product had a FPT, Paypal Express reported an error when you tried to place the order.
- PayPal Payflow Pro now uses the currency you’ve specified in your store settings. Previously, Magento converted the total price into U.S. dollars, no matter which currency was specified in the store settings.
- When refunding an order from PayPal, Magento now creates a credit memo with the correct status.
- The exported sheet now generates or renders data for columns that indicate associations for configurable products.
- We’ve fixed errors in processing valid orders using a PayPal account that had been previously used to pay for a valid order that had problems during checkout.
- We’ve resolved a loader issue with Payflow Pro. The loader image is now invisible after redirecting to the payment page/success page or error page. GitHub-7159, GitHub-9296
- PayPal Express checkout no longer discards address line 2 for billing and shipping addresses. GitHub-8313
- The checkout page no longer freezes when you try to use PayPal to pay for a purchase that contains a downloadable product. Previously, a
PayPal.js
error occurred. GitHub-7000
Performance
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 for further details.
- We’ve improved storefront performance when creating 2500 or more product variants.
- The processing speed of category URL rewrites for catalogs containing more than 20,000 products has greatly improved.
- Opening many products from the Admin interface is now faster.
- Creating many (2500 - 5000) product variants, both simple and complex product types is more efficient.
- You can now quickly generate or preview multiple variations of a configurable product. (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
command).
- We’ve improved the performance of the Display Time for Category Edit page for catalogs with many products or categories. GitHub-7469
Image processing
- We’ve improved the process of resizing images on the frontend.
- 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)
Caching
- Magento now caches image metadata, which avoids the time-consuming need to read images for metadata 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.
PHP
- PHPCS can now correctly parse the syntax of PHP 7.x return types.
- Cart Price rules are now applied as expected to payment method conditions. Previously, discounts set in Cart Price rules were not applied during checkout.
Sample data
- 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.
SalesRule
- 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
- A cart rule with a coupon code no longer overrides a cart rule without a coupon code when multiple cart rules 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
- 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 now 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
- 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, GitHub-6122
- When you change the currency associated with store, Magento also adjusts the currency in all product listings. GitHub-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](https://github.com/magento/magento2/issues/6168)
- 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](https://github.com/magento/magento2/issues/6168)
Scope
- 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
- The list of allowed countries is now configured as part of website scope, not store view scope. GitHub-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.
Search
- Out-of-stock items no longer erroneously appear in results of layered navigation if that product option is out-of-stock.
- Magento now factors in the Weight attribute as expected when you use advanced search on grouped products.
- The Elasticsearch indexer search-by-attribute functionality now works as expected.
- Elasticsearch does not throw errors when there are more than 100 searchable attributes or when user-defined price attributes are marked searchable.
- ElasticSearch now includes data about composite products in its search index. Previously, search results did not include this data.
- Magento now sends the
parent_id
of a deleted configurable product variation to ElasticSearch. Previously, Magento didn’t send this information to the ElasticSearch server if the simple product associated with a configurable product were changed.
- 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), thecatalogsearch_fulltext
(MySQL) re-index failed with aSegmentation fault
message. GitHub-7963
- Magento now implements the Attribute Weight Boosting Function for Elasticsearch.
- Magento now handles special characters in an Elasticsearch request as expected. Previously, Magento displayed a MySQL syntax error in search requests that contained special characters. GitHub-8335
- Attribute weighting now works correctly for the MySQL adapter. GitHub-9020
- Magento no longer throws an indexing error when Elastic search is enabled.
Shipping
- 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 checkout 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 in pull request 9095.
- 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 now passes the correct object to the
\Magento\Shipping\Model\Shipping::collectRatesByAddress
method. GitHub-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 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
- We’ve resolved an issue where Magento did not display applicable flat-rate USPS box methods during checkout. GitHub-6798
- The Free Shipping rule now works as expected with table rate shipping. GitHub-6346
Sitemap
- Sitemap image URLs now match the URLs on product pages. Fix submitted by community member Petar Sambolek in pull request 9082.
- The sitemap is no longer generated in the wrong folder when
vhost
is connected to/pub
. Fix submitted by community member Joseph Maxwell in pull request 9094.
Staging
- The CMS page now refreshes as expected after an update.
- Magento no longer creates extraneous database values when you schedule new Staging updates.
- Magento no longer performs unnecessary staging-related flag operations on the Category page. Previously, Magento performed staging-related flag operations even when the Staging module was not used.
- You can now delete updates from a campaign’s page entity grid.
- You can now create a staging update for a product that contains a unique attribute in its attribute set. Previously, under these conditions, Magento displayed this error:
The value of attribute "test" must be unique’
.
- You can now install Magento Commerce without staging modules.
- The Magento flat indexer no longer throws an error after flat tables are enabled and reindexed. This fix applies to both product and catalog tables. It also now collects correct product data for
ROW_ID
- The staging dashboard now loads without error when you sort by status on the dashboard. Previously, the staging dashboard broke and remained in an infinite loop when you attempted to sort by status on the dashboard.
- You can now preview an update from the dashboard and click on links and see how the entire instance would look like for a store between some dates. Previously, the links from the Preview page were broken.
- Magento now displays the correct content on the preview page for a scheduled update.
- Magento now applies all scheduled product changes to all scopes.
- The view/edit option for a scheduled change is now available for the duration that the scheduled change is in progress. Previously, you could not view or edit a scheduled change when it was in progress, which left no way to edit or remove it.
- You can now create a new scheduled update for a product. Previously. when you tried to create an update, Magento displayed this error:
Uncaught TypeError: Failed to execute 'removeChild' on 'Node': parameter 1 is not of type 'Node'.
- Magento now displays the correct date and time for staging updates. Previously, when your current time in Daylight Saving time, and your target time was in Standard time, your target time was incorrect.
- Magento now correctly assigns images to duplicated products.
- Scheduled Update no longer removes simple variations from Configurable products. Previously, if you set up a scheduled update to toggle the New setting on a configurable product, Magento removes all simple variations from the configurable product once the update takes effect.
- Content staging values for fields are now saved in database.
- When you import products that exist in the CSV file, but not on the store (including categories), Magento now populates the categories as expected.
- Magento no longer deletes images associated with categories scheduled for update after you modify the image.
- Once the time frame for the scheduled update has passed, Magento removes the special price and displays the original price.
- You can now remove a product or category from a campaign.
- You can now preview a scheduled update for a category that contains a recently viewed block.
- We’ve resolved a scheduling issue that previously resulted in Magento displaying a 404 error on most frontend pages. This occurred if you deleted a Catalog Rule with an end date, then ran an update.
- You can now save simple products created in 2.0.x environments after upgrading to environments running Magento 2.1.x. Previously, you could not successfully save the opened product after upgrading.
Static file processing
- We’ve corrected a problem with
_requirejs
asset retrieval viastatic.php
in static content versioning.
- Versioning of static files (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 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.
Swatches
- Magento no longer creates redundant objects when initializing a configurable product on the Category page.
- You can now disable swatches for both the Catalog page and search results (quick or advanced). To disable swatches from these requests, disable Stores > Settings > 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 in pull request 6707.
TargetRule
- 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.)
Tax
- 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.
Testing
- 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:1
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
StdoTest
is now marked as skipped. Fix submitted by community member David Manners in pull request 8487.
Tier pricing
- Magento now correctly calculates the tier price percentage when displayed prices include tax. GitHub-8833
- Magento no longer resets the tier price during quote recalculation. Previously, when you triggered an automatic quote recalculation (by changing the shipping address, for example), the tier price was lost. (This issue occurred only if the product record in the database had values for
row_id
andentity_id
that didn’t match.)
- Magento no longer adds a thousands separator ( , ) to representations of quantities that exceed 1000. GitHub-5745
- Tier pricing now works correctly with full page cache. GitHub-5364
Translation and locales
- String localizations now work as expected when phrases include text wrapped with single quotation marks.
- Translations now work for layered navigation attribute options. Fix submitted by community member Pieter Hoste in pull request 9873.
URL rewrites
- You can now successfully create a product and assign it to a store without encountering the following error:
Unique constraint violation found
. GitHub-6671
- The
catalog_url_rewrite_product_category
table is the same whether you’ve freshly installed or updated Magento 2.2.
- You can now assign products to a category when Match Products by rule is enabled.
- The Use default URL Key setting now works on the store-view level.
- You no longer need to delete the URL rewrite to force Magento to display links after adding pages to the CMS hierarchy. Previously, when you added new pages to the CMS hierarchy, Magento did not show the links to the new pages until you deleted the URL rewrites.
- We’ve fixed several issues with how Magento processes URLs with trailing slashes. Fix submitted by community member Ihor Sviziev in pull request 10043.
- Admin users can no longer create an empty URL key for a category. Previously, Magento let Admin users create an empty URL key, which lead to category-related errors.
- Magento now rewrites URLs as expected when you save a product while running Magento in single-store mode. GitHub-5929
- Magento now rewrites URLs as expected when you save a CMS page while running Magento in single-store mode. GitHub-5923
- URL rewrites are now correctly generated for multiple store views during product import. GitHub-8396
- Magento now rewrites URLs as expected when you save a CMS page while running Magento in single-store mode. GitHub-5923
Varnish
- We’ve changed the behavior of the Varnish X-header. Only the parent (meta) SKU is now included in the list – not the SKUs of all child products. GitHub-6401
-
Varnish no longer caches Cookie Restriction Mode Overlay. Fix submitted by community member Bernhard in pull request 9711.
-
Varnish now supports
grace
andsaint
mode to ensure that customers always see cached pages.
- Viewing the page with HTTPS instead of HTTP no longer causes the Category menu to disappear in installations using Varnish cache. GitHub-4540
Visual Merchandiser
- The order of products in a category display no longer changes when you add a new product to the category.
- Visual Merchandiser
Match products by rule
now works as expected.
Web API
- You can now use REST to add video to a product description. GitHub-7153
- The
PUT /V1/products/:sku/media/:entryId
correctly updates a product’s media gallery and image role.
- A null value may now be specified to unset the
special_price
attribute.
- The Swagger documentation erroneously indicated that search queries can return detailed information about multiple objects. The description of these APIs now state which API to use to return detailed information about a single object.
- You can now use REST to successfully update customer information without unintentionally deleting default billing and shipping address information.
- You can now use a REST request to retrieve a shopping cart that contained a product with custom options. Previously, you could not use a REST request to retrieve a shopping cart that contained a product with custom options.
- The
PUT /V1/products/:sku/media/:entryId
correctly updates a product’s media gallery and image role.
- Searching for products via REST API using a store code in the URL returns products from all stores. GitHub-8121
- You can now use the REST API to create a configurable product with a linked child product. (GITHUB-5243)
- The REST API now successfully handles attribute options that start with a number. GitHub-5715
- We’ve fixed an issue with the REST API that previously resulted in the PayPal gateway rejecting requests. GitHub-10410
- You can now save a billing address using the REST ’useForShipping’ parameter. Previously use of the parameter resulted in a Rest API V1 error. GitHub-6557, GitHub-5180
- We’ve resolved issues updating
default_frontend_label
using REST. GitHub-5963
- Magento now sends REST multiselect attribute values in compatible formats. Previously, putting an unchanged GET returned errors on the multiselect attribute, and the only way to clear a multi-select field of all selections was to delete the product and re-create it. GitHub-6120
- The REST API now successfully handles attribute options that start with a number. GitHub-5715
Community contributions
We are grateful to the wider Magento community and would like to acknowledge their contributions to this release. Check out the following ways you can learn about the community contributions to our current releases:
-
If a community member has provided a fix for this release, we identify the fix in the Fixed Issue section of these notes with the phrase, “Fix provided by community member @member_name”.
-
The Magento Community Engineering team Magento Contributors maintains a list of top contributing individuals and partners by month, quarter, and year. From that Contributors page, you can follow links to their merged PRs on GitHub.
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.0.x. The command-line interface includes scripts for converting Magento 1.x modules and layouts.