Skip to content

Release notes Shopware 6.6.6.0

3.9.2024

Release notes Shopware 6.6.6.0

Abstract

This minor release contains 50+ bug fixes and a lot of improvements, especially concerning a11y (accessability) and improvements of the caching system.

System requirements

  • tested on PHP 8.2 and 8.3
  • tested on MySQL 8.0.33, MariaDB 10.11 & 11.0

Improvements

IDN support for email addresses

With this version, we added support for internationalized domain names (IDN) in email addresses. This means that you can now use email addresses with special characters in the domain part of the email address.

Cart performance improvments

Previously on any cart load, the products in the cart has been loaded always from the database and the price, cover and name has been updated to the cart line item. To speed up this process, we now compare the last updated date of the product and only if that does not match we re-fetch the product and update the line item.

Besides that, we store now a errorHash in the Cart object, which is used additonally to determine has the cart changed and needs to be persisted to the database. Previously when a cart contained a cart error, on any cart load the cart has been persisted to the database. Now we only persist the cart if the errorHash has changed.

Caching of ESI blocks

The Cache-Control of ESI requests is now considered also with the internal HTTP Cache (without Varnish) and allows to cache ESI blocks for a certain time. This is useful for pages that are not cached by HTTP Cache but contain ESI blocks that should be cached.

Removal of Locust

We removed the Locust load testing tool from the platform. The replacement is K6 by Grafana labs, which is a more modern and powerful tool for load testing. Checkout our ready to use K6 Shopware script

General application bootstrapping improvements

We improved the performance of the application bootstrapping process by reducing the number of services to be loaded and by utilizing more lazy loading. This will result in faster bootstrapping times of the application for admin-api or store-api requests.

PHP Opcache preload now works properly

We fixed an issue where the PHP Opcache preload was not working properly when an PDF document was generated. This has been fixed by using setasign/tfpdf over tecnickcom/tcpdf. The composer package tecnickcom/tcpdf will be removed with the next major version.

Sales Channel Product associations are not added anymore to nested associations

With the last security update (6.6.5.1), we fixed a bug that the SalesChannelRepository is not called for ManyToMany assocaistion to add filters. This caused some performance issues as now all levels of product associations fetch now a cover image, prices and more.

Therefore we introduced a new method getNestingLevel to the Criteria object to determine the nesting level of the association. This is now used in the SalesChannelProductDefinition to add only the assosiations when the nesting level is 0.

This restores the behaviour before the security update, but still adds the filters required by the security update. This has been also backported to the Security plugin.

Data Abstraction Layer improvements

  • Fixed a bug where an GROUP BY clause was missing when a assosication has been loaded with an group field.
  • Fixed a bug that it is not possible to create a many to many association to the same entity and add filters to the Criteria field.

Property Search in Administration now allows to search for group

The property search to add new properties to an product now supports to search for the group name of the property. Additionally, the search is now correctly ranked by the relevance of the search term.

Screenreader improvements for product listing and listing filters

With this version, we added new include parameters to our listing and filter components in the storefront. These suppose to improve accessibility when using screen readers. For example, we added the ariaLabel parameter to all of our filter components which can be used to add a description of the purpose of this filter for screen readers.

Screenreader improvements for slider elements

In this version, we added new behaviour and styling to slider and gallery elements in the storefront. These changes include:

  • Hiding cloned elements for screen readers
  • Keeping the focused element always in view to enable navigation of the slider via tab
  • Prevent the native scrolling to focused elements of the browser inside the slider to use the slider function instead

Improved many-to-many association of entities via attributes

With these changes, entities created by attributes now support many-to-many associations with version aware entities.

Thanks to Nicky Gerritsen for this improvement!

Added support for state machine fields

State machine state fields can now be created via attributes in your entity definitions. The attribute is taking an machine and scopes as well as the well known api and column arguments.

Thanks to Simone Alers for this improvement!

States / provinces are now available in flows with order data

