Skip to content

Release notes Shopware


Release notes Shopware


This release improves our payment handlers, jest runner, and state management, alongside a transition to an event-based extension system. Key bug fixes enhance overall system stability and address critical issues in Shopware.

System requirements

  • tested on PHP 8.2 and 8.3
  • tested on MySQL 8 and MariaDB 10.11


Improve payment handlers & general payment process

The payment handler has become quite complex over the years. It's time for a much-needed refactor to make it clearer and more maintainable.

Add jest runner with disabled compat mode

Currently, our component tests in Jest are running with enabled compat mode. To remove the compat mode for each component we need to add a new Jest runner with disabled compat mode to make sure that the tests are running without compat mode.

Transition from Vuex to Pinia (Administration)

Deprecated Vuex implementation and use Pinia implementation instead. All Shopware states will become Pinia Stores and will be available via Shopware.Store , Shopware.State related is now deprecated.

Transition to an Event-Based Extension System (Core)

In our current Core architecture, we rely heavily on PHP decoration, Adapter, and Factory patterns to allow for extensions and customizations by third-party developers. While these patterns are effective, they present significant challenges like Backward and Forward Compatibility, Process Extension Limitations, ... .To address these challenges, we have decided to transition to an event-based extension system. This new approach will replace the existing decoration, Adapter, and Factory patterns as the primary method for extending and customizing our system.

Improve composer executions while plugin lifecycle

Previously, when a plugin was installed, it updated all the composer packages, which was very ineffective. With the new improvement:

  • Only directly affected package dependencies are updated
  • Lock the version of composer/composer to not update himself
  • Do not run composer commands when the Shop is in cluster mode

Remote thumbnail generation

With these changes, we allow the possibility of disabling the filesystem thumbnail generation. You can then use an external CDN service to handle the thumbnails. As the consequence, when the remote thumbnail config is enabled, the thumbnail images and thumbnail records in the database are not generated.

By default, the config is disabled, you can enable the remote thumbnail generation by override the config/packages/shopware.yaml

    enable: true
    pattern: '{mediaUrl}/{mediaPath}?width={width}'

For example, consider a scenario where you want to generate a thumbnail with a width of 80px. With the pattern set as {mediaUrl}/{mediaPath}?width={width}, the resulting URL would be https://yourshop.example/abc/123/456.jpg?width=80.

Remove unwanted aria-live attributes from sliders

By default, all Storefront sliders/carousels (GallerySliderPlugin, BaseSliderPlugin, ProductSliderPlugin) are adding an aria-live region to announce slider updates to a screen reader.

In some cases this can worsen the accessibility, for example when a slider uses "auto slide" functionality. With automatic slide the slider updates can disturb the reading of other contents on the page.

You can now deactivate the aria-live region on the slider plugins with the new option ariaLive (default: true).

Example for GallerySliderPlugin (Also works for BaseSliderPlugin and ProductSliderPlugin)

{% set gallerySliderOptions = {
    slider: {
+        ariaLive: false,
        autoHeight: false,
    thumbnailSlider: {
+        ariaLive: false,
        controls: true,
        responsive: {}
} %}

<div data-gallery-slider-options='{{ gallerySliderOptions|json_encode }}'>

When ariaLive is false it will omit the aria-live region in the generated tiny-slider HTML code:

<div class="tns-outer" id="tns3-ow">
-    <div class="tns-liveregion tns-visually-hidden" aria-live="polite" aria-atomic="true">
-        slide <span class="current">2</span> of 6
-    </div>
    <div id="tns3-mw" class="tns-ovh">
        <!-- Slider contents -->

Fixed bugs

  • NEXT-35545 | Flow Builder - tags for entity "order" AND / OR "customer" are not set (7 votes)
  • NEXT-34393 | Invoice - Column name "Unit price" and "Total" always shows "incl. vat" | Rechnung - Spalten "Stückpreis" und "Gesamtpreis" zeigen immer den Zusatz "inkl. UST" an (7 votes)
  • NEXT-36545 | Information Disclosure via Store-API Category endpoint (6 votes)
  • NEXT-34382 | {{ config.companyAddress }} appearing twice on invoice and delivery note (5 votes)
  • NEXT-36808 | SwagCommercial Erweiterung (5 votes)
  • NEXT-36813 | Administration Component <sw-select-number-field> not working (2 votes)
  • NEXT-35563 | Multiple CrossSellings Backend Bug (2 votes)
  • NEXT-34217 | Name length isn't checked on registration (2 votes)
  • NEXT-36479 | Overriding messenger routing (2 votes)
  • NEXT-35701 | Sender e-mail address field has no function in the Cloud. (2 votes)
  • NEXT-36415 | we can not change the Shipping Costs after the order is submitted (2 votes)
  • NEXT-35812 | 400 Bad Request, when you try to complete a subscription with an already registered e-mail. (1 votes)
  • NEXT-34465 | AI assistant description text outside text box (1 votes)
  • NEXT-36499 | Cms data mapping for nested entity don't works for translations (1 votes)
  • NEXT-36477 | Currency dependent pricing modal is broken (1 votes)
  • NEXT-35967 | It is not possible to export the country state of shipping address. (1 votes)
  • NEXT-36348 | Unavailable variant options are not grayed out if property value display type set to "dropdown" (1 votes)
  • NEXT-36838 | [Github] Add discount id check when collection promotions (0 votes)
  • NEXT-36983 | [Github] Add mediaUpdatedAt to the thumbnail pattern (0 votes)
  • NEXT-36566 | [Github] feat: add debug info mail header when staging mode enabled (0 votes)
  • NEXT-36555 | [Github] feat: add direct admin url in staging banner (0 votes)
  • NEXT-36982 | [Github] Fix media url loader with unset thumbnails (0 votes)
  • NEXT-36695 | [Github] Next 0000 Trasform Scaffold generator into their own separated commands (0 votes)
  • NEXT-33234 | [Github] NEXT-00000 - feat: implement product-stream custom field entity select (0 votes)
  • NEXT-36543 | [Github] NEXT-00000 - Fix sw-verify-user-modal autocomplete type (0 votes)
  • NEXT-36540 | [Github] NEXT-21783 - Fix admin grid headline action resize on click (0 votes)
  • NEXT-36422 | API Bug b2b employee management (0 votes)
  • NEXT-36428 | B2B QuoteManagement: Cover images are not displayed (0 votes)
  • NEXT-36563 | Fix Elasticsearch prefix query (0 votes)
  • NEXT-35346 | Fix test RulePreviewTest::testRulePreview (0 votes)
  • NEXT-34301 | Flow send-email-action uses wrong adress (0 votes)
  • NEXT-33049 | Image Import via CSV not possible (0 votes)
  • NEXT-36114 | import of boundSalesChannel by name is currently not possible (0 votes)
  • NEXT-34354 | Import/Export: Category name leads to empty result (0 votes)
  • NEXT-35453 | Improve storefront watcher (0 votes)
  • NEXT-36510 | The condition 'Total volume of all products' in a rule of a price matrix (shipping costs) does not get evaluated correctly (0 votes)
  • NEXT-36663 | Variant bulk edit info box broken (0 votes)
  • NEXT-36669 | Wishlist icon not available on PDP when commercial plugin activated (0 votes)


Thanks to all our contributors for helping us improve Shopware with every pull request!

More resources

Get in touch

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