States or provinces can now be used in Flow Builder to set rules, for example when shipping to these destinations.

Improved CSV parsing for Quick Orders

We added support for different delimiters in CSV files you can pass in the Quick Order module. Supported delimiters next to , are now ; and |

Support feature flag extension in plugins

We added the possibility to enable the major feature flag in your tests using our PHPUnit extension. With this, you can run your tests with the major feature flag enabled. This can be usefull to find deprecations in your code. To enable the PHPUnit extension add it to your phpunit.xml:

xml
<extensions>
    ...
    <bootstrap class="Shopware\Core\Test\PHPUnit\Extension\FeatureFlag\FeatureFlagExtension"/>
</extensions>

and register your test namespace in your test bootstrap file:

php
FeatureFlagExtension::addTestNamespace('Your\\Unit\\Tests\\Namespace\\');

For more details see this ADR

Added telemetry abstraction layer

By implementing a telemetry abstraction layer, we provide a unified way to integrate monitoring tools into the Shopware platform. This approach simplifies the process of adding telemetry to the application and ensures consistency across different monitoring tools.

For more information, see this ADR and the README.md of our new Telemetry namespace

Added system health checks

By implementing system health checks, we ensure that the system is monitored and that issues are detected early. This will help to prevent system failures and improve the overall stability of the system. Moreover, it helps detecting issues at the time of deployment and helps to prevent issues from reaching the end-users.

For more information about our new Health Check Framework see this ADR

Minor accessibility improvements for the storefront

We've enhanced the registration form, and improved text scalability to ensure everyone can navigate and enjoy our platform with ease.

Restrict the message queue size

  • Added Shopware\Core\Framework\MessageQueue\Subscriber\MessageQueueSizeRestrictListener to limit the message queue message size to 256KB. It only creates a log entry if a message is bigger than 256KB.
  • Deprecated message queue message size. Messages bigger than 256KB will throw an exception with Shopware 6.7

New DomAccessHelper methods to find focusable elements

The DomAccessHelper now supports new methods to find DOM elements that can have keyboard focus. Optionally, an element can be provided as a parameter to only search within this given element. By default, the document body will be used.

Deprecate cached*route layer and use new http cache tag event for tagging

Nesting cached routes leads to complex caching, which results in complex invalidations. Additionally, the cache has become very large and should be cached more at the HTTP level.

Collecting cache tags through cache decorators is a hassle. From now on, there's an event that anyone can freely dispatch to attach a tag to the current request. This also allows us to remove those nasty cache tracers.

Cache hash improvement

We optimized the process of determining the cache hash so that an event is dispatched where elements can be better removed in projects.

You can now also configure cookies to be included in the hash. This allows you to easily handle just one cookie (on/off) to permute the cache.

Fixed bugs

  • NEXT-23017 | Time range of a rule can be set in admin user's time zone but is calculated in a different time zone (17 votes)
  • NEXT-37593 | Promotions are not applied anymore when a position is added to the order and the max. uses per customer is reached (8 votes)
  • NEXT-37412 | Trigger checkout.customer.deleted does not work (8 votes)
  • NEXT-37161 | Incorrect available product quantity on PDP (6 votes)
  • NEXT-35455 | Dropdown account menu doesn't hide when offcancas account menu is active (6 votes)
  • NEXT-34338 | Incorrect variant display when using a product slider (shopping experience) (4 votes)
  • NEXT-37489 | No shipping address available in customer group registration for companies (3 votes)
  • NEXT-38079 | Layout assignment CMS (3 votes)
  • NEXT-34379 | Unsatisfying display of emails with umlauts (3 votes)
  • NEXT-37741 | B2B Components / Quote Management not working (2 votes)
  • NEXT-37659 | Wrong set group scope discount calculation (2 votes)
  • NEXT-37559 | It is not possible to localize texts in Settings -> Basic Information (2 votes)
  • NEXT-37456 | List of individual voucher codes - pagination missing if "items per page" is set to 25 (2 votes)
  • NEXT-37289 | Quote creation for custom item in admin (2 votes)
  • NEXT-37771 | [Github] fix(admin): Allow (batch) deletion of categories from the category tree element (1 votes)
  • NEXT-37629 | Quotes are not being sent via email (1 votes)
  • NEXT-37482 | Not possible to right-click & copy in sw-text-editor (1 votes)
  • NEXT-37146 | UUID instead of domain in settings > customer group > signup form > technical url (1 votes)
  • NEXT-36782 | [Github] Add storage name option to entity attributes (1 votes)
  • NEXT-33043 | Rule Order created by Admin in flow Builder not working (1 votes)
  • NEXT-38115 | [Github] Add option to hide progress for indexing commands (0 votes)
  • NEXT-38109 | [Github] feat: mark autoPrefixer as deprecated (0 votes)
  • NEXT-38028 | [Github] NEXT-0000 - Bugfix partial hydrateEntity manyToOne (0 votes)
  • NEXT-38012 | Update to 6.6 regenerates all Media Paths, potentially leading to wrong paths (0 votes)
  • NEXT-37993 | [Github] fix: Zero translated string field (0 votes)
  • NEXT-37976 | Accessing logger in CompilerPass fails to correclty initialize handlers that use %env()% options (e.g. Sentry) (0 votes)
  • NEXT-37783 | [Github] [NEXT-37783] Add beforeUpdateQuantity to BeforeLineItemQuantityChangedEvent to allow plugins to understand if quantity increases or decreases (0 votes)
  • NEXT-37772 | delay in InvalidateCacheTaskHandler is useless (0 votes)
  • NEXT-37757 | NEXT-37757 - Add Context to OrderStateChangeCriteriaEvent (0 votes)
  • NEXT-37756 | Type error in MailFactory (0 votes)
  • NEXT-37731 | [Github] Only select used fields of translation tables (0 votes)
  • NEXT-37724 | [Github] Add composer name to plugin:list output for quicker access (0 votes)
  • NEXT-37709 | [Github] NEXT-00000 - Add max length constant of text to ElasticSearch indexing (0 votes)
  • NEXT-37699 | [Github] fix: Add visibility to block defaults (0 votes)
  • NEXT-37684 | [Github] Fix updating thumbnails in strict mode (0 votes)
  • NEXT-37676 | Improve general request startup (0 votes)
  • NEXT-37673 | Don't save the cart on any request (0 votes)
  • NEXT-37667 | [Github] Add integration tests covering searching and reading translated entities (0 votes)
  • NEXT-37666 | [Github] NEXT-00000 - Fix minor changelog linting and creation issues (0 votes)
  • NEXT-37627 | Password confirmation is not enforced with enabled requirement (0 votes)
  • NEXT-37588 | [Github] NEXT-00000 - Exclude folder categories from sitemap (0 votes)
  • NEXT-37557 | [Github] Update Bootstrap Docs Link (0 votes)
  • NEXT-37525 | Tax provider processor does not allow empty tax provider results (0 votes)
  • NEXT-37480 | Promotions with rules cannot apply (0 votes)
  • NEXT-37463 | Elasticsearch indexing crashed when keywords are too long (0 votes)
  • NEXT-37350 | [Github] Add support for having ManyToMany associations to versioned entities for attributed entities (0 votes)
  • NEXT-37329 | Flow Builder: status edit modal does not open (0 votes)
  • NEXT-36781 | Attribute entities - reference version and cascade null (0 votes)
  • NEXT-36704 | [Github] NEXT-36704 - Cleanup line items when recalculating (0 votes)
  • NEXT-36564 | [Github] fix: Change extension icon overflow to hidden (0 votes)
  • NEXT-33575 | Wrong usage of css variable prefix (0 votes)

Credits

Thanks to all diligent friends for helping us make Shopware better and better with each pull request!

More resources

Get in touch

Discuss about decisions, bugs you might stumble upon, etc in our community slack. See you there 😉