Release history
Shopware Community Edition releases
PHP based open source e-commerce software made in Germany.
All releases
43 shown
System requirements + SVG upload hardening
Fixed cart clearing, tax calculation for free products due to promotions, and rounding issues in price calculations.
Full changelog
See the UPGRADE.md for all important technical changes.
- #16183 - StateMachineRegistry->transition is not protected against race conditions
- #14376 - Cart gets cleared
- #15769 - Tax rate of shipping wrong when product is free due to promotion
- #16232 - RegisterRoute - Providing custom salutation for shipping address is ignored since fix for #13716
- #9642 - SeoResolver sorting does not consider deleted SEO URL
- #16382 - fix: rounded corners on sw-modals-renderer (backport: 6.6.x)
- #16246 - Duplicate API alias 'product_collection'
- #6797 - “Go back to variant overview” link missing if SEO is saved
- #16350 - fix: add missing refresh index product.indexer 6.6 (backport: 6.6.x)
- #15231 - Wrong text snippet in order-history
- #12922 - Entity select field Times Out with Large Product Sets in Promotion Custom Field
- #7170 - Fix empty price custom fields triggering change detection on product edit
- #8491 - Deactivated field puchaseprice, in certain cases.
- #15584 - Migration1768545320RevocationRequestCmsForm causes duplicate entry if de-DE or en-GB is missing
- #16545 - Rounding issue in price calculation - References PR #14368
- #8246 - store-api/seo-url endpoint should also return isCanonical false
- The product indexer is automatically queued during upgrade; no manual migration script is required beyond the deferred indexing pass.
- If custom code accesses `product.display_group`, update it to handle 64‑character SHA-256 values and the new column definition.
- The `display_group` column on the `product` entity is now computed with SHA-256 (64‑hex characters) and stored in a widened `VARCHAR(64)` column; previously it used MD5 (32‑character).
- Integrations or plugins that assume a 32‑character hash, compare against old MD5 values, or rely on the original column width must be updated.
- Agentic Commerce sales channel (experimental) with OpenAI Merchant Center integration for AI‑powered product feed exports.
- Per-user and per‑IP rate limiters added to login and OAuth token endpoints via `shopware.api.rate_limiter` config.
- Price schemas now describe percentage, list price, and regulation price fields in Admin and Store APIs.
Full changelog
System requirements
- tested on PHP
8.2,8.4and8.5 - tested on
MySQL 8andMariaDB 11
Features
[Experimental] Agentic Commerce sales channel
A new "Agentic Commerce" sales channel type is available in this release.
The OpenAI Merchant Center integration is the first supported provider for AI-powered product feed exports.
The Administration includes dedicated views for configuration, product mapping, and usage insights.
API
Per-user and per-IP rate limiters for login and OAuth
The login and OAuth token endpoints now support optional per user (login_user, oauth_user) and per IP (login_client, oauth_client) rate limiters, in addition to the existing combined user and IP limiter.
These are optional and can be enabled via shopware.api.rate_limiter in shopware.yaml.
Price schemas now describe percentage and reference price fields
The generated Admin API and Store API Price schemas now include property descriptions for percentage, listPrice, regulationPrice, and their nested values.
This improves the generated OpenAPI and Stoplight documentation for integrations that inspect raw price payloads and need to distinguish between the current price, list price, discount percentage, and regulation price fields.
Core
Product display_group values use SHA-256
The display_group field on the product entity (available via the Admin API and Store API) is now computed with SHA-256 for variant listing instead of MD5.
Stored values are 64 hexadecimal characters instead of 32. The database column was widened to VARCHAR(64).
A migration registers the product indexer so that only the variant listing updater (product.variant-listing, the step that maintains display_group) is queued.
That pass runs with the usual deferred indexing after an update or installation finishes, not inside the migration.
If your integration or plugin assumes a 32-character display_group, compares against previously stored MD5 values, or relies on custom SQL with the old column width, update it to accept 64-character hashes and the new column definition.
"Find best variant setting" is now applied for storefront filtering
Users can now control which representative of variant products is shown in filtered listings via the Product settings "Preview best matching variant in search results and filtered listings".
Deprecation of permisionsLocked property of SalesChannelContext
The permisionsLocked property of the SalesChannelContext is deprecated.
Use permissionsLocked property or the new SalesChannelContext::isPermissionsLocked() getter method instead.
Salutation ordering
A new position column was added to the salutation entity so merchants can control the order in which salutations appear in forms (registration, address, checkout, and CMS forms).
Salutations are sorted ascending, meaning lower values appear first.
This replaces the previous alphabetical sorting.
Default salutations (not_specified, mrs, mr) are migrated automatically to positions 1, 2, and 3.
Custom salutations keep the default value of 100 - review them in Administration → Settings → Shop → Salutations after upgrading and assign explicit positions, otherwise they will appear grouped together at the end.
Deprecated non-used MAIL_TEMPLATE_SALES_CHANNEL_*_EVENT constants
Deprecated the constants Shopware\Core\Content\MailTemplate\MAIL_TEMPLATE_SALES_CHANNEL_{WRITTEN,DELETED,LOADED,SEARCH_RESULT_LOADED,AGGREGATION_LOADED,ID_SEARCH_RESULT_LOADED}_EVENT as the entity has been removed with Shopware 6.5 and the events were not fired anymore.
JSONL product export format
Product exports now support ProductExportEntity::FILE_FORMAT_JSONL as a third file format.
[Experimental] Agentic Commerce product export provider abstraction
The new AbstractAgenticCommerceProductExportProvider can be used to implement custom Agentic Commerce export providers.
Administration
[Internal] Twig to Native Block Runtime Adapter
A runtime adapter has been added that bridges legacy Twig block overrides ({% block %} / {% parent %}) with the new native <sw-block> / <sw-block-parent /> system. When core components migrate from .html.twig blocks to <sw-block name="...">, existing plugin overrides continue to work automatically. A deprecation warning is emitted to guide plugin developers toward the new native syntax.
Fixed mixin-based route guards for lazy-loaded administration routes
Mixin-defined route guards such as beforeRouteLeave are now executed reliably for lazy-loaded Administration route components.
This fixes cases where cleanup logic in shared mixins, for example in listing pages, was skipped during navigation to detail pages.
Re-render iframe integrations when location changes
Iframe-based Administration extensions now re-render correctly when their locationId changes.
This fixes stale iframe content when switching locations in Meteor Admin SDK integrations and also prevents unnecessary full-page reloads.
Internal comments visible in the order list
The Administration order list now shows internal order comments via a dedicated tooltip icon.
This helps merchants spot internal notes directly from the list view without opening the order detail page.
[Experimental] Agentic Commerce sales channel views and tracking entities
New Agentic Commerce sales channels types can be created.
These sales channels have dedicated configuration options in the administration for property mapping, and usage insights.
New entities for monitoring orders and customers for Agentic Commerce sales channels are included.
Storefront
Order cancellation only shown for open orders
The account order cancellation action is now only shown for orders in state open.
This prevents customers from being offered an invalid cancel action for completed orders.
Earlier focus for cookie bar
To improve the accessibility of the cookie bar, it receives automatic focus when it is shown.
This improves discoverability for screenreader and keyboard users.
A new option autoFocus (default: true) was added to the cookie-permission.html.twig template and CookiePermissionPlugin.
In addition to this the cookie bar will be moved to the top of the body element.
- Deprecated block position of
base_cookie_permissionCookie permission bar will be moved to top of the body element.
Live purchase limits for closeout products on the product detail page
The buy-widget quantity selector now fetches live minPurchase, purchaseSteps, and maxPurchase values for closeout products (internally uses new Store API endpoint GET /store-api/product/purchase-limit) on first user interaction (focus or click).
This ensures the selector reflects actual stock even when the PDP HTML is served from HTTP cache.
The fetch is triggered by the QuantitySelectorPlugin when a purchaseLimitUrl option is set on the quantity selector element.
This is injected via data-quantity-selector-options by buy-widget-form.html.twig for closeout products.
If you override buy_widget_buy_container or related blocks in buy-widget-form.html.twig,
preserve the data-quantity-selector-options attribute with a purchaseLimitUrl key and the js-quantity-stock-adjusted-template <template> element to use this functionality.
GLTF Animations
User are now able to play animations from their 3D models in the Storefront.
Simply upload a model with one or multiple animations baked into the file, bind the file to a product, and display it in the Storefront.
Show child line items if available
New block component_line_item_type_product_children added to template storefront/component/line-item/type/product.html.twig to display child line items if available
App System
App requirements validation
Apps can now declare requirements in their manifest via a new <requirements> element.
Requirements are validated during app installation and updates in production.
If a requirement is not met, the process fails with FRAMEWORK__APP_REQUIREMENTS_NOT_MET and an actionable message.
The first introduced requirement, <public-access/>, verifies that APP_URL uses HTTPS, does not point to an IP or reserved/local development host, and that /api/_info/health-check returns HTTP 200 when called from the Shopware server.
This helps catch misconfigurations before apps that rely on webhooks or other external communication fail silently.
<requirements>
<public-access/>
</requirements>
Unknown requirements are ignored and logged as warnings.
Hosting & Configuration
Possibility to disable product search keyword indexing
The new configuration key shopware.product.search_keyword.indexing can be used to disable the product search keyword indexing.
This is helpful for stores that do not require search keywords and want to avoid the overhead of maintaining those indices while still having basic search functionality or using third-party search solutions.
What's Changed
- fix: only show order cancellation for open orders by @mstegmeyer in https://github.com/shopware/shopware/pull/15833
- feat: allow disable SearchKeywordUpdater by @vienthuong in https://github.com/shopware/shopware/pull/15475
- fix: variable dropdown missing in SEO template configuration by @sydinh in https://github.com/shopware/shopware/pull/15785
- fix: remove dependency on maltyxx/images-generator by @shyim in https://github.com/shopware/shopware/pull/15842
- fix: allow extending validationMessages before form-validation-config by @mvanhorn in https://github.com/shopware/shopware/pull/15829
- feat: separate identify from login event by @adrianles in https://github.com/shopware/shopware/pull/15783
- feat: gltf animations by @feliopterix in https://github.com/shopware/shopware/pull/15766
- fix: dynamic product groups by @nguyenytran in https://github.com/shopware/shopware/pull/15604
- feat: Add choices to product visibility property by @mitelg in https://github.com/shopware/shopware/pull/15866
- feat: use real max order values on cached product detail pages by @h1k3r in https://github.com/shopware/shopware/pull/15376
- fix: change parsing of Flow Action Parameter by @DennisGarding in https://github.com/shopware/shopware/pull/15813
- fix: criteria should not be solved twice when loading via product search route by @vienthuong in https://github.com/shopware/shopware/pull/15814
- fix: Profile file import by @DennisGarding in https://github.com/shopware/shopware/pull/15864
- feat: show error state in loading spinner in admin by @gweiermann in https://github.com/shopware/shopware/pull/14895
- fix: UpdatedByField and CreatedByField with incorrect write scopes by @mstegmeyer in https://github.com/shopware/shopware/pull/15903
- fix: Improve error message if clipboard functionality is not available by @mitelg in https://github.com/shopware/shopware/pull/15890
- feat: add app requirements rules logic by @Gaitholabi in https://github.com/shopware/shopware/pull/12331
- feat: consent revisions by @AydinHassan in https://github.com/shopware/shopware/pull/14899
- fix: unskip tests by @hienha-sw in https://github.com/shopware/shopware/pull/15326
- feat: add open graph field for the product object by @mdanilowicz in https://github.com/shopware/shopware/pull/15605
- fix: product category filter now reflects products from DPG by @sydinh in https://github.com/shopware/shopware/pull/15850
- feat: Agentic product feed by @MartinKrzykawski in https://github.com/shopware/shopware/pull/15550
- feat: add WasModifiedByUserField for DAL entities by @shyim in https://github.com/shopware/shopware/pull/15747
- feat(dal): add maxLength support to attribute entity fields by @SpiGAndromeda in https://github.com/shopware/shopware/pull/15872
- feat: add-docs-reference-command by @Isengo1989 in https://github.com/shopware/shopware/pull/14311
- fix: bulk edit list price or cheapest price not possible without also checking base price checkbox by @nguyenquocdaile in https://github.com/shopware/shopware/pull/15455
- fix: tax calculation for bulk edit price when not set by @nguyenquocdaile in https://github.com/shopware/shopware/pull/15784
- fix: limit on customer address select by @mstegmeyer in https://github.com/shopware/shopware/pull/15953
- fix(storefront-css): large css selectors due to extend rows by @tobiasberge in https://github.com/shopware/shopware/pull/15874
- perf: skip unnecessary HTML escaping for UUIDs and integers in navbar by @shyim in https://github.com/shopware/shopware/pull/15954
- fix: hide clearable button in config select fields if they are required by @davidtraum in https://github.com/shopware/shopware/pull/15663
- refactor: make sw-entity-multi-id-select handle null value by @gweiermann in https://github.com/shopware/shopware/pull/15565
- fix: savepoint errors during queue processing by @h1k3r in https://github.com/shopware/shopware/pull/15912
- fix: saleschannel low limit on number range configuration by @h1k3r in https://github.com/shopware/shopware/pull/15923
- fix: also translate options for condition multi-select fields by @teunkoster in https://github.com/shopware/shopware/pull/15854
- fix: rerender iframe when changing locationId in admin extensions by @gweiermann in https://github.com/shopware/shopware/pull/15930
- fix(storefront): sync search widget aria references by @nguyenquocdaile in https://github.com/shopware/shopware/pull/15963
- fix: npm audit vulnerabilities by @adrianles in https://github.com/shopware/shopware/pull/15996
- fix: move primaryImageOfPage to WebPage scope for correct Google imag… by @taltholtmann in https://github.com/shopware/shopware/pull/15810
- fix(cms): restore product slider settings text alignment (#15027) by @taltholtmann in https://github.com/shopware/shopware/pull/15974
- fix(cms): add missing video play button asset to storefront (#15385) by @taltholtmann in https://github.com/shopware/shopware/pull/15982
- fix: (build performance) Added sass-embedded for faster SCSS compilation. by @jellesiderius in https://github.com/shopware/shopware/pull/14958
- feat: provider agnostic product analytics by @bubleg in https://github.com/shopware/shopware/pull/15933
- fix: querySelector returns null when no element is found and not false by @alexdumea in https://github.com/shopware/shopware/pull/16021
- fix: Adapt translation to include agentic commerce by @alexdumea in https://github.com/shopware/shopware/pull/16020
- feat: Disallow usage of empty by @mitelg in https://github.com/shopware/shopware/pull/13986
- fix: checkout customer comment storage by @Aliaaaam in https://github.com/shopware/shopware/pull/16006
- fix: web installer db autofill from env by @umutdogan4291 in https://github.com/shopware/shopware/pull/15877
- fix: ignore missing storefront captcha from deactivated plugins by @umutdogan4291 in https://github.com/shopware/shopware/pull/15929
- fix: dynamic product groups broken with safari by @nguyenytran in https://github.com/shopware/shopware/pull/15793
- refactor: move webhooks request sending into a central place by @Gaitholabi in https://github.com/shopware/shopware/pull/15909
- fix: Add regular-user icon to user media folder by @alexdumea in https://github.com/shopware/shopware/pull/16024
- fix: Template select display for product comparison and commerce sale… by @alexdumea in https://github.com/shopware/shopware/pull/15969
- fix: set noindex on full cms page by @lacknere in https://github.com/shopware/shopware/pull/16013
- fix: Elasticsearch product search can fail with a 500 when a boolean custom field is configured as searchable and the search term is plain text by @tamvt in https://github.com/shopware/shopware/pull/15941
- fix: upsize order create modal in admin for better visibility of info… by @Berkantdoku in https://github.com/shopware/shopware/pull/16046
- feat: show internal comment tooltip in order list by @MelvinAchterhuis in https://github.com/shopware/shopware/pull/9536
- fix: enhance styling for updates wizard and changelog components by @BrocksiNet in https://github.com/shopware/shopware/pull/16016
- fix: use schema depth in buy widget by @vienthuong in https://github.com/shopware/shopware/pull/15947
- fix: Wrong amount of paginations on category listing with OpenSearch enabled by @tamvt in https://github.com/shopware/shopware/pull/15875
- fix: preserve sw_page_full_path from navigation target in page_change events by @bubleg in https://github.com/shopware/shopware/pull/16060
- fix: prevent duplicate cross-selling assignments by @vienthuong in https://github.com/shopware/shopware/pull/15949
- fix: Reset domain field if storefront sales channel is changed by @alexdumea in https://github.com/shopware/shopware/pull/16040
- fix: reindex sales channel theme names for document rendering by @umutdogan4291 in https://github.com/shopware/shopware/pull/15920
- fix: CMS content language inheritance by @MartinKrzykawski in https://github.com/shopware/shopware/pull/16026
- fix: ACL permission errors for agentic commerce insights tab (#16039) by @taltholtmann in https://github.com/shopware/shopware/pull/16051
- fix: align translation icon in sw-snippet-field with meteor component… by @taltholtmann in https://github.com/shopware/shopware/pull/16035
- fix: respect main variant that chose in the storefront presentation by @rittou in https://github.com/shopware/shopware/pull/15844
- fix: detail-properties table not using $sw-text-color by @Mugentoki in https://github.com/shopware/shopware/pull/13588
- fix(administration): preserve admin search term on module switch by @vienthuong in https://github.com/shopware/shopware/pull/15952
- fix(inventory): hide empty configurator groups by @vienthuong in https://github.com/shopware/shopware/pull/15951
- fix: adding distuingashableName to the payment method search in sales… by @Berkantdoku in https://github.com/shopware/shopware/pull/16033
- fix: missing spacer reset on breakpoing lg by @tobiasberge in https://github.com/shopware/shopware/pull/16045
- feat: replace legacy SQL hash functions with SHA2 by @BrocksiNet in https://github.com/shopware/shopware/pull/15990
- fix: reset property option selection after delete by @vienthuong in https://github.com/shopware/shopware/pull/15934
- feat: add support for rendering line item children in product component by @tschaefermedia in https://github.com/shopware/shopware/pull/8774
- fix: large export file download for SaaS by @DennisGarding in https://github.com/shopware/shopware/pull/16061
- fix: use scss for search close btn by @tobiasberge in https://github.com/shopware/shopware/pull/16110
- fix: plugins fallback to bare language by @dgrothaus-sw in https://github.com/shopware/shopware/pull/16066
- feat: enhance gallery slider with lazy loading and thumbnail height by @BrocksiNet in https://github.com/shopware/shopware/pull/15876
- fix: improve buy box screen reader accessibility by @nguyenquocdaile in https://github.com/shopware/shopware/pull/15962
- fix: date range condition timezone subtraction by @CR0YD in https://github.com/shopware/shopware/pull/16023
- fix: order document link availability after customer deletion by @CR0YD in https://github.com/shopware/shopware/pull/16036
- fix: harden revocation ats by @larskemper in https://github.com/shopware/shopware/pull/16041
- fix: missing attachements on document email by @CR0YD in https://github.com/shopware/shopware/pull/16071
- fix: upgrade axios dependency to version 1.15 by @davidtraum in https://github.com/shopware/shopware/pull/16114
- fix: property typo in SalesChannelContext by @lacknere in https://github.com/shopware/shopware/pull/16115
- fix: batch media uploads to prevent browser and server overload (#11571) by @taltholtmann in https://github.com/shopware/shopware/pull/16043
- feat: Add twig block to image gallery placeholder icon by @tmchow in https://github.com/shopware/shopware/pull/15926
- feat: add optional context and ShopwareEvent to business-layer events by @SpiGAndromeda in https://github.com/shopware/shopware/pull/15830
- fix: Use deliveryTime association instead of deliveryMedia in buy-box by @MartinKrzykawski in https://github.com/shopware/shopware/pull/16106
- fix: Clear translated cms overrides on layout change by @MartinKrzykawski in https://github.com/shopware/shopware/pull/16113
- feat: implement telemetry dispatch handler for extensions by @bubleg in https://github.com/shopware/shopware/pull/16042
- feat: Allow Agentic Commerce referrals for analytics by @dgrothaus-sw in https://github.com/shopware/shopware/pull/15975
- fix: migrate line item stock rule to actual stock and deprecate product.availableStock by @DennisGarding in https://github.com/shopware/shopware/pull/16015
- fix: Improve
sw-highlight-textescapeRegExpmethod by @gecolay in https://github.com/shopware/shopware/pull/14775 - fix: re-issue JWT before updateCurrentUser on admin password change by @jleifeld in https://github.com/shopware/shopware/pull/15863
- fix(admin): await snippet loading before rendering login page by @mkucmus in https://github.com/shopware/shopware/pull/15907
- fix(form-validation): Fix attribute assignment for proper form-validation by @marcelbrode in https://github.com/shopware/shopware/pull/16159
- fix(acceptance): correct section type in CmsSlider visual test (#15253) by @taltholtmann in https://github.com/shopware/shopware/pull/16100
- feat(consent): Add sw-request-consent-modal and implement admin SDK handlers for consent API by @SebastianFranze in https://github.com/shopware/shopware/pull/16116
- fix: clarify bulk edit property empty state by @vienthuong in https://github.com/shopware/shopware/pull/15938
- fix(snippet): Fix capitalization typo by @marcelbrode in https://github.com/shopware/shopware/pull/16209
- fix: restore digital product flag padding by @nguyenquocdaile in https://github.com/shopware/shopware/pull/16171
- fix: duplicate revocation request CMS form translations by @DennisGarding in https://github.com/shopware/shopware/pull/16124
- fix: avoid duplicate robots.txt directives for user-agent blocks by @pietervp in https://github.com/shopware/shopware/pull/16177
- feat: add support for custom elements in html sanatizer by @Jnoack331 in https://github.com/shopware/shopware/pull/14464
- feat: add configurable salutation position by @8mylez-dg in https://github.com/shopware/shopware/pull/15670
- fix: Add compatibility for the codemods with ESLint9 by @aragon999 in https://github.com/shopware/shopware/pull/16083
- feat: Make return url required by @dgrothaus-sw in https://github.com/shopware/shopware/pull/16161
- fix(cms): Restore full-width for sections by @marcelbrode in https://github.com/shopware/shopware/pull/16238
- feat: breadcrumb rework with category referrer feature by @lacknere in https://github.com/shopware/shopware/pull/14158
- fix: Add release information for versions 6.7.10.0 and 6.7.11.0 by @flegarjur in https://github.com/shopware/shopware/pull/16129
- fix: hide variant products after clearance by @rittou in https://github.com/shopware/shopware/pull/15847
- fix: change
AbstractFileWriterto prevent earlyinitTempFilecall by @gecolay in https://github.com/shopware/shopware/pull/16097 - fix(framework): avoid double slash in plugin class path by @mvanhorn in https://github.com/shopware/shopware/pull/16250
- fix(snippet): Fix ellipsis spacing by @marcelbrode in https://github.com/shopware/shopware/pull/16277
- fix: empty footer service menu list style by @lacknere in https://github.com/shopware/shopware/pull/16154
- refactor: Deprecate non used
MAIL_TEMPLATE_SALES_CHANNEL_*event constants by @aragon999 in https://github.com/shopware/shopware/pull/16070 - fix: date-range rule datepicker invalid time offset by @gecolay in https://github.com/shopware/shopware/pull/16112
- feat: custom describers to specify privileges for hookable events by @AydinHassan in https://github.com/shopware/shopware/pull/16162
- fix: refresh cms sidebar navigation after resize by @MartinKrzykawski in https://github.com/shopware/shopware/pull/16148
- fix: defer product type migration to updateDestructive by @larskemper in https://github.com/shopware/shopware/pull/16282
- fix: unpropagated index for flow (OrderRouteTest flaky) by @nfortier-shopware in https://github.com/shopware/shopware/pull/16280
- refactor: improve checkout customer storage and TOS persistence by @Aliaaaam in https://github.com/shopware/shopware/pull/16079
- fix: resolve magnifier zoom node lookup by @vienthuong in https://github.com/shopware/shopware/pull/15946
- fix: search inherited manufacturer variants by @vienthuong in https://github.com/shopware/shopware/pull/15948
- feat: use meteor tokens in inventory domain by @sydinh in https://github.com/shopware/shopware/pull/16002
- fix: render reference price for single calculated price by @officialasishkumar in https://github.com/shopware/shopware/pull/16090
- fix: snippets from bare translation files missing by @dgrothaus-sw in https://github.com/shopware/shopware/pull/16242
- fix: Move global modals into sw-desktop's content div by @SebastianFranze in https://github.com/shopware/shopware/pull/16299
- refactor(snippets): Replace $tc with $t via ESLint rule by @marcelbrode in https://github.com/shopware/shopware/pull/16258
- fix: remove padding override on sw-modal__body by @fschmtt in https://github.com/shopware/shopware/pull/16158
- fix: restore migrated variant option order by @vienthuong in https://github.com/shopware/shopware/pull/15943
- fix: keep active inline edit row stable by @vienthuong in https://github.com/shopware/shopware/pull/16118
- fix: stabilize product stock sorting in administration by @vienthuong in https://github.com/shopware/shopware/pull/16119
- fix(storefront-a11y): earlier focus for cookie bar by @tobiasberge in https://github.com/shopware/shopware/pull/15991
- fix: entity select count mode with large datasets by @lernhart in https://github.com/shopware/shopware/pull/16315
- fix: sort customer groups by name in customer listing by @officialasishkumar in https://github.com/shopware/shopware/pull/16089
- fix: trim required address fields in NotBlank contraints by @lacknere in https://github.com/shopware/shopware/pull/15950
- fix: fix route guards in mixins by @jleifeld in https://github.com/shopware/shopware/pull/15927
- fix: export delivery time with products by @DennisGarding in https://github.com/shopware/shopware/pull/16306
- fix: add missing refresh index product.indexer 6.6 by @nfortier-shopware in https://github.com/shopware/shopware/pull/16343
- fix: improve add product type migration by @vienthuong in https://github.com/shopware/shopware/pull/16321
- fix: custom field inheritance by @jleifeld in https://github.com/shopware/shopware/pull/15905
- feat: add handle uiSidebarSetActive by @quando1910 in https://github.com/shopware/shopware/pull/16284
- fix: Remove
base_navigationblock from checkout templates by @aragon999 in https://github.com/shopware/shopware/pull/16082 - fix: document bulk download by @DennisGarding in https://github.com/shopware/shopware/pull/16256
- fix: migrate existing is-download state to product digital type migration by @vienthuong in https://github.com/shopware/shopware/pull/16364
- fix: non existence default category layout when migrating by @rittou in https://github.com/shopware/shopware/pull/16294
- fix: typo in cms detail empty stage content block by @lacknere in https://github.com/shopware/shopware/pull/16314
- feat: twig native block runtime adapter by @jleifeld in https://github.com/shopware/shopware/pull/15347
- fix(snippet): Update dummy plugins to use agnostic locales by @marcelbrode in https://github.com/shopware/shopware/pull/16337
- fix: rounded corners on sw-modals-renderer by @mstegmeyer in https://github.com/shopware/shopware/pull/16366
- fix(storefront-a11y): add landmark role to filter panel by @nguyenquocdaile in https://github.com/shopware/shopware/pull/16365
- fix: Re-introduce Twig escaper cache by @mitelg in https://github.com/shopware/shopware/pull/16109
- fix: duplicate product collection API alias by @tamvt in https://github.com/shopware/shopware/pull/16353
- fix(captcha): restore removal of required validator from reCAPTCHA inputs by @bubleg in https://github.com/shopware/shopware/pull/16396
- fix: Remove assertSame from NoAssertsOnObjectsRule PHPStan rule by @mitelg in https://github.com/shopware/shopware/pull/16400
- fix(cms): seed parent-language override when removing field inheritance by @MartinKrzykawski in https://github.com/shopware/shopware/pull/16393
- fix: preserve sibling slot and parent-language field overrides by @MartinKrzykawski in https://github.com/shopware/shopware/pull/16410
- fix: use the billing address country for the vat id validation by @dgrothaus-sw in https://github.com/shopware/shopware/pull/15433
- fix: only require min value of quantity range with major version 6.8 by @rittou in https://github.com/shopware/shopware/pull/16412
- fix: document percentage in price schemas by @tamvt in https://github.com/shopware/shopware/pull/16367
- fix: ignore deleted SEO URLs in resolver by @vienthuong in https://github.com/shopware/shopware/pull/16120
- fix: Make it possible for Twig extensions to work again by @mitelg in https://github.com/shopware/shopware/pull/16434
- fix: handle invalid custom locales by @dneustadt in https://github.com/shopware/shopware/pull/16285
- fix: prevent overencoding external urls and control character filtering by @dneustadt in https://github.com/shopware/shopware/pull/16379
- fix: overflow of sw-modals-renderer by @mstegmeyer in https://github.com/shopware/shopware/pull/16416
- feat: add ApiAware flag to requested customer group field and update API documentation for requestedGroupId by @mdanilowicz in https://github.com/shopware/shopware/pull/16363
- fix: Add upcoming release to release info (backport: 6.7.10.x) by @shopware-octo-sts-app[bot] in https://github.com/shopware/shopware/pull/16475
- fix: skip product analytics test for lower shopware versions (backport: 6.7.10.x) by @shopware-octo-sts-app-2[bot] in https://github.com/shopware/shopware/pull/16489
- feat(agentic-commerce): OpenAi config migration from plugin (backport: 6.7.10.x) by @shopware-octo-sts-app[bot] in https://github.com/shopware/shopware/pull/16536
New Contributors
- @jellesiderius made their first contribution in https://github.com/shopware/shopware/pull/14958
- @tschaefermedia made their first contribution in https://github.com/shopware/shopware/pull/8774
- @tmchow made their first contribution in https://github.com/shopware/shopware/pull/15926
- @pietervp made their first contribution in https://github.com/shopware/shopware/pull/16177
- @Jnoack331 made their first contribution in https://github.com/shopware/shopware/pull/14464
- @officialasishkumar made their first contribution in https://github.com/shopware/shopware/pull/16090
Full Changelog: https://github.com/shopware/shopware/compare/v6.7.9.1...v6.7.10.0
Get in touch
Discuss about decisions, bugs you might stumble upon, etc in our community discord. See you there ;)
Fixed modals, category migration, reCAPTCHA, and quantity validation.
Full changelog
System requirements
- tested on PHP
8.2,8.4and8.5 - tested on
MySQL 8andMariaDB 11
What's Changed
- fix: Move global modals into sw-desktop's content div (backport: 6.7.9.x) by @SebastianFranze in https://github.com/shopware/shopware/pull/16311
- fix: non existence default category layout when migrating (backport: 6.7.9.x) by @rittou in https://github.com/shopware/shopware/pull/16378
- fix(captcha): restore removal of required validator from reCAPTCHA inputs (backport: 6.7.9.x) by @bubleg in https://github.com/shopware/shopware/pull/16403
- fix: duplicate revocation request CMS form translations (backport: 6.7.9.x) by @DennisGarding in https://github.com/shopware/shopware/pull/16404
- fix: only require min value of quantity range with major version 6.8 (backport: 6.7.9.x) by @rittou in https://github.com/shopware/shopware/pull/16421
Full Changelog: https://github.com/shopware/shopware/compare/v6.7.9.0...v6.7.9.1
Get in touch
Discuss about decisions, bugs you might stumble upon, etc in our community discord. See you there ;)
- ACL checks for twig template routes
- ZugFerd invoice document support
Full changelog
See the UPGRADE.md for all important technical changes.
- #11435 - Buybox CMS element references non-existent association
- #15984 - Translated CMS Slot Overrides
- #7835 - Installer does not use DATABASE_URL
- #15405 - Autocomplete in backend forms returns only 25 entries — important addresses/entries are missing.
- #15543 - User in history log "last change" is not changed
- #15839 - Remove dependency on maltyxx/images-generator
- #15489 - Order cancellation only shown for open orders
- #15741 - Unknown feature "V6_8_0"
- #15694 - feat: add zugferd documents (backport: 6.6.x)
- #15788 - fix: Add specific ACL checks for routes that render twig templates (backport: 6.6.x)
- #14648 - Custom Field Data Mapping: Media custom field treated as text
- #11895 - Improve admin search indexing event handling and iterator versioning
- #15418 - core/System/NumberRange/ValueGenerator/Pattern/IncrementStorage/IncrementSqlStorage returns string type if database entry is empty
- #15403 - Misleading info after clicking several times submit button at online cancelation request form
- #4053 - Adds MIN() Function to cheapestPrice Accessor (Ullrich Löblein)
- #15269 - PromotionRedemptionUpdater performance
- #15581 - Fix race condition between cart persist and load
- #14520 - Google reCAPTCHA is only verified/set for the first form on a page
- #15021 - Can't remove promotion set products from cart
- #10872 - Product image alt text no longer falls back to product name on product detail page since 6.6
- #15435 - When every line/field in product_search_config_field has "searchable" 0, certain product searches with "term" fail with an error
- #15419 - Fix invoice number selection for credit notes and storno invoices (Justus Geramb)
- #15443 - fix: revocation form field validation
- #14397 - Promotion individual code is not marked as redeemed when entering the code in lowercase letters
- #14713 - Performance issue when resolving category children
- Microdata deprecated; enable via JSON_LD_DATA feature flag
- JSON-LD structured data format with comprehensive schema coverage
- OpenSearch support for Admin API searches
- External media thumbnail support
Full changelog
System requirements
- tested on PHP
8.2,8.4and8.5 - tested on
MySQL 8andMariaDB 11
Features
Default CMS page ID now persisted for categories
Previously, when a category had no CMS page assigned, the default CMS page ID was only set at runtime during entity loading. This caused missing cmsPage association data when loading categories with criteria that included the cmsPage association.
Now the default CMS page ID is automatically written to the database when a category is saved without a cmsPageId. A migration also backfills all existing categories that have no CMS page assigned.
The categoryLoaded event listener has been removed from CategorySubscriber since the default CMS page ID is now always present in the database. Sales channel-specific CMS page defaults continue to be applied at runtime during salesChannelCategoryLoaded.
The runtime-only field cmsPageIdSwitched on CategoryDefinition and CategoryEntity has been deprecated and will be removed in v6.8.0. It is no longer used internally.
New internal comment for state machine state history entries
A new internal comment field was added to the state change modal which can be used to add additional information about a state change.
The internal comment is only visible in the administration and not shown to customers.
It can be found in the state machine state history modal (state change modal) on the detail page of an order.
Use JSON-LD format for Structured Data
The Storefront now emits structured data as JSON-LD (<script type="application/ld+json"> in the <head>) instead of scattered inline microdata attributes (itemscope, itemtype, itemprop). JSON-LD is the preferred format and keeps structured data cleanly separated from the HTML markup.
In addition to replacing the existing microdata, several schema types that were missing entirely are now included: a WebSite schema with SearchAction (enabling the Google Sitelinks Searchbox), a top-level Organization schema with the shop logo, an ItemList schema on category and search result pages, and VideoObject entries for product video media.
The migration is controlled by the new JSON_LD_DATA feature flag. When the flag is off (default), the existing microdata is rendered as before. When the flag is on, JSON-LD is injected and all microdata is removed. The old microdata is deprecated and will be removed with the next major release (v6.8.0).
The following schema types are now emitted as JSON-LD:
| Schema | Pages |
|---|---|
| WebSite + SearchAction | All pages (enables Google Sitelinks Searchbox) |
| Organization with logo | All pages |
| WebPage / ProductPage / CollectionPage / SearchResultsPage | All pages (type narrows per context) |
| BreadcrumbList | All pages with a navigation breadcrumb |
| Product | Product detail page |
| ItemList | Category pages, search results |
The Product schema on the product detail page is significantly more complete compared to the previous microdata:
- All product images are listed (previously only cover image via
itemprop) VideoObjectentries are emitted for any video media in the product's media collectionAggregateRatingnow includes the requiredratingCount(total number of approved reviews), sourced via an efficient aggregation query inProductPageLoader- Individual
Reviewitems (up to 10 most recent) are included alongsideAggregateRating OfferShippingDetailswithShippingDeliveryTimeis included for single-price products- Dimensions (
weight,height,width,depth) are typed asQuantitativeValuenodes itemConditionand a typedseller(Organization) are set on everyOffergtin13(EAN) andmpn(manufacturer number) are included when present
Extending the schema templates
Each schema lives in its own Twig template under storefront/layout/structured-data/. Every template exposes two blocks: an outer block that contains the full data-building logic, and an inner _script block that wraps just the <script> output. Plugins and themes can override either level using Shopware's standard template extension mechanism.
To add or change properties, override the _script block, merge your changes into the data variable (productData, orgData, webPageData, etc.), and call {{ parent() }}.
{# MyPlugin/Resources/views/storefront/layout/structured-data/json-ld-organization.html.twig #}
{% sw_extends '@Storefront/storefront/layout/structured-data/json-ld-organization.html.twig' %}
{% block layout_structured_data_organization_script %}
{% set orgData = orgData|merge({
'contactPoint': {
'@type': 'ContactPoint',
'contactType': 'customer service',
'email': config('core.basicInformation.email')
}
}) %}
{{ parent() }}
{% endblock %}
The available outer / script block pairs are:
| Template | Outer block | Script block |
|---|---|---|
| json-ld-webpage.html.twig | layout_structured_data_webpage | layout_structured_data_webpage_script |
| json-ld-breadcrumb.html.twig | layout_structured_data_breadcrumb | layout_structured_data_breadcrumb_script |
| json-ld-organization.html.twig | layout_structured_data_organization | layout_structured_data_organization_script |
| json-ld-website.html.twig | layout_structured_data_website | layout_structured_data_website_script |
| json-ld-item-list.html.twig | layout_structured_data_item_list | layout_structured_data_item_list_script |
| json-ld-product.html.twig | page_product_detail_json_ld | page_product_detail_json_ld_script |
[Experimental] Use OpenSearch for Admin API searches
When the data in your store grows larger the administration might become slower, especially when searching for entities in lists.
This is because the administration relies only on the DB fulltext search. For larger stores, this can lead to performance issues and even timeouts.
Now it is possible to use OpenSearch for the administration and Admin API searches, which can significantly improve the performance of searches in the administration, especially for larger stores.
To enable this feature, you can set the ENABLE_OPENSEARCH_FOR_ADMIN_API feature flag to true. For more technical guidelines refer to the section in the Hosting & Configuration updates.
Online revocation request form
Customers can now conveniently submit revocation requests through an online form.
Similar to the existing Contact Form, the revocation form can be integrated and used via Shopping Experiences, allowing flexible placement within the storefront.
External media thumbnail support
External media entities can now have external thumbnail URLs attached to them, which is useful for CDNs that provide pre-generated thumbnails alongside the main media file.
Two new API endpoints have been added:
POST /api/_action/media/{id}/external-thumbnails- Add thumbnails to existing external mediaDELETE /api/_action/media/{id}/external-thumbnails- Remove all external thumbnails from media
Both endpoints require the target media entity to be external (i.e. its path must be an HTTP/HTTPS URL). Attempting to call them on regular file-based media returns an error.
When creating external media via POST /api/_action/media/external-link, you can now provide an optional thumbnails array directly in the request body:
{
"url": "https://cdn.example.com/image.jpg",
"thumbnails": [
{ "url": "https://cdn.example.com/image-200x200.jpg", "width": 200, "height": 200 },
{ "url": "https://cdn.example.com/image-400x400.jpg", "width": 400, "height": 400 }
]
}
The same thumbnails payload shape is accepted by POST /api/_action/media/{id}/external-thumbnails.
Support of long-running MySQL connections
It is now possible to use libraries like doctrine-mysql-come-back, which wrap the default DBAL connection.
More information on how to set up, can be found here: https://developer.shopware.com/docs/guides/hosting/infrastructure/database.html#setup-for-long-running-environments
System config overrides in staging mode
The system:setup:staging command now supports pre-configuring system config keys during staging setup. Both global and sales channel-specific values can be set, following the same YAML structure used for static system configuration.
Use default for global config values and sales channel IDs for channel-specific overrides:
shopware:
staging:
system_config:
default:
core.mailerSettings.smtpHost: "smtp.staging.local"
core.listing.allowBuyInListing: false
0188da12724970b9b4a708298259b171:
core.mailerSettings.smtpHost: "smtp.other.staging.local"
When bin/console system:setup:staging is executed, the configured keys are written to the database via SystemConfigService.
API
Minimum value constraints added to quantity fields in ProductPriceDefinition
The fields quantityStart and quantityEnd of ProductPriceDefinition now require a minimum value of 1.
Deprecation of newsletter route methods
The following methods are deprecated and will be removed with the next major version:
AbstractNewsletterSubscribeRoute::subscribe()→ usesubscribeWithResponse()insteadAbstractNewsletterConfirmRoute::confirm()→ useconfirmWithResponse()insteadAbstractNewsletterUnsubscribeRoute::unsubscribe()→ useunsubscribeWithResponse()instead
The new methods currently return StoreApiResponse in the abstract classes. In the next major version, the return types will change to their explicit types:
subscribeWithResponse()→NewsletterSubscribeRouteResponseconfirmWithResponse()→SuccessResponseunsubscribeWithResponse()→SuccessResponse
The Store API newsletter routes now return 200 OK with a response body instead of 204 No Content:
| Route | Response |
|-------|----------------------------------------------------------------|
| /store-api/newsletter/subscribe | {"success": true, "status": "notSet\|optIn\|optOut\|direct"} |
| /store-api/newsletter/confirm | {"success": true} |
| /store-api/newsletter/unsubscribe | {"success": true} |
OpenAPI enums via DAL Choice flag
DAL fields can now declare a finite set of allowed values using the Choice flag.
This information is used to enrich the generated OpenAPI schema with enum values for better API documentation and client generation.
By default, Choice is non-strict and does not affect write validation.
If you want to enforce values on write, set strict: true when creating the flag; the write layer will then validate the input for supported field types (string, int, float).
Deprecated /api/_action/mail-template/validate route
The /api/_action/mail-template/validate route is deprecated and will be removed without replacement in v6.8.0.0, as it was not used and did not provide any significant value.
Core
Changed behaviour of default fields in EntityDefinition
Currently, it is not possible to overwrite the default fields createdAt and updatedAt of an entity in the definition.
This is because the default fields are applied on top of the fields defined in the defineFields method.
From the next major version on, the logic is turned around and the defined fields will be applied after the default fields.
This makes it possible to overwrite the current default fields createdAt and updatedAt.
Check your EntityDefinitions if this change will have an effect on your entities' behaviour. (Only applicable if you manually add CreatedAtField and/or UpdatedAtField)
Product stream deletion is blocked while product exports exist
Deleting a product stream that's been used in a product export raises a dedicated delete restriction.
This rule is additionally enforced on database level by changing the foreign key delete action from CASCADE to RESTRICT.
Reduced HTTP cache invalidation on system config changes
SystemConfigService::set(), setMultiple(), and delete() now accept an optional $silent parameter. When silent=true, the internal config cache is still cleared immediately, but the broad HTTP cache tag system.config-{salesChannelId} is not invalidated.
This prevents "invalidation storms" where writing internal config values (e.g. timestamps, license keys, store secrets) would wipe big amount of HTTP-cached pages.
Internal Shopware call sites that write non-storefront config values now pass silent=true. The ConfigSet CLI command accepts --silent, and the Admin API POST /_action/system-config and POST /_action/system-config/batch accept a ?silent query parameter.
In v6.8.0.0, silent parameter in SystemConfigService methods will default to true. Clients should pass value explicitly to prepare for changes.
Scheduled cleanup of expired customer recovery records
A new scheduled task customer.cleanup_customer_recovery has been added that automatically removes expired customer recovery records from the database on a daily basis.
Customer recovery records (password reset tokens) expire after 2 hours. Previously these records were never removed, causing the customer_recovery table to grow indefinitely. The new task deletes all records older than 48 hours.
New attribute field types for entity definitions
The attribute-based entity definition system now supports additional field types:
FieldType::EMAILmaps toEmailFieldfor email validation#[Password]attribute for password fields with configurable hashing algorithm, hash options, and scope#[ListField]attribute for storing lists with optional typed field specificationFieldType::PRICEmaps toPriceFieldfor price storage
Inheritance added to product main categories
Product main categories are now inherited from parent product if not explicitly defined on the variant itself.
CategoryIndexer doesn't dispatch IndexingMetaEvent when only index irrelevant data changes
The CategoryIndexer did already check for changed payload and only triggered the tree/child-count updaters when the parentId changed and the breadcrumb updater when the name changed.
But it still dispatched the CategoryIndexingMessage, even though all relevant Updaters would be skipped. For performance and efficiency reasons that event is not thrown anymore in the case of an update when only irrelevant data has changed.
This saves resources, as we don't need to fetch any child categories, dispatch unneeded messages and create DB transactions when it's not needed, especially as this whole handling was also triggered when you only assign products to a category, which is a quite common action.
Note that this only affects the update case, in the case of newly inserted or deleted categories the event is still dispatched, as all updaters are relevant in that case.
Existing cart recalculations no longer recreate deleted carts
When an existing cart is recalculated, Shopware now uses the cart's persisted state to avoid recreating carts that were already deleted.
This prevents race conditions where a concurrent request, such as placing an order, deletes the cart and a stale recalculation writes it back afterwards.
Deprecation of unused TemplateGroup class
The class \Shopware\Core\Content\Seo\SeoUrlTemplate\TemplateGroup has been deprecated as it is unused and will be removed in the next major version v6.8.0.
New criteria events for product slider CMS element
Two new events are dispatched when the product slider CMS element resolves its product criteria, allowing subscribers to modify the criteria:
Shopware\Core\Content\Product\Events\ProductSliderStaticCriteriaEventis fired by theStaticProductProcessorwhen resolving a static product list.Shopware\Core\Content\Product\Events\ProductSliderStreamCriteriaEventis fired by theProductStreamProcessorwhen resolving a product stream.
Allow custom HTTP client injection for S3 client creation
The S3 client creation flow (S3ClientFactory, AwsS3v3Factory, PresignedUploadUrlGenerator)
now accepts an optional HttpClientInterface parameter. When provided, this HTTP client is
forwarded to the underlying AsyncAws S3Client instead of letting it create its own default.
Both AwsS3v3Factory and PresignedUploadUrlGenerator are wired via DI to the new
shopware.filesystem.s3.client service ID. This service is not registered by default, so
null is injected and AsyncAws uses its own internal HTTP client. Integrators can register
the shopware.filesystem.s3.client service to provide a custom Symfony HTTP client with
custom timeouts, retry strategies, or HTTP protocol version for S3 operations.
Administration
CMS data mapping source for media custom fields
Fixed media custom fields not being available as data mapping source for image elements in category and product CMS layouts. Shop Administrators can now reliably bind media custom fields to images in CMS pages without workarounds.
Storefront
Block renaming
- Deprecated block
page_product_detail_product_buy_button_labelinResources/views/storefront/component/product/card/action.html.twigwhich will be removed in v6.8.0. Use blockcomponent_product_box_action_buy_button_labelinstead.
Disabled runtime error overlay in webpack dev server
The webpack dev server overlay for runtime errors has been disabled in hot-reload mode. The overlay frequently interrupted the development workflow by covering the entire viewport for non-critical runtime errors, making it difficult to interact with the storefront during development. Error details remain available in the browser console.
HEAD-requests do not trigger the registration double-opt-in
As some mail clients send HEAD requests to links which are contained in emails, the registration double-opt-in was sometimes already confirmed, as Symfony treats HEAD-requests the same as GET-request. Now HEAD-requests do not trigger the registration double-opt-in anymore, only "real" GET-requests.
App System
Hosting & Configuration
Critical Fixes
What's Changed
- fix: index used custom fields in product by @rittou in https://github.com/shopware/shopware/pull/14770
- fix(promotion): redeemed when entering code in lowercase by @FlorianKe in https://github.com/shopware/shopware/pull/14589
- fix: add number type to stock inline edit fields by @lacknere in https://github.com/shopware/shopware/pull/15004
- fix: Do not try to create a list price of
0by @aragon999 in https://github.com/shopware/shopware/pull/14889 - fix: Head Request do not trigger account confirm by @aragon999 in https://github.com/shopware/shopware/pull/14614
- fix: use order versionId by @En0Ma1259 in https://github.com/shopware/shopware/pull/15028
- feat: Return subscription status in "store-api.newsletter.subscribe" by @umutdogan4291 in https://github.com/shopware/shopware/pull/14653
- feat: Refactor empty usage in Framework DAL to prepare its prohibition by @mitelg in https://github.com/shopware/shopware/pull/15041
- feat: Refactor empty usage in Framework app and API to prepare its prohibition by @mitelg in https://github.com/shopware/shopware/pull/15040
- fix: ATTRIBUTE_NO_STORE is not processed when CACHE_REWORK feature is disabled by @h1k3r in https://github.com/shopware/shopware/pull/15142
- fix: remove _isCmsForm to not run into formSubmittedByCaptcha blocking the form submission by @BrocksiNet in https://github.com/shopware/shopware/pull/15119
- fix: apply analyzer for search term with one token to filter stopword by @tamvt in https://github.com/shopware/shopware/pull/14646
- fix: Do not hide important info from mobile users by @amenk in https://github.com/shopware/shopware/pull/15103
- fix: use new hasLineItemWithType method by @En0Ma1259 in https://github.com/shopware/shopware/pull/15097
- feat: add action response possibility to newsletter subscribe route by @lacknere in https://github.com/shopware/shopware/pull/15010
- fix: use correct expiry for symfony cache by @keulinho in https://github.com/shopware/shopware/pull/15149
- fix: resolve npm audit failures across all packages by @BrocksiNet in https://github.com/shopware/shopware/pull/15164
- fix: allow select parent product for cross selling by @nguyenquocdaile in https://github.com/shopware/shopware/pull/15169
- feat: Persist backend and tracking consent by @SebastianFranze in https://github.com/shopware/shopware/pull/15127
- feat: product analytics auth fetch transport by @adrianles in https://github.com/shopware/shopware/pull/13887
- fix: revert fix for storefront session cookie path (#14599) by @umutdogan4291 in https://github.com/shopware/shopware/pull/15173
- fix: default folder for product media by @sydinh in https://github.com/shopware/shopware/pull/15174
- feat: allow to refresh opensearch during cache clear by @keulinho in https://github.com/shopware/shopware/pull/15162
- fix: empty product stream id when updating product assignment type to product by @rittou in https://github.com/shopware/shopware/pull/15138
- fix: prevent image upscaling in standard display mode (#14468) by @taltholtmann in https://github.com/shopware/shopware/pull/15171
- feat: Set up Consent Rate metrics by @bubleg in https://github.com/shopware/shopware/pull/14961
- fix(cms-slider): Adjust image/product slider/galery styling (re-apply) by @marcelbrode in https://github.com/shopware/shopware/pull/15066
- fix: analytics test when admin loads longer then 3s by @keulinho in https://github.com/shopware/shopware/pull/15191
- fix: deprecated sw-product-settings-mode component by @nguyenquocdaile in https://github.com/shopware/shopware/pull/14379
- fix: administration have no robots information + set robots meta to no-index, no-follow by @DerKaito in https://github.com/shopware/shopware/pull/15208
- fix: Check plugin requirements during activation by @mitelg in https://github.com/shopware/shopware/pull/15177
- fix: prevent maintenance mode heading style inconsistency (#15090) by @taltholtmann in https://github.com/shopware/shopware/pull/15223
- fix: use correct delimiter in refresh migration command by @keulinho in https://github.com/shopware/shopware/pull/15211
- feat: trigger conditions for consent by @bubleg in https://github.com/shopware/shopware/pull/15161
- fix: ZUGFeRD download label and filename by @vintagesucks in https://github.com/shopware/shopware/pull/15202
- fix: rename product box action buy button label block by @lacknere in https://github.com/shopware/shopware/pull/14956
- feat: online revocation request by @DennisGarding in https://github.com/shopware/shopware/pull/14362
- feat: add mainCategories inheritance by @lacknere in https://github.com/shopware/shopware/pull/15197
- fix(admin): enable natural sorting when sorting variants by name by @sydinh in https://github.com/shopware/shopware/pull/15220
- feat: Use new consent system for backend data consent by @SebastianFranze in https://github.com/shopware/shopware/pull/14814
- feat: Add event for the config info API route by @mitelg in https://github.com/shopware/shopware/pull/15229
- fix: correct the change log by @rittou in https://github.com/shopware/shopware/pull/15286
- revert: applifecycle reorganisation by @AydinHassan in https://github.com/shopware/shopware/pull/15281
- refactor: use Context::enableInheritance in ProductStreamUpdater by @lacknere in https://github.com/shopware/shopware/pull/15238
- feat: add Model Editor sidebar by @feliopterix in https://github.com/shopware/shopware/pull/15105
- fix: Use correct array annotation for country address format property by @mitelg in https://github.com/shopware/shopware/pull/15072
- fix: email template link in flow builder modal by @vintagesucks in https://github.com/shopware/shopware/pull/15128
- fix: add loading indicator to sw-flow detail by @keulinho in https://github.com/shopware/shopware/pull/15232
- fix: attach xml invoice documents to emails by @vintagesucks in https://github.com/shopware/shopware/pull/15255
- fix(language-widget): update language display in offcanvas by @BrocksiNet in https://github.com/shopware/shopware/pull/15219
- feat: apply opensearch globally in admin by @vienthuong in https://github.com/shopware/shopware/pull/11634
- fix: Fix issue ES working wrong with NotEquals filter in nested fields by @tamvt in https://github.com/shopware/shopware/pull/15244
- fix(cookie): recaptcha form validation issue by @BrocksiNet in https://github.com/shopware/shopware/pull/15212
- fix: Check for consent in the admin before sending events by @bubleg in https://github.com/shopware/shopware/pull/15296
- fix(snippet): Replace snippet with global default by @marcelbrode in https://github.com/shopware/shopware/pull/15311
- fix: mt-text-editor closing bug by @MartinKrzykawski in https://github.com/shopware/shopware/pull/15297
- fix(admin): Clean up usage data consent modal checklist and icon layout by @bubleg in https://github.com/shopware/shopware/pull/15320
- feat: Add CMS product slider criteria events by @aragon999 in https://github.com/shopware/shopware/pull/15306
- feat: Add declined state for consent by @SebastianFranze in https://github.com/shopware/shopware/pull/15301
- feat: make database tz data required in next major by @shyim in https://github.com/shopware/shopware/pull/15282
- feat: Add scheduled task to delete old customer recovery entries by @aragon999 in https://github.com/shopware/shopware/pull/15134
- feat(administration): send identified consent_revoked event with deletion identifiers by @bubleg in https://github.com/shopware/shopware/pull/15334
- feat(telemetry): Handle telemetry events from Telemetry.track by @SebastianFranze in https://github.com/shopware/shopware/pull/15345
- fix: remove unused template for address-actions by @Berkantdoku in https://github.com/shopware/shopware/pull/15317
- refactor: document settings by @larskemper in https://github.com/shopware/shopware/pull/14878
- fix: broken transaction level on cache storage deadlock by @keulinho in https://github.com/shopware/shopware/pull/15332
- fix: twig template loading without db by @shyim in https://github.com/shopware/shopware/pull/14856
- feat(consent): Don't show consent modal when consent was already set by @SebastianFranze in https://github.com/shopware/shopware/pull/15355
- fix: load language on languageId change by @davidtraum in https://github.com/shopware/shopware/pull/15183
- feat: introduce enum provider for better API schema by @vienthuong in https://github.com/shopware/shopware/pull/13811
- fix(performance): Change full table scan to indexed parent id query by @runelaenen in https://github.com/shopware/shopware/pull/14719
- feat: make model editor scale lockable by @Deristes in https://github.com/shopware/shopware/pull/15368
- refactor: implement sw-vector-field varaints colored - neutral by @Deristes in https://github.com/shopware/shopware/pull/15369
- fix: crash of admin by extension reload through propagating reload to the entire page by @gweiermann in https://github.com/shopware/shopware/pull/14868
- fix(snippets): Fix grammar mistakes by @marcelbrode in https://github.com/shopware/shopware/pull/15387
- fix: disable anonymous tracking by @shyim in https://github.com/shopware/shopware/pull/15411
- fix: insufficient contrast for review timestamps by @larskemper in https://github.com/shopware/shopware/pull/15375
- fix: preview document invoice reference by @vintagesucks in https://github.com/shopware/shopware/pull/15338
- fix: remove unnecessary profiler toggling in tests by @shyim in https://github.com/shopware/shopware/pull/15412
- fix: avoid double event tracking on first consent by @bubleg in https://github.com/shopware/shopware/pull/15422
- fix: add alt fall back to product name by @nguyenquocdaile in https://github.com/shopware/shopware/pull/15241
- feat: Use types to validate consent event options by @SebastianFranze in https://github.com/shopware/shopware/pull/15434
- fix: Missing undefined array key checks in HookableBusinessEvent by @mitelg in https://github.com/shopware/shopware/pull/15420
- feat: improved cache invalidation on system config writes by @h1k3r in https://github.com/shopware/shopware/pull/15279
- feat: add heartbeat scheduled hookable event by @Gaitholabi in https://github.com/shopware/shopware/pull/15316
- fix(admin): adjust consent modal layout by @bubleg in https://github.com/shopware/shopware/pull/15453
- feat: Allow external thumbnails for external media by @dgrothaus-sw in https://github.com/shopware/shopware/pull/15340
- fix: dont use product search config loader in global search term interpreter by @vienthuong in https://github.com/shopware/shopware/pull/15436
- fix: token refresh behavior over multiple tabs by @davidtraum in https://github.com/shopware/shopware/pull/14454
- fix: Sales channel shows wrong language data after save on language switch by @davidtraum in https://github.com/shopware/shopware/pull/14641
- fix: Sync frontend email validation with backend by @s-hamann in https://github.com/shopware/shopware/pull/15449
- refactor: text rendering in sw-highlight-text by @davidtraum in https://github.com/shopware/shopware/pull/15467
- fix: Don't validate composer constraints on activate after install by @keulinho in https://github.com/shopware/shopware/pull/15472
- fix(admin): remove pre-consent amplitude sdk usage by @bubleg in https://github.com/shopware/shopware/pull/15493
- fix: update feedback ID format for Google reCAPTCHA v2 and v3 components by @BrocksiNet in https://github.com/shopware/shopware/pull/15494
- feat: add moduleCriteria method for admin es search by @vienthuong in https://github.com/shopware/shopware/pull/15446
- fix: validate RTE code content before closing CMS element settings mo… by @taltholtmann in https://github.com/shopware/shopware/pull/15406
- fix: delete document media files by @ennasus4sun in https://github.com/shopware/shopware/pull/15319
- feat: add webhook failure strategy by @AydinHassan in https://github.com/shopware/shopware/pull/15488
- fix: reset order addresses on destroy in sw-order-detail by @mstegmeyer in https://github.com/shopware/shopware/pull/15503
- fix: normalize telemetry event names to snake_case by @bubleg in https://github.com/shopware/shopware/pull/15528
- fix: race condition on theme assign causes error when mariadb is used by @h1k3r in https://github.com/shopware/shopware/pull/15498
- fix: admin amplitude retries and disable sdk logs by @bubleg in https://github.com/shopware/shopware/pull/15479
- fix: price inheritance is not applied correctly for product variants by @nguyenytran in https://github.com/shopware/shopware/pull/15373
- fix: race condition between cart persist and load by @mstegmeyer in https://github.com/shopware/shopware/pull/15501
- fix: create product page wrong directly to variant page by @nguyenquocdaile in https://github.com/shopware/shopware/pull/15396
- feat: product filter by product number with partial matches by @nguyenquocdaile in https://github.com/shopware/shopware/pull/15413
- feat: move digital content access checkbox to submit order button by @Berkantdoku in https://github.com/shopware/shopware/pull/15309
- fix: change product stream product export delete rule by @rittou in https://github.com/shopware/shopware/pull/15243
- fix: add sales-channel access key to HTTP cache Vary headers by @shyim in https://github.com/shopware/shopware/pull/15445
- fix(consent): Don't update consent state in Admin when logged out by @SebastianFranze in https://github.com/shopware/shopware/pull/15547
- feat(consent): Move legal links into sub cards by @SebastianFranze in https://github.com/shopware/shopware/pull/15532
- fix(admin): delete amplitude user data when consent is revoked during deferred init by @bubleg in https://github.com/shopware/shopware/pull/15538
- fix: rating average for products with variants by @vintagesucks in https://github.com/shopware/shopware/pull/15526
- refactor: applifecycle reorganisation by @AydinHassan in https://github.com/shopware/shopware/pull/15463
- fix: don't read unfiltered many to many associations by @keulinho in https://github.com/shopware/shopware/pull/15539
- feat: Ensure proper types on connection driver options by @mitelg in https://github.com/shopware/shopware/pull/15551
- fix(meteor): register mt-badge component by @fschmtt in https://github.com/shopware/shopware/pull/15454
- fix(admin): hide upload button when runtime extension management is disabled by @shyim in https://github.com/shopware/shopware/pull/15439
- fix: allow bulk deletion of dependent documents via sync API by @ennasus4sun in https://github.com/shopware/shopware/pull/15549
- feat: add warning message to the error that catches unexpected warnings in admins testing environment by @gweiermann in https://github.com/shopware/shopware/pull/15585
- feat: allow custom HTTP client injection for S3 client creation by @lankhaar in https://github.com/shopware/shopware/pull/15464
- perf: improve join in PerformanceRedemptionUpdater by @mstegmeyer in https://github.com/shopware/shopware/pull/15603
- refactor: deprecate blocking automatic promotions by @mstegmeyer in https://github.com/shopware/shopware/pull/15602
- fix: center dashboard card content by @larskemper in https://github.com/shopware/shopware/pull/15590
- fix: setting vatIds back to null by @jozsefdamokos in https://github.com/shopware/shopware/pull/15588
- feat: Structured Data as JSON-LD Format by @Phil23 in https://github.com/shopware/shopware/pull/15541
- fix: Listen to input-change event of mt-price-field by @tristantisch in https://github.com/shopware/shopware/pull/15261
- fix: digital products are not downloadable on storefront by @vienthuong in https://github.com/shopware/shopware/pull/15563
- fix: align flow names with event names by @larskemper in https://github.com/shopware/shopware/pull/15611
- fix(snippet): Be consistent with shop data translation by @marcelbrode in https://github.com/shopware/shopware/pull/15613
- feat: async email address validation by @DennisGarding in https://github.com/shopware/shopware/pull/15102
- feat: add zugferd cancellation invoice by @larskemper in https://github.com/shopware/shopware/pull/15421
- fix(admin): preserve consent event order in amplitude by @bubleg in https://github.com/shopware/shopware/pull/15587
- fix(admin): prevent consent modal overlap with shop id change modal by @bubleg in https://github.com/shopware/shopware/pull/15567
- fix(admin): use natural sorting in product list for correct ordering by @sydinh in https://github.com/shopware/shopware/pull/15495
- fix: replace wrong feature flag change by @Phil23 in https://github.com/shopware/shopware/pull/15621
- feat: add zugferd embedded cancellation invoice by @larskemper in https://github.com/shopware/shopware/pull/15492
- feat: add loading indicator to cms form submit buttons by @larskemper in https://github.com/shopware/shopware/pull/15612
- fix(static-analyze): improve cache handling in phpstan-bootstrap.php by @BrocksiNet in https://github.com/shopware/shopware/pull/15625
- revert: fix: order address validation by @En0Ma1259 in https://github.com/shopware/shopware/pull/15642
- feat: add zugferd & embedded credit note by @larskemper in https://github.com/shopware/shopware/pull/15568
- fix(admin): use shield icon for privacy settings menu item by @bubleg in https://github.com/shopware/shopware/pull/15610
- fix: Making SQL query lighter, just check if the table is accessible in TestBootstrapper by @matheusgontijo in https://github.com/shopware/shopware/pull/15230
- fix: Display correct rate limit message by @DennisGarding in https://github.com/shopware/shopware/pull/15662
- feat: filter product list by configurable product types by @sydinh in https://github.com/shopware/shopware/pull/15648
- feat(consent): Refactor consent events in Administration by @SebastianFranze in https://github.com/shopware/shopware/pull/15595
- fix: Can't unlink inherited custom fields in bulk edit by @nguyenquocdaile in https://github.com/shopware/shopware/pull/15656
- fix(admin): send logout analytics beacon as json and dedupe flush flow by @bubleg in https://github.com/shopware/shopware/pull/15660
- fix(admin): add explicit consent actions for single-option usage data modal by @bubleg in https://github.com/shopware/shopware/pull/15666
- fix: cart not recalculated without ESI on sub requests by @keulinho in https://github.com/shopware/shopware/pull/15460
- fix: ProductPriceCalculator calculate doesnt work with partial entity by @vienthuong in https://github.com/shopware/shopware/pull/15185
- fix: revert breaking changes by @larskemper in https://github.com/shopware/shopware/pull/15679
- fix: load cms page association data with category has no cms page by @rittou in https://github.com/shopware/shopware/pull/15215
- feat: app url validation infra by @AydinHassan in https://github.com/shopware/shopware/pull/15593
- fix: Correct description of the
customer.hashfield by @aragon999 in https://github.com/shopware/shopware/pull/15683 - fix: bulk edit handle any document type by @jozsefdamokos in https://github.com/shopware/shopware/pull/15658
- fix(phpstan): Iterable type errors in
Shopware\Core\Contentby @aragon999 in https://github.com/shopware/shopware/pull/15664 - feat: add customer number and customerid to customer login logs by @Berkantdoku in https://github.com/shopware/shopware/pull/15654
- feat: implemented oauth token revocation (compliant to OIDC 3.1.2.1 & RFC-7009) by @Nickolaus in https://github.com/shopware/shopware/pull/15569
- feat(product-analytics): Identify users by @SebastianFranze in https://github.com/shopware/shopware/pull/15677
- feat: Add danger rule so the baseline for routes without Schema doesn't get bigger by @mitelg in https://github.com/shopware/shopware/pull/15697
- feat: improve readability of rate limiter key by @matheusgontijo in https://github.com/shopware/shopware/pull/15668
- fix: Dynamic Product Group preview not showing correct results when Advanced Search is enabled by @tamvt in https://github.com/shopware/shopware/pull/15691
- fix: NPM audit issues by @Phil23 in https://github.com/shopware/shopware/pull/15704
- fix: load default sql number range increment storage with redis by @lacknere in https://github.com/shopware/shopware/pull/15426
- fix: remove unknown tags field by @bojanrajh in https://github.com/shopware/shopware/pull/15600
- fix: load missing product media with product detail store api by @rittou in https://github.com/shopware/shopware/pull/15310
- fix: switch inheritance in product listing variants modal on price column by @nguyenquocdaile in https://github.com/shopware/shopware/pull/15646
- fix: bulk edit product auto calculated price by @nguyenquocdaile in https://github.com/shopware/shopware/pull/15674
- fix: dal reverse association error by @vienthuong in https://github.com/shopware/shopware/pull/15716
- fix: time zone shift in date range rule by @DennisGarding in https://github.com/shopware/shopware/pull/15703
- fix: Wrong usage of
JSON_THROW_ON_ERRORflag onjson_decodeby @Claude in https://github.com/shopware/shopware/pull/15725 - fix(product-analytics): Send delete user requests via gateway client by @SebastianFranze in https://github.com/shopware/shopware/pull/15698
- feat: allow system config overrides in staging mode by @shyim in https://github.com/shopware/shopware/pull/15723
- feat: add isEmpty method to Collection by @mvanhorn in https://github.com/shopware/shopware/pull/15724
- fix: sales channel name translations in mail templates by @DennisGarding in https://github.com/shopware/shopware/pull/15676
- fix: change wrong tax snippet in storefront order history by @Berkantdoku in https://github.com/shopware/shopware/pull/15689
- fix: sales channel context language by @En0Ma1259 in https://github.com/shopware/shopware/pull/15733
- feat: added search ranking attribute by @teunkoster in https://github.com/shopware/shopware/pull/14483
- feat: Allow overriding entity default fields by @jasperP98 in https://github.com/shopware/shopware/pull/14326
- fix: number ranges starting from zero by @keulinho in https://github.com/shopware/shopware/pull/15711
- feat: Storefront Components by @Phil23 in https://github.com/shopware/shopware/pull/15651
- fix: remove obsolete warning log from send mail action by @larskemper in https://github.com/shopware/shopware/pull/15708
- fix: adds CMS data mapping source for media custom fields #14648 by @zFl4wless in https://github.com/shopware/shopware/pull/15597
- fix: avoid infinite retries on rufus 401 SSO error by @davidtraum in https://github.com/shopware/shopware/pull/15653
- fix: typo in usage data settings snippet by @Jofu-swag in https://github.com/shopware/shopware/pull/15765
- fix: migrate deprecated rule and product stream conditions by @vienthuong in https://github.com/shopware/shopware/pull/15678
- fix: wasted empty space in documents by @larskemper in https://github.com/shopware/shopware/pull/15712
- fix: prevent SSO state invalidation caused by race condition during logout redirect by @Nickolaus in https://github.com/shopware/shopware/pull/15696
- fix: Import map for index components by @Phil23 in https://github.com/shopware/shopware/pull/15768
- fix: add min value constraints to product price quantity fields by @lacknere in https://github.com/shopware/shopware/pull/15771
- feat: Refactor empty usage in ES and Storefront bundle to prepare its… by @mitelg in https://github.com/shopware/shopware/pull/15778
- fix: test mail double mail attachment by @larskemper in https://github.com/shopware/shopware/pull/15731
- feat: Improve copying of admin assets by @mitelg in https://github.com/shopware/shopware/pull/15756
- fix: Fix issue that incorrect navigation to product detail when variant names are similar by @tamvt in https://github.com/shopware/shopware/pull/15452
- fix: Add specific ACL checks for routes that render twig templates by @keulinho in https://github.com/shopware/shopware/pull/15764
- feat: Shim for OptionsAPI overrides on Components written with CompositionAPI by @jleifeld in https://github.com/shopware/shopware/pull/15034
- fix: filter unrelated YAML defaults in SystemConfigService::getDomain() by @vanWittlaer in https://github.com/shopware/shopware/pull/15323
- fix: List price ratio rule by @DennisGarding in https://github.com/shopware/shopware/pull/15760
- fix: and search on multiple terms should be a must query by @vienthuong in https://github.com/shopware/shopware/pull/15599
- fix: admin es index throws even without errors by @keulinho in https://github.com/shopware/shopware/pull/15802
- fix: Add prefix to e-mail validation path by @davidtraum in https://github.com/shopware/shopware/pull/15806
- fix: load the env var for admin path redirect by @zukucker in https://github.com/shopware/shopware/pull/14619
- feat: add bulk deletion of documents in admin by @ennasus4sun in https://github.com/shopware/shopware/pull/15672
- fix(promotion): fix cart merge with product set promotions by @Aliaaaam in https://github.com/shopware/shopware/pull/15777
- fix: disable runtime errors overlay in webpack dev server by @shyim in https://github.com/shopware/shopware/pull/15742
- fix: less distract devs on storefront watcher by @shyim in https://github.com/shopware/shopware/pull/15782
- fix: prevent duplicate import export mappings by @larskemper in https://github.com/shopware/shopware/pull/15739
- feat: Add password, list and email field types to attribute entity by @OliverSkroblin in https://github.com/shopware/shopware/pull/15337
- fix: upgrade axios dependency to version 1.15 (backport: 6.7.9.x) by @shopware-octo-sts-app-2[bot] in https://github.com/shopware/shopware/pull/16127
New Contributors
- @DerKaito made their first contribution in https://github.com/shopware/shopware/pull/15208
- @s-hamann made their first contribution in https://github.com/shopware/shopware/pull/15449
- @tristantisch made their first contribution in https://github.com/shopware/shopware/pull/15261
- @matheusgontijo made their first contribution in https://github.com/shopware/shopware/pull/15230
- @Nickolaus made their first contribution in https://github.com/shopware/shopware/pull/15569
- @Claude made their first contribution in https://github.com/shopware/shopware/pull/15725
- @zukucker made their first contribution in https://github.com/shopware/shopware/pull/14619
Full Changelog: https://github.com/shopware/shopware/compare/v6.7.8.2...v6.7.9.0
Get in touch
Discuss about decisions, bugs you might stumble upon, etc in our community discord. See you there ;)
Minor fixes and improvements.
Full changelog
System requirements
- tested on PHP
8.2,8.4and8.5 - tested on
MySQL 8andMariaDB 11
Critical Fixes
Webhook for order state change
Fixed an undefined array key warning within the webhook handling, which could lead to a server error, if strict error displaying is set up.
Digital product legacy states repair after update
We fixed a bug in the indexer for the product.states field, which lead to issues where rules (and flows depending on those rules) with the line item with product state condition did not work as expected. This especially affected the flows to deliver digital download products after purchase.
This release repairs digital products with missing legacy states via a one-time UpdatePostFinishEvent subscriber.
The repair runs automatically once per installation and is marked as completed in app_config.
What's Changed
- fix: disable anonymous tracking (backport: 6.7.8.x) by @shyim in https://github.com/shopware/shopware/pull/15527
- fix: Missing undefined array key checks in HookableBusinessEvent (backport: 6.7.8.x) by @mitelg in https://github.com/shopware/shopware/pull/15518
- feat: add webhook failure strategy (backport: 6.7.8.x) by @AydinHassan in https://github.com/shopware/shopware/pull/15546
- fix: price inheritance is not applied correctly for product variants (backport: 6.7.8.x) by @nguyenytran in https://github.com/shopware/shopware/pull/15548
- fix: digital products are not downloadable on storefront (backport: 6.7.8.x) by @vienthuong in https://github.com/shopware/shopware/pull/15614
Full Changelog: https://github.com/shopware/shopware/compare/v6.7.8.1...v6.7.8.2
Get in touch
Discuss about decisions, bugs you might stumble upon, etc in our community discord. See you there ;)
- Double signature verification in app-reregistration (GHSA-c4p7-rwrg-pf6p)
- Account enumeration via Store API (GHSA-gqc5-xv7m-gcjq)
- deepLinkCode filter type validation (GHSA-7vvp-j573-5584)
Full changelog
- Double signature verification in app-reregistration (GHSA-c4p7-rwrg-pf6p)
- Account enumeration via Store API (GHSA-gqc5-xv7m-gcjq)
- deepLinkCode filter type validation (GHSA-7vvp-j573-5584)
Full changelog
System requirements
- tested on PHP
8.2,8.4and8.5 - tested on
MySQL 8andMariaDB 11
Critical Fixes
Double signature verification in app-reregistration flow
Introduces a secure, asynchronous app secret rotation feature to the app system, including both API and CLI interfaces.
Added a new API endpoint and command for rotating app secrets, implemented the underlying rotation logic, and adjusted the app registration process to support secret updates and dual signature confirmation.
This increases security by enforcing a two-step verification process during app re-registration, ensuring that only authorized parties can update app secrets.
LoginRoute and AccountService don't throw CustomerNotFoundException
The LoginRoute and AccountService have been updated to no longer throw a CustomerNotFoundException when a login attempt is made with an email address that does not exist in the system.
Instead, they will now throw a generic BadCredentialsException without revealing whether the email address is registered or not.
This change enhances security by preventing potential attackers from enumerating valid email addresses through error messages.
Improve OrderRoute deepLinkCode filter type validation
Improve the logic in \Shopware\Core\Checkout\Order\SalesChannel\OrderRoute::load to ensure the deepLinkCode filter is an instance of \Shopware\Core\Framework\DataAbstractionLayer\Search\Filter\EqualsFilter.
What's Changed
- GHSA-c4p7-rwrg-pf6p - Double signature verification in app-reregistration flow
- GHSA-gqc5-xv7m-gcjq - Limit account enumeration via Store API
- GHSA-7vvp-j573-5584 - Proper check for the deepLinkCode filter type
Full Changelog: https://github.com/shopware/shopware/compare/v6.7.8.0...v6.7.8.1
Get in touch
Discuss about decisions, bugs you might stumble upon, etc in our community discord. See you there ;)
- DomPDF dependency major version update
Full changelog
See the UPGRADE.md for all important technical changes.
- #13348 - Online cancelation request (Elektronische Widerrufsfunktion)
- #15308 - fix: allow searching while suggest is still loading
- #14854 - e-invoice xml file is not sent as an email attachment
- #15307 - ES working wrong with NotEquals filter in nested fields
- #14838 - Administration: Button label says “Create and download PDF” but downloads ZUGFeRD XML (filename null.xml)
- #15258 - feat: Add event for the config info API route (backport: 6.6.x)
- #12229 - Shop version 6.7.2.0 + Commercial version 7.1.2 = 500 error
- #14904 - Regression: database:refresh-migration Command no longer works
- #15206 - fix: Reading associations via the parent, if the parent has multiple associations of the same type and to the same entity (backport: 6.6.x)
- #14555 - "Promotion -> All -> Are None of" fails to match
- #13812 - Variant preselection in category product listing doesn’t work in Shopware 6.7.x
- #14922 - Major update of DomPDF dependency
- #14613 - fix: Profiler: use $title as key in start() so it will correctly be unset in stop() (backport: 6.6.x)
- #14951 - fix: add branch alias for main (backport: 6.6.x)
- #14647 - Cart line item is missing regulation price
- #14017 - Accessibility Inputs do not have autocomplete attribute
- #14024 - Accessibility: User account contains some level A issues
- #3478 - App flow actions custom headers in async mode 6.6.x backport #14678
- Increment-based message queue statistics deprecated
- Product custom fields indexing with Elasticsearch
- Database table helper class
- Primary key validation in dal:validate command
Full changelog
System requirements
- tested on PHP
8.2,8.4and8.5 - tested on
MySQL 8andMariaDB 11
Features
New internal comment for state machine state history entries
A new internal comment field was added to the state change modal which can be used to add additional information about a state change.
The internal comment is only visible in the administration and not shown to customers.
It can be found in the state machine state history modal (state change modal) on the detail page of an order.
API
Core
Indexing the product's custom fields
Custom fields used in product sorting and product streams, as well as those belonging to apps, are now included when indexing products with Elasticsearch.
Deprecation of increment-based message queue statistics
The increment-based message queue statistics system is deprecated and will be removed in v6.8.0.0.
What's changing:
- The Administration notification center will no longer show indexing progress notifications (e.g., "X products will be indexed")
- API endpoint
GET /api/_info/queue.jsonis deprecated - useGET /api/_info/message-stats.jsoninstead
Deprecated configuration options:
shopware.admin_worker.enable_queue_stats_workershopware.increment.message_queue
Deprecated code:
IncrementGatewayRegistry::MESSAGE_QUEUE_POOLconstant- Increment-based handling in
MessageQueueStatsSubscriber::onMessageHandled()
Why?
The increment-based statistics were often inaccurate due to hardcoded multipliers and missing decrements in edge cases. The replacement functionality was introduced in https://github.com/shopware/shopware/pull/8698
Immediate disable:
To disable the deprecated functionality before v6.8.0.0:
shopware:
admin_worker:
enable_queue_stats_worker: false
Internal product streams
A new boolean field internal has been added to product streams with a default value of false.
This allows you to mark product streams as internal for system or plugin use, preventing them from appearing in merchant-facing selection lists throughout the Administration (e.g., in categories, cross-selling, CMS elements, or sales channels).
Use this feature when you need to create product streams programmatically that should not be modified or selected by shop administrators.
Database table helper class
A new helper class \Shopware\Core\Framework\Util\Database\TableHelper was introduced,
which could be used to check the table for existence, columns, indexes, and foreign keys.
Deprecation of helper methods in \Shopware\Core\Framework\DataAbstractionLayer\Dbal\EntityDefinitionQueryHelper
As consequence of the introduction of the new table helper class following methods are deprecated and will be removed with the next major version:
- \Shopware\Core\Framework\DataAbstractionLayer\Dbal\EntityDefinitionQueryHelper::columnExists
- \Shopware\Core\Framework\DataAbstractionLayer\Dbal\EntityDefinitionQueryHelper::columnIsNullable
- \Shopware\Core\Framework\DataAbstractionLayer\Dbal\EntityDefinitionQueryHelper::tableExists
Migration generator improvements
The migration generator previously used a fixed format: fk.<table-name>.<column> for foreign key names.
Doctrine does not support this format and creates broken migrations; therefore, we changed to the format fk__<table-name>__<column> for foreign key names.
Also, the generator now sets CASCADE DELETE on foreign keys for the translation table references.
CategoryIndexer selective indexing optimization
The CategoryIndexer now skips tree/child-count updaters when parentId hasn't changed, and breadcrumb updater when name hasn't changed. All updaters still run for INSERT and DELETE operations.
Updated doctrine/dbal dependency
The doctrine/dbal dependency was updated to the new 4.4 minor version.
They introduced many deprecations, especially in the SchemaManager tool, which also might affect you.
Read more about it in their upgrade guide.
Primary key validation in dal:validate command
The dal:validate command now includes validation to detect mismatches between database PRIMARY KEY constraints and entity definition PrimaryKey flags.
This validation prevents silent failures where queries return correct total counts but empty data arrays due to entity hydration failures caused by inconsistent primary key definitions.
When a mismatch is detected, the command provides a clear error message indicating which fields differ between the database schema and the entity definition.
Deprecation of default value for serializer in #[Serialized] field attribute
When you use #[Serialized] field in your attribute entity you should always pass the serializer explicitly, as the default serializer does not work as expected.
Additionally, the SerializerField will become internal in the next major release, as that field should be only used for attribute entities, but never directly in classic EntityDefinitions.
Administration
Product detail variants: configSettingGroups as computed and deprecations
In sw-product-detail-variants, the following changes were made:
configSettingGroups(now computed): Previously adata()property set byloadConfigSettingGroups(). It is now a computed property derived fromproductEntity.configuratorSettingsandgroups.loadConfigSettingGroups()(deprecated): Marked as@deprecated tag:v6.8.0. It will be removed in 6.8.0 without replacement.
Deprecation of items prop in sw-entity-listing component
The items prop in the sw-entity-listing component has been deprecated and will be removed in v6.8.0.
Please use the dataSource prop instead to align with the parent sw-data-grid component.
Before (deprecated):
<sw-entity-listing
:items="entityList"
:repository="entityRepository"
:columns="columns"
/>
After (recommended):
<sw-entity-listing
:data-source="entityList"
:repository="entityRepository"
:columns="columns"
/>
The component will continue to work with the items prop for backward compatibility, but you will see a deprecation warning in the browser console.
Notification translations now update when language changes
Notifications now store translation keys directly in their title and message fields instead of translating them immediately.
The template checks if the text is a translation key and translates it reactively, allowing notifications to update automatically when the user changes the interface language.
Help text support for color picker custom fields
The color picker type for custom fields now supports adding a help text. When creating or editing a custom field of type "Colorpicker" in Settings > Content > Custom fields, you can now specify a help text that will be displayed to users in the Administration.
sw-select-base clearable button default behavior changed
The showClearableButton prop in sw-select-base now defaults based on the required attribute:
- When
requiredisfalseor not set: clearable button is shown by default - When
requiredistrue: clearable button is hidden by default
Previously, the clearable button was always hidden by default (showClearableButton: false).
Migration: If you relied on the previous behavior where the clearable button was hidden by default, explicitly set :show-clearable-button="false" on your select components.
Storefront
Selling and packaging information in the product detail page
- Display the selling and packaging information with the product that has advanced pricing.
- Deprecated block
buy_widget_price_unitand it childrens inResources/views/storefront/component/buy-widget/buy-widget-price.html.twig, will be moved intoResources/views/storefront/component/buy-widget/buy-widget.html.twig.
Default theme breakpoints now available in theme config
The default layout breakpoints in the Storefront were hard-coded before and couldn't easily be overriden. Now you will find new theme config fields in the default config, which serve as the default values. The fields are hidden in the visual configuration, so they serve as a feature for theme developers for now. You can override the following config fields in your custom theme.json file to change the default breakpoints. The fields are mapped to the existing hard-coded configuration. The configuration is only passed in Twig and JS currently and there is no direct usage in SCSS, as they represent the Bootstrap default breakpoints. If you want to make a full override, you can simply configure the Bootstrap breakpoints in your custom SCSS and use the theme config values for that.
sw-breakpoint-xssw-breakpoint-smsw-breakpoint-mdsw-breakpoint-lgsw-breakpoint-xlsw-breakpoint-xxl
Make static alerts announced in the screenreader
Static alert boxes that are rendered in the DOM on page load were previously not read out by screenreaders.
The role="alert" did not have an effect. Only role="alerts" added to the DOM by JavaScript were read out.
To solve the screenreader issue with static alerts, we introduced a new parameter announceOnLoad.
When announceOnLoad is set to true, the alert box content will be announced in the screenreader right after the page is loaded.
The alert box will apply an additional JavaScript plugin that attempts to trigger the screenreader.
This is done by changing the DOM within the aria-live region after a short delay, which tells the screenreader to read it.
{% sw_include '@Storefront/storefront/utilities/alert.html.twig' with {
type: "primary",
content: "An important message on initial page load",
announceOnLoad: true
ariaLive: 'assertive' {# Define the priority of the alert #}
} %}
App System
Fixed custom headers for app flow action webhooks in async mode
Custom headers defined in app flow action configurations are now correctly sent when webhooks are processed asynchronously via message queue (when admin_worker is disabled). Previously, these headers were only sent when admin_worker was enabled (synchronous processing).
Hosting & Configuration
Deprecated HTTP cache reverse proxy configuration
The following HTTP cache reverse proxy configuration options have been doing nothing since 6.7.0.0 and are therefore now deprecated. They will be removed in version 6.8.0.0:
shopware.http_cache.reverse_proxy.use_varnish_xkeyshopware.http_cache.reverse_proxy.ban_methodshopware.http_cache.reverse_proxy.ban_headersshopware.http_cache.reverse_proxy.purge_allshopware.http_cache.reverse_proxy.purge_all.ban_methodshopware.http_cache.reverse_proxy.purge_all.ban_headersshopware.http_cache.reverse_proxy.purge_all.urls
If you are currently using any of these options, you can safely remove them from your configuration.
Configurable Elasticsearch shard and replica counts
The number_of_shards and number_of_replicas settings for Elasticsearch indices are now configurable via environment variables instead of being hardcoded.
For the Storefront/Store API Elasticsearch:
SHOPWARE_ES_NUMBER_OF_SHARDS(default: empty, meaning Elasticsearch default)SHOPWARE_ES_NUMBER_OF_REPLICAS(default: empty, meaning Elasticsearch default)
For the Admin Elasticsearch:
SHOPWARE_ADMIN_ES_NUMBER_OF_SHARDS(default:3, will also be empty with next major)SHOPWARE_ADMIN_ES_NUMBER_OF_REPLICAS(default:3, will also be empty with next major)
Critical Fixes
Session deadlock fix for file-based sessions
A new configuration option shopware.cache.disable_stampede_protection has been added to prevent deadlocks when using file-based sessions with Symfony's cache stampede protection.
Problem: A deadlock (ABBA pattern) can occur when:
- Process 1: Acquires Session File Lock → Needs Cache → Tries to acquire Cache Lock
- Process 2: Acquires Cache Lock (stampede protection) → Needs Session → Tries to acquire Session File Lock
Solution: Set shopware.cache.disable_stampede_protection: true in your configuration to disable file-based cache locking when file-based sessions are in use.
shopware:
cache:
disable_stampede_protection: true
Note: This is an opt-in fix for environments where Redis is not available. Using Redis for both sessions and cache is the recommended solution. Disabling stampede protection may increase database load under high concurrency when cache entries expire.
What's Changed
- fix: sw-grid spacer by @larskemper in https://github.com/shopware/shopware/pull/14408
- fix: Required fields can not be saved with empty value by @rittou in https://github.com/shopware/shopware/pull/14479
- fix: migration generator to use unique fk names by @shyim in https://github.com/shopware/shopware/pull/14406
- refactor: login meteor tokens & add proper sso button by @larskemper in https://github.com/shopware/shopware/pull/14363
- fix: display selling and packaging information in pdp with product has advanced pricing by @rittou in https://github.com/shopware/shopware/pull/14524
- fix: Release date input is vertically misaligned on Admin product detail page by @nguyenquocdaile in https://github.com/shopware/shopware/pull/14528
- fix: Google reCAPTCHA input visibility and error handling by @mdanilowicz in https://github.com/shopware/shopware/pull/14548
- fix: Partial entity loading with nested association by @mitelg in https://github.com/shopware/shopware/pull/14536
- fix: DateRangeRule empty timezone by @aragon999 in https://github.com/shopware/shopware/pull/14492
- fix: allow empty field for product measurement by @nguyenquocdaile in https://github.com/shopware/shopware/pull/14547
- fix: update router link for user edit context menu item in user listing component by @jleifeld in https://github.com/shopware/shopware/pull/14559
- fix: Image zoom modal touch gestures by @Phil23 in https://github.com/shopware/shopware/pull/14550
- fix: random deadlocks when file session handler is used by @h1k3r in https://github.com/shopware/shopware/pull/14474
- fix: error during offline theme compilation by @h1k3r in https://github.com/shopware/shopware/pull/14543
- fix: optimize default product seo category selection by @lacknere in https://github.com/shopware/shopware/pull/14461
- fix: Subtotal element styling by @rittou in https://github.com/shopware/shopware/pull/14572
- fix: tax rate is inconsistent with variant products by @rittou in https://github.com/shopware/shopware/pull/14596
- fix: flaky BasicConsentBannerAcceptAllCookies.spec.ts in SaaS by @yusufttur in https://github.com/shopware/shopware/pull/14603
- fix: Profiler: use $title as key in start() so it will correctly be unset in stop() by @daniel-memo-ict in https://github.com/shopware/shopware/pull/14019
- fix: skip VariantProductListingPriceVisibility.spec.ts in SaaS by @yusufttur in https://github.com/shopware/shopware/pull/14609
- feat: general consent system by @AydinHassan in https://github.com/shopware/shopware/pull/14031
- fix(storefront-js): JS errors in CmsGdprVideoElement by @tobiasberge in https://github.com/shopware/shopware/pull/14549
- refactor: change unit price and total price from int to double by @FlorianKe in https://github.com/shopware/shopware/pull/14192
- feat: Introduce database table helper by @mitelg in https://github.com/shopware/shopware/pull/14277
- fix: fallback on invalid locale in twig number format filters by @keulinho in https://github.com/shopware/shopware/pull/14637
- refactor: migrate from sw-modal to mt-modal in sw-media-modal-v2 by @gweiermann in https://github.com/shopware/shopware/pull/14556
- refactor!: set default behavior of showClearableButton to true by @gweiermann in https://github.com/shopware/shopware/pull/14591
- fix: add help text to custom field color picker configuration by @gweiermann in https://github.com/shopware/shopware/pull/14584
- fix: added a new block outside if by @En0Ma1259 in https://github.com/shopware/shopware/pull/14504
- feat: Add internal column for product stream table by @phuoccx in https://github.com/shopware/shopware/pull/14458
- fix: reset document selection state between bulk edits by @vintagesucks in https://github.com/shopware/shopware/pull/14618
- refactor: notification center by @larskemper in https://github.com/shopware/shopware/pull/14597
- fix: newsletter settings by @larskemper in https://github.com/shopware/shopware/pull/14418
- feat: update notification handling to support translation keys by @jleifeld in https://github.com/shopware/shopware/pull/14590
- fix: app flow actions custom headers are not sent by @h1k3r in https://github.com/shopware/shopware/pull/14617
- fix: entitylisting component mismatch with parent data grid component by @jleifeld in https://github.com/shopware/shopware/pull/14601
- fix: Product Stream should have default value for internal field by @silverDuy in https://github.com/shopware/shopware/pull/14662
- fix: register all twig extensions in DI container by @keulinho in https://github.com/shopware/shopware/pull/14546
- fix: disable meteor fields is now working in system config by @jleifeld in https://github.com/shopware/shopware/pull/14639
- fix: build price definition by @rittou in https://github.com/shopware/shopware/pull/14652
- fix: elasticsearch requirement in core bundle by @shyim in https://github.com/shopware/shopware/pull/14696
- fix: add missing product heading cms element snippets by @lacknere in https://github.com/shopware/shopware/pull/14714
- fix:
getAddressinAddressDetailPageLoaderby @gecolay in https://github.com/shopware/shopware/pull/14718 - fix: respect invoice selection in credit notes by @vintagesucks in https://github.com/shopware/shopware/pull/14668
- fix: exception typo by @En0Ma1259 in https://github.com/shopware/shopware/pull/14743
- fix: order edit loading by @keulinho in https://github.com/shopware/shopware/pull/14745
- fix: Add default language to ui by @alexdumea in https://github.com/shopware/shopware/pull/14429
- fix: Sales channel bound customer logout issue by @Phil23 in https://github.com/shopware/shopware/pull/14574
- fix: JS plugin initialization in async content by @Phil23 in https://github.com/shopware/shopware/pull/14557
- feat: Update doctrine/dbal and fix deprecations by @mitelg in https://github.com/shopware/shopware/pull/13911
- fix: conditionally hide product selection cms inherit wrapper as a whole in buy box cms element by @lacknere in https://github.com/shopware/shopware/pull/14734
- feat(cms-video): Add CMS video block and element by @marcelbrode in https://github.com/shopware/shopware/pull/14239
- fix(snippet-sets): Toggle inlineEdit after snippet set creation by @marcelbrode in https://github.com/shopware/shopware/pull/14773
- feat(consent): Add ACL check to consents by @SebastianFranze in https://github.com/shopware/shopware/pull/14761
- feat(consent): Remove all consents during staging setup by @SebastianFranze in https://github.com/shopware/shopware/pull/14751
- feat(product-analytics): Load consents in Admin by @SebastianFranze in https://github.com/shopware/shopware/pull/14010
- fix: handle uncaught errors during customer deletion by @Aliaaaam in https://github.com/shopware/shopware/pull/14760
- feat: introduce dependabot for ATS by @frobel in https://github.com/shopware/shopware/pull/14460
- feat: provide field description in entity schema by @larskemper in https://github.com/shopware/shopware/pull/14748
- fix(storefront): resolve base url without index.php script name by @SpiGAndromeda in https://github.com/shopware/shopware/pull/14769
- fix: remove deprecated assert active option by @frobel in https://github.com/shopware/shopware/pull/14799
- fix: Upgrade dompdf to 3.1.4 to fix PHP 8.5 issues by @gecolay in https://github.com/shopware/shopware/pull/14766
- fix: improve pagination and filter behavior by @davidtraum in https://github.com/shopware/shopware/pull/14588
- feat: add disposal of quickview in sw-model-viewer by @feliopterix in https://github.com/shopware/shopware/pull/14810
- feat: auto merge downstream PRs by @keulinho in https://github.com/shopware/shopware/pull/14650
- fix: Change allowed_types default value to match config file by @JoshuaBehrens in https://github.com/shopware/shopware/pull/14762
- fix(customer): prevent failure when customer language is missing from sales channel by @Aliaaaam in https://github.com/shopware/shopware/pull/14772
- fix(a11y): alerts on initial page load not read by screenreader by @tobiasberge in https://github.com/shopware/shopware/pull/14575
- fix: shop logo size when using smaller viewports in checkout by @pt1602 in https://github.com/shopware/shopware/pull/14448
- feat: Add FileLoader methods to load media files from MediaEntity by @alexdumea in https://github.com/shopware/shopware/pull/14480
- fix: translate notification titles by @vintagesucks in https://github.com/shopware/shopware/pull/14808
- refactor: replace schema introspection patterns with tablehelper methods by @SpiGAndromeda in https://github.com/shopware/shopware/pull/14642
- fix: changing variant in buybox on shopping experience by @pt1602 in https://github.com/shopware/shopware/pull/14165
- fix: navigation-flyout-col to use 3 or 4 column depending on media by @BrocksiNet in https://github.com/shopware/shopware/pull/14510
- feat: Add prompt=login to SSO redirect by @mitelg in https://github.com/shopware/shopware/pull/14783
- fix: product-slider cms element navigationArrows config by @lacknere in https://github.com/shopware/shopware/pull/14688
- fix: Google reCAPTCHA base plugin initialization and form validation feedback with multiple forms by @lacknere in https://github.com/shopware/shopware/pull/14573
- fix(notifications): Re-implement rendering of titles by @marcelbrode in https://github.com/shopware/shopware/pull/14843
- feat: Make default breakpoints available in theme config by @Phil23 in https://github.com/shopware/shopware/pull/14612
- feat: add more precise test for model viewer condition. by @feliopterix in https://github.com/shopware/shopware/pull/14847
- fix: Prevent admin search bar render issue with missing order customer by @gecolay in https://github.com/shopware/shopware/pull/14776
- feat: add 3D viewer background color support through css. by @feliopterix in https://github.com/shopware/shopware/pull/14875
- feat: Refactor empty usage in checkout area to prepare its prohibition by @mitelg in https://github.com/shopware/shopware/pull/14812
- fix: missing exclude regulation price extension when encoding calculated price by @rittou in https://github.com/shopware/shopware/pull/14874
- fix(theme-manager): Ensure general tab to be first in order by @marcelbrode in https://github.com/shopware/shopware/pull/14885
- feat: db instant column, phpstan check by @BrocksiNet in https://github.com/shopware/shopware/pull/14545
- fix(customer): validate language assignment before creation by @Aliaaaam in https://github.com/shopware/shopware/pull/14836
- fix: deleting properties not possible by @nguyenquocdaile in https://github.com/shopware/shopware/pull/14720
- feat: Refactor empty usage in tests to prepare its prohibition by @mitelg in https://github.com/shopware/shopware/pull/14906
- perf: Memoize twig env for script rules by @keulinho in https://github.com/shopware/shopware/pull/14867
- fix(breadcrumb): handle null category in buy-widget-form by @BrocksiNet in https://github.com/shopware/shopware/pull/14884
- feat: add env vars for opensearch replica shards by @shyim in https://github.com/shopware/shopware/pull/14887
- feat: Update rector and add rules for refactoring empty by @mitelg in https://github.com/shopware/shopware/pull/14905
- fix: generate variants with empty restrictions by @rittou in https://github.com/shopware/shopware/pull/14660
- fix: correct manufacturer link condition check by @nguyenquocdaile in https://github.com/shopware/shopware/pull/14866
- fix: integrate sw-upload-listener component for media uploads by @BrocksiNet in https://github.com/shopware/shopware/pull/14883
- feat: Add primary key validation to dal:validate command by @BrocksiNet in https://github.com/shopware/shopware/pull/13483
- fix: prevent float steps for integer custom fields by @davidtraum in https://github.com/shopware/shopware/pull/14846
- fix: only upload playwright html reports if exists by @mkraeml in https://github.com/shopware/shopware/pull/14877
- fix: system config card field block by @FlorianKe in https://github.com/shopware/shopware/pull/14687
- fix: account register accessibility errors (a11y) by @FlorianKe in https://github.com/shopware/shopware/pull/14207
- refactor: fix a11y errors by @FlorianKe in https://github.com/shopware/shopware/pull/14531
- fix(media-modal): Fix auto-close of media modal on any click by @marcelbrode in https://github.com/shopware/shopware/pull/14896
- fix: correct order date filter by @Aliaaaam in https://github.com/shopware/shopware/pull/14935
- feat: Remove caching of SchemaManager in TableHelper by @mitelg in https://github.com/shopware/shopware/pull/14924
- fix: load all existing property group in product variants by @rittou in https://github.com/shopware/shopware/pull/14826
- feat: Refactor empty usage in administration to prepare its prohibition by @mitelg in https://github.com/shopware/shopware/pull/14908
- fix: add branch alias for main by @shyim in https://github.com/shopware/shopware/pull/14820
- fix: rollback plugin installation on failure by @umutdogan4291 in https://github.com/shopware/shopware/pull/14558
- feat: add no unserialize usage rule by @larskemper in https://github.com/shopware/shopware/pull/14936
- fix: skip VAT ID validation for non-EU company shipping countries by @Aliaaaam in https://github.com/shopware/shopware/pull/14907
- feat: app app url as referer to service list request by @AydinHassan in https://github.com/shopware/shopware/pull/14934
- fix: clear cache after creating categories by @keulinho in https://github.com/shopware/shopware/pull/14942
- fix: allow disabling autocomplete in single select components by @shyim in https://github.com/shopware/shopware/pull/14827
- fix: import export profile mapping disabled position buttons by @lacknere in https://github.com/shopware/shopware/pull/14859
- fix(cms-sliders): Adjust image slider/galery styling by @marcelbrode in https://github.com/shopware/shopware/pull/14913
- feat: Refactor empty usage in storefront to prepare its prohibition by @mitelg in https://github.com/shopware/shopware/pull/14909
- fix: Consider SSO correctly while opening the admin user details by @mitelg in https://github.com/shopware/shopware/pull/14939
- feat(translations): Added missing languages to download command by @marcelbrode in https://github.com/shopware/shopware/pull/14931
- fix: use cookie path in storefront sessions by @umutdogan4291 in https://github.com/shopware/shopware/pull/14599
- fix: Fixed media upload in image gallery by @MartinKrzykawski in https://github.com/shopware/shopware/pull/14943
- feat: Refactor empty usage in content area to prepare its prohibition by @mitelg in https://github.com/shopware/shopware/pull/14815
- fix: deprecate noop options in HTTP cache by @shyim in https://github.com/shopware/shopware/pull/14526
- feat: add Shopware account login/logout events and small refactor by @AydinHassan in https://github.com/shopware/shopware/pull/14959
- fix: correct promotion rule evaluation by @Aliaaaam in https://github.com/shopware/shopware/pull/14962
- feat: Add comment column to state_machine_history table by @gecolay in https://github.com/shopware/shopware/pull/13351
- fix(Storefront): skip popstate handling for hash-only in product listing by @mkucmus in https://github.com/shopware/shopware/pull/14539
- feat: Add presign url generator by @alexdumea in https://github.com/shopware/shopware/pull/14686
- fix: use correct path in playwright html upload check by @mkraeml in https://github.com/shopware/shopware/pull/14980
- fix: load phpunit config from PR when found by @nfortier-shopware in https://github.com/shopware/shopware/pull/14643
- fix: set autofocus true by @En0Ma1259 in https://github.com/shopware/shopware/pull/14957
- fix: required field validation by @En0Ma1259 in https://github.com/shopware/shopware/pull/14923
- fix: Reading associations via the parent, if the parent has multiple associations of the same type and to the same entity by @mitelg in https://github.com/shopware/shopware/pull/14215
- fix: hide TOS setting by @mstegmeyer in https://github.com/shopware/shopware/pull/15001
- fix: optimize unused media deletion process to prevent out-of-memory issues by @DrauzJu in https://github.com/shopware/shopware/pull/14865
- fix: restore horizontal scroll in flow builder by @vintagesucks in https://github.com/shopware/shopware/pull/14999
- feat: Add support for dev containers in VS Code based IDE by @Phil23 in https://github.com/shopware/shopware/pull/15008
- refactor(category): replace magic number with navigation depth constant by @SpiGAndromeda in https://github.com/shopware/shopware/pull/14978
- fix: Increase total blocking time assertion limit by @davidtraum in https://github.com/shopware/shopware/pull/15005
- fix: streamline product creation and assignment in Lighthouse tests by @frobel in https://github.com/shopware/shopware/pull/15015
- fix: redirect after finishing first run wizard by @vintagesucks in https://github.com/shopware/shopware/pull/15003
- fix: PHP bench data fixture class detection by @phuoccx in https://github.com/shopware/shopware/pull/14525
- fix: mt-colorpicker not working in text selection toolbar by @davidtraum in https://github.com/shopware/shopware/pull/14870
- fix(a11y): adjust aria-popover roles to announce correct popover content by @tobiasberge in https://github.com/shopware/shopware/pull/14989
- fix: Move migration for
oauth_usertable creation to Core by @astehlik in https://github.com/shopware/shopware/pull/14977 - fix: provide id to redirection route after email template header footer creation by @CR0YD in https://github.com/shopware/shopware/pull/14963
- fix: Fix SwTwigFunction memory leak in long-running environments by @mateuszfl in https://github.com/shopware/shopware/pull/14582
- fix(cms-sliders): Revert - Adjust image slider/galery styling (#14913) by @marcelbrode in https://github.com/shopware/shopware/pull/15059
- fix: Reset mode settings when creating new product by @davidtraum in https://github.com/shopware/shopware/pull/14663
- fix: Optimize CleanupCorruptedMediaHandler by @MartinKrzykawski in https://github.com/shopware/shopware/pull/15033
- fix(storefront): fix hot mode variant switch by @8mylez-dg in https://github.com/shopware/shopware/pull/14918
- fix(magnifier): prevent event registration when zoom container is missing by @BrocksiNet in https://github.com/shopware/shopware/pull/15069
- fix: Form validation helper setFieldNotRequired by @Phil23 in https://github.com/shopware/shopware/pull/15089
- feat: service requirements by @AydinHassan in https://github.com/shopware/shopware/pull/15026
- fix: review rating rounding for screen readers by @vintagesucks in https://github.com/shopware/shopware/pull/15075
- feat: Refactor empty usage in Elasticsearch to prepare its prohibition by @mitelg in https://github.com/shopware/shopware/pull/14967
- fix: log message by @AydinHassan in https://github.com/shopware/shopware/pull/15096
- feat: Refactor empty usage in migration, maintenance, etc to prepare its prohibition by @mitelg in https://github.com/shopware/shopware/pull/14971
- feat: Refactor empty usage in checkout, devops and Framework/Adapter to prepare its prohibition by @mitelg in https://github.com/shopware/shopware/pull/15032
- feat: Model Editor capabilities by @feliopterix in https://github.com/shopware/shopware/pull/14620
- feat: move config defaults into actual config definition by @shyim in https://github.com/shopware/shopware/pull/15031
- fix: preserve customer context on order creation in the Administration area by @Aliaaaam in https://github.com/shopware/shopware/pull/15062
- fix: country-state-select vatIdRequired type by @lacknere in https://github.com/shopware/shopware/pull/15037
- fix: Enhance navigation ID resolution for landing pages by @BrocksiNet in https://github.com/shopware/shopware/pull/14949
- feat: Refactor empty usage in System area to prepare its prohibition by @mitelg in https://github.com/shopware/shopware/pull/14968
- feat: Refactor empty usage in Framework to prepare its prohibition by @mitelg in https://github.com/shopware/shopware/pull/15042
- fix: index used custom fields in product (backport to 6.7.8.x) by @rittou in https://github.com/shopware/shopware/pull/15166
- fix: revert fix for storefront session cookie path (#14599) (backport: 6.7.8.x) by @shopware-octo-sts-app-2[bot] in https://github.com/shopware/shopware/pull/15175
- fix: resolve npm audit failures across all packages (backport: 6.7.8.x) by @shopware-octo-sts-app-2[bot] in https://github.com/shopware/shopware/pull/15181
- feat: allow to refresh opensearch during cache clear (backport: 6.7.8.x) by @shopware-octo-sts-app[bot] in https://github.com/shopware/shopware/pull/15184
- fix: analytics test when admin loads longer then 3s (backport: 6.7.8.x) by @shopware-octo-sts-app-2[bot] in https://github.com/shopware/shopware/pull/15210
New Contributors
- @nsaliu made their first contribution in https://github.com/shopware/shopware/pull/14509
- @Aliaaaam made their first contribution in https://github.com/shopware/shopware/pull/14760
- @8mylez-dg made their first contribution in https://github.com/shopware/shopware/pull/14918
Full Changelog: https://github.com/shopware/shopware/compare/v6.7.7.1...v6.7.8.0
Get in touch
Discuss about decisions, bugs you might stumble upon, etc in our community discord. See you there ;)
Minor fixes and improvements.
Full changelog
See the UPGRADE.md for all important technical changes.
Minor fixes and improvements.
Full changelog
System requirements
- tested on PHP
8.2,8.4and8.5 - tested on
MySQL 8andMariaDB 11
What's Changed
- fix:
getAddressinAddressDetailPageLoader(backport: 6.7.7.x) by @shopware-octo-sts-app-2[bot] in https://github.com/shopware/shopware/pull/14736 - fix: elasticsearch requirement in core bundle (backport: 6.7.7.x) by @shopware-octo-sts-app[bot] in https://github.com/shopware/shopware/pull/14725
- fix: order edit loading (backport: 6.7.7.x) by @shopware-octo-sts-app[bot] in https://github.com/shopware/shopware/pull/14746
Full Changelog: https://github.com/shopware/shopware/compare/v6.7.7.0...v6.7.7.1
Get in touch
Discuss about decisions, bugs you might stumble upon, etc in our community discord. See you there ;)
- Symfony 7.4 update
Full changelog
See the UPGRADE.md for all important technical changes.
- #14353 - fix: Remove usage of deprecated PDO constants (backport: 6.6.x) (#14353)
- #14451 - Fix IAP decoding with old OpenSSL versions
- #14413 - fix: keep mail attachments across flow actions (backport: 6.6.x) (#14443)
- #14058 - fix: Never load unfiltered many-to-many (backport: 6.6.x) (#14438)
- #14475 - fix: attribute entities missing with auto configuration (backport: 6.6.x) (#14475)
- #14482 - feat: Update PHPStan and its Symfony plugin (#14482)
- #13968 - Symfony 7.4 Update
- #14289 - fix: allow bulk edit stock with negative value (backport: 6.6.x) (#14392)
- #14485 - fix: ProductListingLoader shows random product variant instead of the main variant - backport 6.6.x (#14485)
- #11733 - fix: Error when inserting tables in custom field (backport: 6.6.x) (#14537)
- #14633 - fix: document footer placement (backport: 6.6.x) (#14633)
- Custom fields no longer searchable by default
- Product states deprecated in favor of product type field
- Symfony 7.4 upgrade
- Product type field replacing states
- Media model 3D viewer in Administration
Full changelog
System requirements
- tested on PHP
8.2,8.4and8.5 - tested on
MySQL 8andMariaDB 11
Features
Symfony 7.4 update
All symfony packages have been updated to version 7.4.
Take a look at the Symfony 7.4 release post for more information.
Especially note that Symfony now requires php-redis extension v6.1 or higher: https://github.com/symfony/symfony/blob/7.4/UPGRADE-7.4.md#cache.
If you note compatibility issues with the Redis extension please check the installed version php-redis.
Changed maintenance mode redirect
After maintenance ends, users are now redirected back to the page they were on before maintenance.
Previously, users were always redirected to the shop homepage.
Support of media paths with up to 2046 characters
Previously the maximum length for media paths was limited to 255 characters (due to default StringField limit) while the
database field already supported up to 2046 characters. This limitation has now been lifted and media paths can be up to
2046 characters long.
Configurable Custom Field Searchability
Custom fields are now not searchable by default. To make a custom field searchable, you need to enable the "Include in search" option in the custom field detail modal when creating or updating a custom field in Settings > System > Custom fields. This change helps optimize index storage size and improve search performance, especially for stores with many custom fields.
Important: When enabling searchability for an existing product custom field, you must rebuild the search index or update the products manually to include the custom field data in search results.
Media Model Viewer
From now on you are able to inspect your 3D models directly in the Media module in the Administration. Simply select a model file and you will find an interactive 3D viewer in the Preview collapsable in the item sidebar on the right. This new component is called sw-model-viewer.
API
Improved tagged based cache invalidation
Next routes now support cache tagging, enabling automatic invalidation when relevant entities are written:
/store-api/breadcrumb/{id}/store-api/media/store-api/product/{productId}/find-variant/store-api/product/{productId}/cross-selling
Core
Rework of DAL query generation for nested filters groups
The DAL criteria builder has been adjusted to generate EXISTS subqueries instead of LEFT JOINs for nested filter groups.
Previously, each level of nested filters resulted in an additional LEFT JOIN, even when the join was only required to check for the existence of a related entity subject to some filter.
In complex criteria trees with multiple filters on the same entity, this led to an exponential explosion of joins and significant performance degradation (e.g., the same table being joined multiple times only to evaluate existence conditions).
An example of this is a query such as "find orders that have a line item of type A and one of type B and one of type C".
According to aadr/2020-11-19-dal-join-filter.md, this would look like:
$criteria->addFilter(
new EqualsFilter('lineItems.type', 'product'),
new EqualsFilter('lineItems.type', 'custom'),
new EqualsFilter('lineItems.type', 'other'),
);
Previously, the generated query would LEFT JOIN order_line_item multiple times onto order, causing the query to be extremely slow. The new EXISTS checks prevent this, making the query much faster.
Introduce Immutable DAL flag
A new Immutable flag is available for Data Abstraction Layer fields. Fields marked as immutable can be set during entity creation but cannot be updated later. This prevents accidental renames of technical identifiers that other subsystems rely on. Core entities now using the flag include:
custom_field.namecustom_field.typecustom_field_set.name
Trying to update these columns now results in a WriteConstraintViolationException with the message The field foo is immutable and cannot be updated., giving developers clear feedback when attempting to change these values.
If the value is not set in the payload, or the value won't change, no exception is thrown.
Performance Improvement for ProductCategoryDenormalizer
The SQL Query inside the ProductCategoryDenormalizer has been optimized to run faster, especially on large catalogues.
Previously MySql needed to perform a full table scan based on the where condition, now the result set is already limited by indexed columns.
This lead to performance improvements from up to 3s for the query down to less than 1ms on large catalogues (3000%).
Deprecation of product states in favor of the new product type
The product.states field is deprecated and will be removed in the next major release.
A new field product.type was introduced to clearly indicate whether a product is digital or physical, or other types registered by third-party developers.
As part of this change, the following deprecations were made:
- The
order_line_item.statesfield is deprecated in favor oforder_line_item.payload.product_type. \Shopware\Core\Checkout\Cart\LineItem\LineItem::$statesis deprecated in favor of\Shopware\Core\Checkout\Cart\LineItem\LineItem::$payload['productType'].- The
LineItemProductStatesRuleis deprecated in favor of the newLineItemProductTypeRule. - The
StatesUpdaterservice and its related dispatched events (ProductStatesBeforeChangeEvent,ProductStatesChangedEvent) are deprecated. - A new parameter
shopware.product.allowed_typeswas introduced to allow third-party developers to register additional product types. - For more details, please refer to the 2025-11-14-introduce-product-type-and-deprecate-states.md
If you are using the rule LineItemProductStatesRule, product stream filters, or product listing filters that rely on product.states, you should update them to use the new product.type field instead.
If you create digital products using admin api, you should explicitly set the type field to digital when creating new products instead of relying on backend handling.
New RequestParamHelper
Symfony deprecated the "magic" Request::get() method, which was used to retrieve parameters from the request, by checking the attribute, query or request parameter bags.
For easier backward compatibilty we backported the old behaviour in the new RequestParamHelper class, however, it should only be used in explicit cases, where the parameter could be in any of those parameter bags.
The best practice is to check the explicit parameter bag, where you expect the parameter to be.
However, as we have a lot of API routes that support being called by GET and POST methods both, the helper is handy in such cases.
Before:
$parameter = $request->get($parameterName, $default);
After:
$parameter = RequestParameterHelper::get($request, $parameterName, $default);
To provide full backward compatibility, the helper currently also checks the attribute bag for the parameter first.
However, it should be possible to strictly differentiate between request attributes (which are generally controlled and set by the application itself) and input parameters (which are provided by the client, and based on how they are passed are either part of the query bag or the request bag) in the future.
Therefore the check of the attribute bag is deprecated and will be removed in the next major release.
When you need to get a value from the request attributes, you should use the Request::attributes->get() method directly.
In case you used to set request attributes to override specific parameters, you should instead overwrite the parametes in the query or request parameter bags directly.
The TranslationLoader class is now decoratable
The TranslationLoader class extends from the new AbstractTranslationLoader class and implements the decoratable pattern. This allows third-party developers to decorate the loader to add custom logic when a translation is loaded.
DomainExceptions don't create \RuntimeException anymore
All factory methods for domain exceptions now return specific exception classes instead of creating a generic \RuntimeException.
Changing the type of the thrown exception from \RuntimeException to a specific domain exception is not considered a breaking change, since all Domain Exceptions extend from \RuntimeException.
This means code like this will stay valid:
try {
$this->someService->willThrowDomainException();
} catch (\RuntimeException $e) {
// handle exception
}
Additionally all changed factory methods were marked as deprecated, because the \RuntimeException return type will be removed in the next major release.
This affects the following exception factory methods:
DataAbstractionLayerException::cannotBuildAccessor(...)DataAbstractionLayerException::onlyStorageAwareFieldsAsTranslated(...)DataAbstractionLayerException::onlyStorageAwareFieldsInReadCondition(...)DataAbstractionLayerException::primaryKeyNotStorageAware(...)DataAbstractionLayerException::missingTranslatedStorageAwareProperty(...)DataAbstractionLayerException::noTranslationDefinition(...)DataAbstractionLayerException::missingVersionField(...)DataAbstractionLayerException::unexpectedFieldType(...)WebhookException::invalidDataMapping(...)WebhookException::unknownEventDataType(...)
More fine-grained caching control in HttpCacheCookieEvent
A new doNotStore property was added to the HttpCacheCookieEvent to allow fine-grained control over caching behavior.
This new property allows preventing the current response from being stored in the cache.
This behaviour differs from the existing ìsCacheable` property, which will also prevent the following requests from that session being cached.
Logging for invalidated cache tags
Added logging for invalidated cache tags at the info level, with the ability to enable or disable the logging via configuration for debugging and transparency.
Removed CacheInvalidationSubscriber::getChangedPropertyFilterTags due to performance issues
The getChangedPropertyFilterTags method has been removed from CacheInvalidationSubscriber due to performance issues where it could cause invalidation storms by selecting all product IDs for popular property options.
Changing a property group or option will no longer automatically invalidate product and product list caches. It's recommended to rely on TTLs for bigger shops. If you experience issues after changing a property group, a manual cache clear may be required.
Administration
Deprecations in mail template components
The mail template index will be split into separate tabs for templates and headers/footers in v6.8.0.0.
The following deprecations apply to sw-mail-template-list and sw-mail-header-footer-list:
searchTermprop and watcher will be removed in v6.8.0.0getList()method:searchTermvariable will be replaced withthis.termin v6.8.0.0@page-changehandler will change toonPageChangein v6.8.0.0
The following deprecations apply to sw-mail-template-index:
- The
listingmixin will be removed in v6.8.0.0 termdata property will be removed in v6.8.0.0onChangeLanguagemethod: the if/else block will be replaced with just the if-branch logic in v6.8.0.0
Storefront
Cookie consent now language-aware
The cookie consent banner now tracks cookie configuration per language. Previously, switching languages would cause the cookie banner to reappear because the configuration hash changed due to translated cookie descriptions. Now, switching back to a previously accepted language will not show the banner again.
The Store API endpoint /store-api/cookie-groups now includes a languageId field in the response.
New window.activeNavigationPathIdList variable
A new global JavaScript variable window.activeNavigationPathIdList is now available, containing the IDs of parent categories for the current page. This can be used by plugins or themes to implement custom navigation highlighting.
Improved cookie consent dialog UI and accessibility
The cookie consent dialog now uses toggle switches instead of checkboxes for a more modern look. Additionally, accessibility improvements were made by adding proper ARIA attributes (role="switch", aria-disabled, aria-labelledby) and converting links to semantic buttons where appropriate.
HTTP caching policies update
The following changes are relevant when HTTP caching policies feature is enabled (CACHE_REWORK or v6.8.0.0 feature flag):
- HTTP caching policy system now takes into account
_noStoreroute attribute to applyno-storedirective in Cache-Control header. Cache-Controlheader set by policies is sent to the client for all responses, even when no reverse proxy is enabled. Previously, headers were replaced withno-cachewhen no reverse proxy was configured. Important: Verify your cache policy configuration is appropriate for client-side caching, as browser caches cannot be invalidated on-demand unlike reverse proxies that use tag-based invalidation.
First tap on iOS Safari did not trigger call-to-action buttons on product detail page
Fixes an issue on iOS Safari where the first tap does not trigger the desired action on the product detail page after scrolling over the image gallery.
The touchmove event listener was removed from zoom-modal.plugin.js because it stopped the tap/click event.
A regular click event is used instead to open the Zoom-Modal. The browser itself can determine via the click event if the user is still scrolling or clicking/taping.
Google Analytics 4 Integration Update
The Google Analytics integration has been updated to align with GA4 standards, enhancing e-commerce tracking capabilities.
- The event parameters for
add_to_cart,begin_checkout,purchase,view_item, andremove_from_carthave been enriched with additional data such ascurrency,value,item_brand, and a hierarchicalitem_categorystructure. - Furthermore, new events for
add_to_wishlist,remove_from_wishlist,view_cart,add_shipping_info, andadd_payment_infohave been implemented to provide a more comprehensive view of user interactions. - The checkout funnel now tracks shipping and payment method selections, including when users change their selections.
- The
view_item_listandadd_to_cartevents now fire when users navigate through product listings via pagination or apply filters, not just on initial page load.
New Configuration: Track Offcanvas Cart
A new configuration option Track offcanvas cart has been added to the Sales Channel Analytics settings. When enabled, the view_cart GA4 event will fire whenever the offcanvas cart is opened or its content is updated (e.g., quantity changes, product removals, promotions).
New Configuration: Open Offcanvas Cart After Add to Cart
A new configuration option Open offcanvas cart after adding a product has been added to the Cart settings (Settings → Shop → Cart). This setting is enabled by default. When disabled:
- The offcanvas cart will not open automatically after adding items to the cart
- A success message will be shown instead
- The cart widget in the header will still update to show the new item count
Recommended for accurate funnel tracking: Disable "Open offcanvas cart after adding a product" and enable "Track offcanvas cart". This ensures view_cart events only fire when users intentionally click the cart button, providing accurate funnel metrics.
Critical Fixes
Flash messages are not cached anymore
As soon as a flash message is displayed, the response won't be stored in the HTTP cache anymore, thus preventing the message from being displayed to other users.
Additionally, the cache will be passed as soon as there is a flash message that still needs to be displayed. This ensures that flash messages are always displayed on the next request, and not only on the next request to an uncached page.
What's Changed
- fix: cannot disable inheritance of mt-switch field by @nguyenquocdaile in https://github.com/shopware/shopware/pull/14106
- fix: added missing get/caching support for LandingPageRoute by @h1k3r in https://github.com/shopware/shopware/pull/14124
- feat: add maxPortnumber fallback to support dockware admin watcher port by @crayssnlabs in https://github.com/shopware/shopware/pull/13521
- fix: mark translation association as required in attribute entities by @keulinho in https://github.com/shopware/shopware/pull/14145
- feat: Allow searching while quicksearch is still loading by @amenk in https://github.com/shopware/shopware/pull/13727
- fix: canonical link on paginated pages by @lacknere in https://github.com/shopware/shopware/pull/13568
- fix: Allow deletion of primary keys without primary key named id by @JoshuaBehrens in https://github.com/shopware/shopware/pull/13034
- feat: introduce immutable flag by @vienthuong in https://github.com/shopware/shopware/pull/13957
- fix: adjust StringField length of media path to 2048 by @jenskueper in https://github.com/shopware/shopware/pull/14153
- feat: Allow Configuration of Custom Fields to be Searchable by @tamvt in https://github.com/shopware/shopware/pull/14161
- fix: Fixes username placeholder text in sw-settings-mailer/.../en.json according to de.json by @JannisMCMXCV in https://github.com/shopware/shopware/pull/14163
- fix: Ensure product is included in search keywords by @vanWittlaer in https://github.com/shopware/shopware/pull/13947
- fix: Add release information for version 6.7.5.0 by @alvarothomas in https://github.com/shopware/shopware/pull/14016
- fix: Mailer SMTP port input field allows floats by @pt1602 in https://github.com/shopware/shopware/pull/14152
- fix: shows a full response on error registration by @shyim in https://github.com/shopware/shopware/pull/14140
- feat: apply OpenAPI descriptions for Definitions by @bojanrajh in https://github.com/shopware/shopware/pull/13581
- fix: rename criteria property in Admin API sync definition by @astehlik in https://github.com/shopware/shopware/pull/14171
- fix(snippets): Minor ellipsis fix by @marcelbrode in https://github.com/shopware/shopware/pull/14185
- fix: Allow dynamic properties on test struct by @mitelg in https://github.com/shopware/shopware/pull/14177
- fix: Update composer to ensure safe version by @mitelg in https://github.com/shopware/shopware/pull/14188
- fix: Misleading redis connection configuration by @aragon999 in https://github.com/shopware/shopware/pull/14181
- feat: introduce product type by @vienthuong in https://github.com/shopware/shopware/pull/13554
- feat: add loading screen to admin (#13902) by @vienthuong in https://github.com/shopware/shopware/pull/14204
- fix: remove hard-code path from vite config by @shyim in https://github.com/shopware/shopware/pull/14191
- feat: Always create base snippet set by @dgrothaus-sw in https://github.com/shopware/shopware/pull/14097
- refactor: split mail template index into tabs by @vintagesucks in https://github.com/shopware/shopware/pull/13908
- feat: enhance cookie configuration UI, primary CTAs by @BrocksiNet in https://github.com/shopware/shopware/pull/14076
- refactor: flow builder meteor tokens by @larskemper in https://github.com/shopware/shopware/pull/14170
- refactor: import export meteor tokens by @larskemper in https://github.com/shopware/shopware/pull/14193
- fix:
checkPromotionquery param in AccountEditOrderPageLoader by @gecolay in https://github.com/shopware/shopware/pull/14195 - fix: improve collection phpstan types by @cyl3x in https://github.com/shopware/shopware/pull/13818
- fix: accessble payment and shipping method selections on checkout confirm by @cyl3x in https://github.com/shopware/shopware/pull/14095
- fix(snippets): Add german snippets by @marcelbrode in https://github.com/shopware/shopware/pull/14223
- fix: delete restrict notification message by @nguyenytran in https://github.com/shopware/shopware/pull/14235
- fix: Run command in non interactive env by @alexdumea in https://github.com/shopware/shopware/pull/14194
- fix(cms-slots): Replace v-show with v-if by @marcelbrode in https://github.com/shopware/shopware/pull/14228
- fix: Add release information for version 6.7.6.0 and 6.7.7.0 by @flegarjur in https://github.com/shopware/shopware/pull/14236
- feat(google-analytics): Enhance GA4 integration by @BrocksiNet in https://github.com/shopware/shopware/pull/13662
- feat: add tag based invalidation to StoreAPI routes by @h1k3r in https://github.com/shopware/shopware/pull/14166
- fix(captcha): For loop issue by @BrocksiNet in https://github.com/shopware/shopware/pull/14254
- feat: add default address bool to customer address by @mstegmeyer in https://github.com/shopware/shopware/pull/14255
- fix: remove settings card border by @larskemper in https://github.com/shopware/shopware/pull/14284
- fix: update deprecation message by @En0Ma1259 in https://github.com/shopware/shopware/pull/14278
- fix: return selected main variant when displayParent is active by @Alex--C in https://github.com/shopware/shopware/pull/13208
- fix: pass resizeWidth property to deprecated sw-popover component by @davidtraum in https://github.com/shopware/shopware/pull/14227
- fix: accept inactive customer to customer groups by @FlorianKe in https://github.com/shopware/shopware/pull/14052
- fix: add submit button functionality for password recovery by @jleifeld in https://github.com/shopware/shopware/pull/14240
- fix: product boxes background color by @pt1602 in https://github.com/shopware/shopware/pull/14162
- fix(phpstan): Add iterable types to import/export module by @aragon999 in https://github.com/shopware/shopware/pull/14200
- feat(consent): hide-header and remove close on click by @SebastianFranze in https://github.com/shopware/shopware/pull/14309
- fix: update i18n snippet handling to ensure reactivity on locale mess… by @jleifeld in https://github.com/shopware/shopware/pull/14212
- fix(a11y): remove unnecessary labelledby attribute by @bschulzebaek in https://github.com/shopware/shopware/pull/14281
- fix: generate EXISTS conditions instead of left joins for nested filter groups in DAL criteria builder by @timtheisinger in https://github.com/shopware/shopware/pull/14216
- feat: Add 3D viewer to Media item sidebar by @ffrank913 in https://github.com/shopware/shopware/pull/14270
- fix: Inherited attribute now correctly adds Inherited flag to fields by @matthias-nijland in https://github.com/shopware/shopware/pull/14285
- feat: implement cache control headers for administration responses by @jleifeld in https://github.com/shopware/shopware/pull/14222
- fix: Improve error handling for plugin config loading by @BrocksiNet in https://github.com/shopware/shopware/pull/14269
- fix: include transaction on recalculation by @En0Ma1259 in https://github.com/shopware/shopware/pull/14022
- fix: cached pathIdList for active state in main navigation by @BrocksiNet in https://github.com/shopware/shopware/pull/14305
- perf: Optimize ArrayFacade reset() and remove() methods by @xndrdev in https://github.com/shopware/shopware/pull/14316
- fix: set requestedGroupId to null on change customer group flow action by @dithom in https://github.com/shopware/shopware/pull/14304
- fix: Login by review log in form after filtering reviews by @DennisGarding in https://github.com/shopware/shopware/pull/14214
- fix: #14332 Filter by id and product_id first in ProductCategoryDenormalizer by @runelaenen in https://github.com/shopware/shopware/pull/14333
- fix: update rule updated_at on condition change by @vintagesucks in https://github.com/shopware/shopware/pull/14233
- feat: upgrade axios dependency to v1.x with opt-in forward compatibility by @jleifeld in https://github.com/shopware/shopware/pull/14096
- fix!: replace StateMachineEntity with StateMachineStateEntity in OrderTransactionCapture by @wexoag in https://github.com/shopware/shopware/pull/14342
- fix: LineItemProductType constructor should accept null parameter by @vienthuong in https://github.com/shopware/shopware/pull/14369
- fix: flyout navigation correctly closes on mouseleave by @bschulzebaek in https://github.com/shopware/shopware/pull/14351
- feat: make find best variant feature as opt-in by @vienthuong in https://github.com/shopware/shopware/pull/13952
- fix: visual bugs in after sales by @larskemper in https://github.com/shopware/shopware/pull/14293
- fix: Critical dive canvas resize bug. by @ffrank913 in https://github.com/shopware/shopware/pull/14380
- feat: add expand button and modal to model-viewer. by @ffrank913 in https://github.com/shopware/shopware/pull/14359
- fix: Allow filter zero and negative value for stock by @nguyenquocdaile in https://github.com/shopware/shopware/pull/14365
- fix: allow bulk edit stock with negative value by @nguyenquocdaile in https://github.com/shopware/shopware/pull/14371
- fix: add watcher to sw-time-ago to update when props change by @communicode-sw-dev in https://github.com/shopware/shopware/pull/14357
- fix: theme_runtime_config contains duplicate entries after theme install/uninstall by @h1k3r in https://github.com/shopware/shopware/pull/14318
- feat(cookie-consent): Implement per-language cookie consent tracking by @BrocksiNet in https://github.com/shopware/shopware/pull/14264
- fix: double slash in path for migration by @shyim in https://github.com/shopware/shopware/pull/14403
- feat: use abstract class to make TranslationLoader decoratable by @dgrothaus-sw in https://github.com/shopware/shopware/pull/14398
- fix(cookie-consent): remove primary notice, reverted that change by @BrocksiNet in https://github.com/shopware/shopware/pull/14426
- fix: TypeError when _httpCache route attribute contains string by @h1k3r in https://github.com/shopware/shopware/pull/14416
- feat: add support for ReverseInherited flag in attributed entities by @nickygerritsen in https://github.com/shopware/shopware/pull/14427
- fix: Never load unfiltered many-to-many by @keulinho in https://github.com/shopware/shopware/pull/14409
- fix: keep mail attachments across flow actions by @vintagesucks in https://github.com/shopware/shopware/pull/14411
- fix: transitive dependency for phpseclib/phpseclib by @shyim in https://github.com/shopware/shopware/pull/14452
- fix: Do not cache flash messages by @keulinho in https://github.com/shopware/shopware/pull/13983
- fix: add missing foreign key name by @shyim in https://github.com/shopware/shopware/pull/14431
- feat: Log cache invalidations by @umutdogan4291 in https://github.com/shopware/shopware/pull/14253
- feat: only validate immutable fields if value has changed by @vienthuong in https://github.com/shopware/shopware/pull/14422
- fix: attribute entities missing with auto configuration by @shyim in https://github.com/shopware/shopware/pull/14401
- fix: Improve error handling and validation in plugin:create command by @umutdogan4291 in https://github.com/shopware/shopware/pull/14407
- feat: Changed MaintenanceResolver to set current path for the user being redirected afterwards by @tinect in https://github.com/shopware/shopware/pull/14175
- fix: Media manager improvements based on feedback by @MartinKrzykawski in https://github.com/shopware/shopware/pull/14273
- fix: restore muted tests for NotificationController by @nfortier-shopware in https://github.com/shopware/shopware/pull/14339
- fix: attribute fallback for RequestParamHelper by @keulinho in https://github.com/shopware/shopware/pull/14466
- fix(SeoUrl): allow filtering for isCanonical or isDeleted by @BrocksiNet in https://github.com/shopware/shopware/pull/14437
- fix: use click event in zoom-modal to fix ios safari click issue by @tobiasberge in https://github.com/shopware/shopware/pull/14352
- feat: add upload playwright traces to s3 workflow by @frobel in https://github.com/shopware/shopware/pull/14420
- fix: caches invalidation performance issues on property changes by @h1k3r in https://github.com/shopware/shopware/pull/14512
- fix: helptext and label is shown twice in theme config by @gweiermann in https://github.com/shopware/shopware/pull/14004
New Contributors
- @crayssnlabs made their first contribution in https://github.com/shopware/shopware/pull/13521
- @jenskueper made their first contribution in https://github.com/shopware/shopware/pull/14153
- @JannisMCMXCV made their first contribution in https://github.com/shopware/shopware/pull/14163
- @pt1602 made their first contribution in https://github.com/shopware/shopware/pull/14152
- @bojanrajh made their first contribution in https://github.com/shopware/shopware/pull/13581
- @flegarjur made their first contribution in https://github.com/shopware/shopware/pull/14236
- @Alex--C made their first contribution in https://github.com/shopware/shopware/pull/13208
- @davidtraum made their first contribution in https://github.com/shopware/shopware/pull/14227
- @timtheisinger made their first contribution in https://github.com/shopware/shopware/pull/14216
- @matthias-nijland made their first contribution in https://github.com/shopware/shopware/pull/14285
- @xndrdev made their first contribution in https://github.com/shopware/shopware/pull/14316
- @wexoag made their first contribution in https://github.com/shopware/shopware/pull/14342
- @communicode-sw-dev made their first contribution in https://github.com/shopware/shopware/pull/14357
- @umutdogan4291 made their first contribution in https://github.com/shopware/shopware/pull/14253
Full Changelog: https://github.com/shopware/shopware/compare/v6.7.6.2...v6.7.7.0
Get in touch
Discuss about decisions, bugs you might stumble upon, etc in our community discord. See you there ;)
Minor fixes and improvements.
Full changelog
System requirements
- tested on PHP
8.2,8.4and8.5 - tested on
MySQL 8andMariaDB 11
What's Changed
- fix: update i18n snippet handling to ensure reactivity on locale message changes (backport: 6.7.6.x) by @jleifeld in https://github.com/shopware/shopware/pull/14396
- fix: TypeError when _httpCache route attribute contains string (backport: 6.7.6.x) by @h1k3r in https://github.com/shopware/shopware/pull/14430
Full Changelog: https://github.com/shopware/shopware/compare/v6.7.6.0...v6.7.6.2
Get in touch
Discuss about decisions, bugs you might stumble upon, etc in our community discord. See you there ;)
- Category denormalizer performance improvement
- Nested filter group EXISTS subqueries reduce join overhead
Full changelog
See the UPGRADE.md for all important technical changes.
- #14332 - Performance improvement for category denormalizer
- #6912 - fix: require with minimum-stability stable (fixes: #6912) (#6914)
- #6960 - ci: skip downstreams in case of no write perms (fixes: #6960) (#6985)
- #9031 - ci: reenable 6.6.0.0 update (fixes #9031)[6.6.x] (#9248)
- #9851 - feat: implement event on Sitemap Generation, closes #9851 [6.6.x] (#9968)
- 12859 - Fix captcha validation to respect errorRoute parameter
- 13179 - Slash and backslash are now working correctly in search if configured as preserved characters
- 13707 - Generate EXISTS conditions instead of left joins for nested filter groups in DAL criteria builder
- 8577 - Cheapest price of variant product applies across sales channels
- GHSA-7cw6-7h3h-v8pf - map in security extension for array callables
Full changelog
System requirements
- tested on PHP
8.2,8.4and8.5 - tested on
MySQL 8andMariaDB 11
What's Changed
- GHSA-7cw6-7h3h-v8pf - fix: map in security extension for array callables
Full Changelog: https://github.com/shopware/shopware/compare/v6.7.6.0...v6.7.6.1
Get in touch
Discuss about decisions, bugs you might stumble upon, etc in our community discord. See you there ;)
- sw-states and sw-currency handling deprecated; feature flags required for new behavior
- HTTP caching policies with StoreAPI route support
- Email notification on customer password change
- Video cover management API endpoint
Full changelog
System requirements
- tested on PHP
8.2,8.4and8.5 - tested on
MySQL 8andMariaDB 11
Features
HTTP caching rework
- Support for HTTP caching policies was added. It allows defining HTTP cache behavior per area (storefront, store_api)
and per route using configuration. The feature is experimental and can be enabled with theCACHE_REWORKfeature flag
together with other HTTP caching improvements. - Selected Store API routes were marked as cacheable and now support HTTP caching with Cache-Control headers.
Send email on customer password change
A new flow has been introduced which sends a confirmation email whenever a customer changes their password. This helps to identify any suspicious account activity more quickly.
API
Video cover management /api/_action/media/{mediaId}/video-cover
Added endpoint to assign or remove cover images for video media files. Requires media.editor ACL permission.
Accepts coverMediaId (string or null) in request body.
Cover image reference is stored in metaData.video.coverMediaId.
When a cover image is deleted, all video references are automatically cleaned up via VideoCoverCleanupSubscriber.
StoreAPI HTTP caching support
HTTP caching support was added for the following Store API endpoints:
/store-api/breadcrumb/{id}/store-api/category/store-api/category/{navigationId}/store-api/navigation/{activeId}/{rootId}/store-api/cms/{id}/store-api/product/store-api/seo-url/store-api/country/store-api/country-state/{countryId}/store-api/currency/store-api/language/store-api/salutation
GET methods and HTTP caching support were added for the following Store API endpoints:
/store-api/media/store-api/product/{productId}/cross-selling/store-api/product/{productId}/store-api/product/{productId}/find-variant/store-api/product-listing/{categoryId}/store-api/product/{productId}/reviews/store-api/search/store-api/search-suggest
It's intended to work with the new HTTP caching policy system, and should increase performance for cacheable Store API requests.
Store API: compressed criteria parameter support
Criteria can be passed in the GET requests as single query parameter, encoded as JSON -> gzip -> base64url. This allows
sending complex criteria without hitting URL length limits. Also, ProductListingCriteria fields are supported.
Please note that this is a temporary workaround intended to be used until QUERY request method is standardized and supported.
Check the ADR for more details.
Document download /store-api/document/download/
The endpoint now selects the document file type based on the Accept header.
When no Accept header is set or with */*, PDF will be returned. (PR #12944)
Core
PHP 8.5 support
Shopware is now fully compatible with PHP 8.5.
Deprecation of sw-states and sw-currency handling and new way to disable caching
The sw-states and sw-currency handling is deprecated, which means by default the HTTP-Cache will also be active for logged in customers or when the cart is filled in the next major version.
You can opt in to the new behaviour by activating either the v6.8.0.0 (all upcoming breaking changes), PERFORMANCE_TWEAKS (all performance related breaks) or CACHE_REWORK (only the HTTP-Cache related breaks) feature flag.
Due to the rework of the contained rules in the cache hash, this becomes efficiently possible. The complete caching behaviour is now controlled by the sw-cache-hash cookie.
You should rework you extensions to also work with enabled cache for logged in customers and when the cart is filled.
To modify the default behaviour there are several extension points you can hook into, for a detailed explanation please take a look at the caching docs.
The following classes and constants were deprecated as they will not be used anymore:
\Shopware\Core\Framework\Adapter\Cache\Http\CacheStateValidator\Shopware\Core\Framework\Adapter\Cache\CacheStateSubscriber\Shopware\Core\Framework\Adapter\Cache\Http\HttpCacheKeyGenerator::SYSTEM_STATE_COOKIE\Shopware\Core\Framework\Adapter\Cache\Http\HttpCacheKeyGenerator::INVALIDATION_STATES_HEADER\Shopware\Core\Framework\Adapter\Cache\Http\HttpCacheKeyGenerator::CURRENCY_COOKIE\Shopware\Core\Framework\Adapter\Cache\CacheStateSubscriber::STATE_LOGGED_IN\Shopware\Core\Framework\Adapter\Cache\CacheStateSubscriber::STATE_CART_FILLED
Additionally, the following configuration was deprecated:
shopware.cache.invalidation.http_cache
HTTP Caching Policies
Added support for caching policies to define HTTP cache behavior via configuration.
You can now configure named caching policies that define how the Cache-Control header is formed. These policies can be assigned per area (storefront, store_api) and per route. The header controls how caches (browser, reverse proxy, CDN, Symfony cache layer) should cache the response.
The feature is enabled using the CACHE_REWORK feature flag. For more details see the caching policies documentation.
Add recursive assign method to AssignArrayTrait
A new method assignRecursive has been added to Shopware\Core\Framework\Struct\AssignArrayTrait. Along with it, the new Shopware\Core\Framework\Struct\AssignArrayInterface has been introduced.
To make full use of assignRecursive, every class using AssignArrayTrait must also implement the new AssignArrayInterface.
The assignRecursive method enables deeply nested, JSON-serialized data structures - for example, a fully serialized ProductEntity including associations such as properties - to be converted back into a fully populated ProductEntity instance, including all nested Struct and Collection objects.
Note: assignRecursive uses reflection and creates nested struct instances, so it is noticeably slower than the classic shallow assign and is intended for import/export and (re-)hydration scenarios rather than tight, performance-critical loops.
Performance improvements for generating category SEO-Urls
We don't synchronously fetch and generate the SEO-Urls for all child categories anymore.
Instead, we rely on the CategoryIndexer to trigger the re-index of children asynchronously.
This prevents cases where SEO-Urls were generated multiple times for the same category, and thus it considerably improves the performance of category indexing.
Administration
Loading indicator for whole page
When the initial page takes more than two seconds to load, a loading indicator appears instead of a blank page.
Search filter for settings module
In the settings module, there is now a search bar in the top right. It can be used to filter settings based on a search term to quickly find what you need.
Storefront
The email validation supports IDN email addresses
The domain part of email addresses may now contain internationalized domain names (IDN). The Storefront validation will properly check these domains. The form validation in PHP may still deny IDN emails addresses, but the default Shopware forms already allow them.
App System
App Script caching control
As before, app developers can control caching via in app scripts using syntax {% do response.cache.<directive> %}, which map to ResponseCacheConfiguration methods.
Next changes were made to ResponseCacheConfiguration methods:
- added
sharedMaxAge(seconds)- set shared (reverse proxy/CDN) cache TTL, equivalent tos-maxagecache control directive. - added
clientMaxAge(seconds)- set client-side (browser) cache TTL, equivalent tomax-agecache control directive. Has effect only ifCACHE_REWORKfeature flag is enabled. - deprecated
maxAge(seconds)- use sharedMaxAge() instead.
Admins can override policies per script using route_policies with route#hook pattern in configuration (see HTTP caching policies description in the Core section).
Hosting & Configuration
Control language analyzer usage in Elasticsearch search queries
A new environment variable SHOPWARE_ES_USE_LANGUAGE_ANALYZER has been added to control whether language-specific analyzers (like sw_english_analyzer, sw_german_analyzer) are used for search queries.
By default (SHOPWARE_ES_USE_LANGUAGE_ANALYZER=1), search queries use the same analyzer as the indexed field, which includes language-specific features like stopword filtering and stemming. This provides broader, more fuzzy search results.
When set to 0 (SHOPWARE_ES_USE_LANGUAGE_ANALYZER=0), search queries use sw_whitespace_analyzer instead, providing less fuzzy search results with fewer matches.
Note: This setting only affects search queries, not indexing. Indexed data continues to use language analyzers for proper tokenization.
Possibility to disable extensions when setting up staging mode
A new config option shopware.staging.extensions.disable was added to allow configuring extensions that should be automatically disabled when the staging mode gets activated via system:setup:staging command.
shopware:
staging:
extensions:
disable: ["TheExtensionName", "AnotherExtensionName"]
Deprecated HTTP cache configuration
SHOPWARE_HTTP_DEFAULT_TTLenvironment variable.shopware.http.cache.default_ttlparameter.shopware.http_cache.stale_while_revalidateparameter.shopware.http_cache.stale_if_errorparameter.
Deprecated parameters will have no effect when CACHE_REWORK feature flag is enabled, and will be removed in 6.8.0.0.
Full list of changes
- fix: missing block address_item by @mstegmeyer in https://github.com/shopware/shopware/pull/13640
- fix: ManyToMany association of inherited associations by @keulinho in https://github.com/shopware/shopware/pull/13636
- fix(snippets): Adjust snippets by @marcelbrode in https://github.com/shopware/shopware/pull/13652
- fix: timezone field date range rule by @larskemper in https://github.com/shopware/shopware/pull/13517
- feat: Disable configured extensions in the staging mode by @aragon999 in https://github.com/shopware/shopware/pull/12378
- feat: Enhance max limit handling in product listing processor by @lx-wnk in https://github.com/shopware/shopware/pull/13399
- fix: change native type of usageKey in PromotionDiscountEntity by @schneider-felix in https://github.com/shopware/shopware/pull/13633
- fix(media-upload): Fix drag&drop reordering with more than 5 items by @marcelbrode in https://github.com/shopware/shopware/pull/13673
- fix: replaced blocking lock in the CacheClearer with throwing exception by @h1k3r in https://github.com/shopware/shopware/pull/13115
- fix: reindex product when conflicted mapper introduced by @vienthuong in https://github.com/shopware/shopware/pull/13454
- feat(product-analytics): Add sw-settings-usage-data-consent-modal by @SebastianFranze in https://github.com/shopware/shopware/pull/13524
- fix: Search keyword input wrong in admin if more keywords added by @nguyenquocdaile in https://github.com/shopware/shopware/pull/13698
- fix(storefront): npm audit issue with glob by @patzick in https://github.com/shopware/shopware/pull/13706
- refactor: Improve admin performance by @jleifeld in https://github.com/shopware/shopware/pull/13600
- feat: add select by row click data-grid option by @larskemper in https://github.com/shopware/shopware/pull/13587
- fix: resolve double HTML encoding issue in product descriptions by @BrocksiNet in https://github.com/shopware/shopware/pull/13628
- feat: Allow IDN for email addresses by @dgrothaus-sw in https://github.com/shopware/shopware/pull/13615
- feat(product-analytics): Hide usage data consent banner if product an… by @SebastianFranze in https://github.com/shopware/shopware/pull/13677
- fix: mt-empty-state alignment issues by @alastair-simon in https://github.com/shopware/shopware/pull/13703
- fix: Fix product slider with variants in closeout by @lukasrump in https://github.com/shopware/shopware/pull/13653
- feat: add warning to order state change flow action by @larskemper in https://github.com/shopware/shopware/pull/13728
- fix(security): address axios and node-forge vulnerabilities by @patzick in https://github.com/shopware/shopware/pull/13734
- fix: Make doctrine/dbal version narrower by @mitelg in https://github.com/shopware/shopware/pull/13753
- fix: Role detail page gets stuck in loading state when sw-verify-user-modal is closed by @SebastianFranze in https://github.com/shopware/shopware/pull/13717
- feat: Add indexer queuer for plugin migrations by @mdanierov in https://github.com/shopware/shopware/pull/13646
- fix: add missing
altattribute to order mail product images by @vintagesucks in https://github.com/shopware/shopware/pull/13768 - fix: custom price fields in rules by @vintagesucks in https://github.com/shopware/shopware/pull/13744
- fix: Update ATS for new web installer button name by @dgrothaus-sw in https://github.com/shopware/shopware/pull/13773
- feat: elasticsearch tunning by @vienthuong in https://github.com/shopware/shopware/pull/12452
- fix: add missing stateMachineState association by @damian-pastorini in https://github.com/shopware/shopware/pull/13667
- fix: theme manager tabs not shown in 6.7 by @tobiasberge in https://github.com/shopware/shopware/pull/13767
- feat: add action button file type filtering. by @ffrank913 in https://github.com/shopware/shopware/pull/13685
- refactor(product-analytics): Create subcomponents out of sw-settings-… by @SebastianFranze in https://github.com/shopware/shopware/pull/13735
- fix: require cache hash when cache cookies are set by @keulinho in https://github.com/shopware/shopware/pull/13704
- fix: typo in date range rule timezone field css class by @vintagesucks in https://github.com/shopware/shopware/pull/13772
- fix: alternative shipping address salutation by @cyl3x in https://github.com/shopware/shopware/pull/13731
- fix: improve RedisInvalidatorStorage by @BrocksiNet in https://github.com/shopware/shopware/pull/13669
- fix: domain assignment of StorefrontControllers by @mstegmeyer in https://github.com/shopware/shopware/pull/13748
- feat: add BeforeSalesChannelContextAssembledEvent by @mstegmeyer in https://github.com/shopware/shopware/pull/13795
- fix: date range rule json serialization format by @vintagesucks in https://github.com/shopware/shopware/pull/13791
- feat: add delete cart endpoint for storefront by @shyim in https://github.com/shopware/shopware/pull/13701
- fix: address empty state by @FlorianKe in https://github.com/shopware/shopware/pull/13676
- fix: add missing transactions state machine state association by @damian-pastorini in https://github.com/shopware/shopware/pull/13740
- fix: only api aware fields should be selectable in import export prof… by @DennisGarding in https://github.com/shopware/shopware/pull/13660
- feat: add new mt-snackbar for media upload status displays by @bschulzebaek in https://github.com/shopware/shopware/pull/13689
- feat: Add PHP 8.5 support by @pweyck in https://github.com/shopware/shopware/pull/12709
- feat(product-analytics): Hide store data consent if user has no permit by @SebastianFranze in https://github.com/shopware/shopware/pull/13693
- feat: Allow node 25 by @aragon999 in https://github.com/shopware/shopware/pull/13665
- fix: google product comparison template by @lacknere in https://github.com/shopware/shopware/pull/13619
- feat: center empty states in admin by @alastair-simon in https://github.com/shopware/shopware/pull/13836
- fix: MariaDB syntax in DELETE statement in ProductSubscriber by @hanneswernery in https://github.com/shopware/shopware/pull/13809
- fix: Ensure consistent order of methods and properties in generated documentation by @mitelg in https://github.com/shopware/shopware/pull/13879
- feat: apply ngram search for long term by @vienthuong in https://github.com/shopware/shopware/pull/13874
- fix: Reset calculated LineItemGroupBuilder results by @En0Ma1259 in https://github.com/shopware/shopware/pull/13865
- fix: DownloadResponseGenerator::getResponse in case of using external storage by @flkasper in https://github.com/shopware/shopware/pull/13695
- fix: Fix EntityResolverContext code completion for cms extensions by @MartinKrzykawski in https://github.com/shopware/shopware/pull/13774
- fix: unskip skipped tests by @frobel in https://github.com/shopware/shopware/pull/13687
- fix: Cms element enrichment by @nexxome in https://github.com/shopware/shopware/pull/13871
- fix: preserve PDO driverOptions from DSN parameters by @blakesaunders in https://github.com/shopware/shopware/pull/13623
- fix: Remove usage of deprecated PDO constants by @mitelg in https://github.com/shopware/shopware/pull/13870
- feat: add warning if Dynamic Product Group indexing disable in product stream detail page by @nguyenquocdaile in https://github.com/shopware/shopware/pull/13626
- refactor: convert images to webp by @gweiermann in https://github.com/shopware/shopware/pull/13837
- fix: Display divergent delivery address in invoice by @DennisGarding in https://github.com/shopware/shopware/pull/13862
- fix: limit admin notifications (worker side) by @nfortier-shopware in https://github.com/shopware/shopware/pull/13813
- fix(snippets): Adjust quotations + global.default use by @marcelbrode in https://github.com/shopware/shopware/pull/13919
- perf: don't fetch child categories in seo url updater by @keulinho in https://github.com/shopware/shopware/pull/13934
- fix: Thumbnail "sizes" on PDP can be too small by @Mugentoki in https://github.com/shopware/shopware/pull/13578
- fix(sales-channel-products): Exchange
sw-empty-statewithmt-empty-stateby @marcelbrode in https://github.com/shopware/shopware/pull/13938 - fix: variant inheritance for release date field by @nguyenquocdaile in https://github.com/shopware/shopware/pull/13944
- fix: Do not use newest PHP features in TestBootstrapper by @mitelg in https://github.com/shopware/shopware/pull/13948
- fix: flag major changed by @En0Ma1259 in https://github.com/shopware/shopware/pull/13904
- fix: Elasticsearch Admin search does not find search terms with more … by @tamvt in https://github.com/shopware/shopware/pull/13819
- fix: multiple change rounding error in the sales unit by @vienthuong in https://github.com/shopware/shopware/pull/13932
- feat: recursive assign by @En0Ma1259 in https://github.com/shopware/shopware/pull/13551
- fix: add filetype param to store api document download by @ennasus4sun in https://github.com/shopware/shopware/pull/12944
- fix: convert array to collection by @En0Ma1259 in https://github.com/shopware/shopware/pull/13964
- fix(sw-snippet-field): Add input field spacing for icon to not overlap with content by @marcelbrode in https://github.com/shopware/shopware/pull/13935
- feat(product-analytics): Add new consent card on usage data page by @SebastianFranze in https://github.com/shopware/shopware/pull/13868
- feat(product-analytics): Add user data consent to profile page by @SebastianFranze in https://github.com/shopware/shopware/pull/13863
- fix: scroll to checkbox if validation failed by @FlorianKe in https://github.com/shopware/shopware/pull/13341
- feat: enable store api routes caching by @h1k3r in https://github.com/shopware/shopware/pull/12370
- fix: add asset-css-postprocess-plugin to rewrite asset URLs in CSS by @jleifeld in https://github.com/shopware/shopware/pull/13994
- fix: product exports may get stuck permanently by @nguyenytran in https://github.com/shopware/shopware/pull/12977
- feat: Add cover image for videos by @alexdumea in https://github.com/shopware/shopware/pull/13718
- fix(snippets): Fix honorific prefixes by @marcelbrode in https://github.com/shopware/shopware/pull/13990
- fix: add a11y document support to order confirmation emails by @vintagesucks in https://github.com/shopware/shopware/pull/13869
- fix: document template inheritance for duplicated themes and headless by @vintagesucks in https://github.com/shopware/shopware/pull/13847
- refactor: improve admin loading performance by @jleifeld in https://github.com/shopware/shopware/pull/13798
- feat: Add support for compressed _criteria GET parameter by @h1k3r in https://github.com/shopware/shopware/pull/12476
- feat: add get method support to non mutating storeapi endpoints by @h1k3r in https://github.com/shopware/shopware/pull/12633
- feat: add support of ProductListingCriteria to compressed criteria parameter by @h1k3r in https://github.com/shopware/shopware/pull/13643
- fix: infinite loading spinner on quantity change by @FlorianKe in https://github.com/shopware/shopware/pull/13930
- fix(eslint): Allow nested feature declarations by @SebastianFranze in https://github.com/shopware/shopware/pull/13984
- feat: send email after password change by @FlorianKe in https://github.com/shopware/shopware/pull/13553
- feat: Allow disable search language analyzer via env variable by @tamvt in https://github.com/shopware/shopware/pull/13940
- fix: adding missing slot setting services by @quando1910 in https://github.com/shopware/shopware/pull/14035
- feat: hide tos checkbox optional by @FlorianKe in https://github.com/shopware/shopware/pull/13823
- fix: allow selecting read-only properties in import/export profiles by @vintagesucks in https://github.com/shopware/shopware/pull/14069
- feat: upgrade dive version. by @ffrank913 in https://github.com/shopware/shopware/pull/14088
- feat: add search bar to settings in admin by @gweiermann in https://github.com/shopware/shopware/pull/13927
- fix: fix mt-floating-ui visual bugs with major flag by @jleifeld in https://github.com/shopware/shopware/pull/13460
- fix: update tests with ChangeStorefrontCurrency() to accommodate 6.6 without ACCESSIBILITY_TWEAKS flag by @ravenokko in https://github.com/shopware/shopware/pull/14078
- fix: Fixed media upload in the cms image slider by @MartinKrzykawski in https://github.com/shopware/shopware/pull/14025
- fix: allow
CalculatedPricefields in order exports by @vintagesucks in https://github.com/shopware/shopware/pull/14081 - fix: migrate the correct delivery to primary_order_delivery_id by @schneider-felix in https://github.com/shopware/shopware/pull/14059
- fix: products with no purchase price by @DennisGarding in https://github.com/shopware/shopware/pull/14107
- feat: remove light intensity setting. by @ffrank913 in https://github.com/shopware/shopware/pull/14111
- feat: add loading screen to admin by @gweiermann in https://github.com/shopware/shopware/pull/13902
- fix: list bullet points and numbering invisible in wysiwyg editor by @nguyenquocdaile in https://github.com/shopware/shopware/pull/14090
- refactor: confirm term snippet by @FlorianKe in https://github.com/shopware/shopware/pull/14117
- fix: remove superfluous entity count validation in breadcrumb builder by @lacknere in https://github.com/shopware/shopware/pull/14093
- fix: Use correct collection for state machine state translation entities by @nickygerritsen in https://github.com/shopware/shopware/pull/14066
- fix: accessable shipping method label in offcanvas by @cyl3x in https://github.com/shopware/shopware/pull/14094
- fix: remove hard-code path from vite config (backport: 6.7.6.x) by @shopware-octo-sts-app[bot] in https://github.com/shopware/shopware/pull/14210
New Contributors
- @mdanierov made their first contribution in https://github.com/shopware/shopware/pull/13646
- @blakesaunders made their first contribution in https://github.com/shopware/shopware/pull/13623
- @gweiermann made their first contribution in https://github.com/shopware/shopware/pull/13837
- @Mugentoki made their first contribution in https://github.com/shopware/shopware/pull/13578
Full Changelog: https://github.com/shopware/shopware/compare/v6.7.5.1...v6.7.6.0
Get in touch
Discuss about decisions, bugs you might stumble upon, etc in our community discord. See you there ;)
- GHSA-6w82-v552-wjw2 - input validation of request parameters in account login page
Full changelog
See the UPGRADE.md for all important technical changes.
- GHSA-6w82-v552-wjw2 - fix: input validation of request paramteres in account login page
- GHSA-6w82-v552-wjw2 - input validation of request parameters in account login page
Full changelog
What's Changed
- GHSA-6w82-v552-wjw2 - fix: input validation of request paramteres in account login page
- fix: theme manager tabs not shown in 6.7 (backport: 6.7.5.x) by @shopware-octo-sts-app[bot] in https://github.com/shopware/shopware/pull/13786
Full Changelog: https://github.com/shopware/shopware/compare/v6.7.5.0...v6.7.5.1
- Removed Shopware\Core\Framework\Changelog namespace - adjust RELEASE_INFO and UPGRADE files manually
- Tax-free detection now handles B2B and B2C customers separately
- Robots.txt rendering with custom User-agent blocks and full standard support
- Multiple payment finalize calls via REPEATED_PAYMENT_FINALIZE feature flag
Full changelog
Features
Tax Calculation Logic
The tax-free detection logic if the cart changed to handle B2B and B2C customers separately.
Previously, enabling "Tax-free for B2C" in the country settings also affected B2B customers.
Now, tax rules are applied correctly based on the customer type.
Robots.txt configuration
The rendering of the robots.txt file has been changed to support custom User-agent blocks and the full robots.txt standard.
For a detailed guide on how to use the new features and extend the functionality, please refer to our documentation guide Extend robots.txt configuration.
Scheduled Task for cleaning up corrupted media entries
A new scheduled task media.cleanup_corrupted_media has been introduced.
It detects and removes corrupted media records, such as entries created by interrupted or failed file uploads that have no corresponding file on the filesystem.
API
Add the possibility to specify indexer in context
When you want to specify which indexer should run, you can add the EntityIndexerRegistry::EXTENSION_INDEXER_ONLY extension to the context as follows:
$context->addExtension(EntityIndexerRegistry::EXTENSION_INDEXER_ONLY,
new ArrayEntity([
ProductIndexer::STOCK_UPDATER // Only execute STOCK_UPDATER.
]),
);
When making a call to the Sync API, specify the required indexer in the header:
curl -X POST "http://localhost:8000/api/_action/sync" \
-H "indexing-only: product.stock" \
#...
Core
Improved Store API OpenAPI documentation with field descriptions
The OpenAPI schema generator for Store API endpoints now includes descriptions for entity fields, making it easier for developers to understand the available fields and their purposes.
Additionally, available associations for each entity are now automatically listed in the OpenAPI operation descriptions, showing developers which relationships can be loaded.
To add descriptions to fields in your custom entity definitions, use the setDescription() method:
(new ManyToOneAssociationField('group', 'customer_group_id',
CustomerGroupDefinition::class, 'id', false))
->addFlags(new ApiAware())
->setDescription('Customer group determining pricing and permissions')
Allow overwriting Doctrine wrapperClass on Primary/Replica setups
It's now possible to overwrite the wrapperClass of the Doctrine\DBAL\Connection instance.
This is useful if you want to use e.g. Doctrine MySQL Comeback to automatically reconnect if the MySQL connection is lost.
composer require facile-it/doctrine-mysql-come-back ^3.0
Then specify the wrapperClass in the .env file:
DATABASE_URL=mysql://root:root@database/shopware?driverOptions[x_reconnect_attempts]=5&wrapperClass=Facile\DoctrineMySQLComeBack\Doctrine\DBAL\Connection
Robots.txt parsing
A new Shopware\Storefront\Page\Robots\Parser\RobotsDirectiveParser has been introduced to parse robots.txt files. This new service provides improved error tracking and adds new events for better extensibility.
As part of this change, the constructor for Shopware\Storefront\Page\Robots\Struct\DomainRuleStruct is now deprecated for string parameters. You should use the new parser to create a ParsedRobots object to pass to the constructor instead.
new JWT helper
Added new Shopware\Core\Framework\JWT\SalesChannel\JWTGenerator and Shopware\Core\Framework\JWT\Struct\JWTStruct to build general structure for encoding and decoding JWT.
Added PHP 8.5 polyfill
The new dependency symfony/polyfill-php85 was added, to make it possible to already use PHP 8.5 features, like array_first and array_last
Removal of old changelog handling
As we changed how we process and generate changelogs the "old" changelog files are no longer needed.
Therefore, we removed all the internal code used to generate and validate them.
The whole Shopware\Core\Framework\Changelog namespace was removed.
The code is not needed anymore, you should adjust the RELEASE_INFO and UPGRADE files manually instead.
Deprecated the \Shopware\Core\Framework\Test\TestCaseHelper\ReflectionHelper
Refection has significantly improved in particular since PHP 8.1, therefore the Shopware\Core\Framework\Test\TestCaseHelper\ReflectionHelper was deprecated and will be removed in the next major release.
See below for the explicit replacements:
- $property = ReflectionHelper->getProperty(MyClass::class, 'myProperty');
+ $property = \ReflectionProperty(MyClass::class, 'myProperty');
- $method = ReflectionHelper->getMethod(MyClass::class, 'myMethod');
+ $method = \ReflectionMethod(MyClass::class, 'myMethod');
- $propertyValue = ReflectionHelper->getPropertyValue($object, 'myProperty');
+ $propertyValue = \ReflectionProperty(MyClass::class, 'myProperty')->getValue($object);
- $fileName = ReflectionHelper->getFileName(MyClass::class);
+ $fileName = \ReflectionClass(MyClass::class)->getFileName();
New constraint to check for existing routes
The new constraint \Shopware\Core\Framework\Routing\Validation\Constraint\RouteNotBlocked checks if a route is available or already taken by another part of the application.
Multiple payment finalize calls allowed
With the feature flag REPEATED_PAYMENT_FINALIZE, the /payment-finalize endpoint can now be called multiple times using the same payment token.
This behaviour will be the default in the next major release.
If the token has already been consumed, the user will be redirected directly to the finish page instead of triggering a PaymentException.
To support this behavior, a new consumed flag has been added to the payment token struct, which indicates if the token has already been processed.
Payment tokens are no longer deleted immediately after use. A new scheduled task automatically removes expired tokens to keep the payment_token table clean.
Added sanitized HTML tag support for app snippets
Added sanitized HTML tag support for app snippets. App developers can now use HTML tags for better formatting within their snippets. The sanitizing uses the basic set of allowed HTML tags from the html_sanitizer config, ensuring that security-related tags such as script are automatically removed.
App custom entity association handling
The behaviour creating associations with custom entities in apps changed.
Now an exception will be thrown if the referenced table does not exist, instead of creating a reference to the non-existing table.
To allow the schema updater to skip creating associations if the referenced table does not exist, improving flexibility and robustness during schema updates, a new optional attribute ignore-missing-reference was added to association types (one-to-one, one-to-many, many-to-one, many-to-many).
Example usage:
<one-to-many name="custom_entity" reference="quote_comment" ignore-missing-reference="true" store-api-aware="false" on-delete="set-null" />
Translatable product manufacturer links
The link property of the product manufacturer entity is now translatable.
Administration
URL restrictions for product and category SEO URLs
When creating a SEO URL for a product or category, the URL is now checked for availability. Before it was possible to override existing URLs like account or maintenance with SEO URLs. Existing URLs are now blocked to be used as SEO URLs.
Refactor filters for the newsletter recipients list.
We now use the <mt-select> instead administration/src/module/sw-newsletter-recipient/component/sw-newsletter-recipient-filter-switch.
Because of that, we deprecate these twig blocks:
sw_newsletter_recipient_list_sidebar_filter_status_not_setsw_newsletter_recipient_list_sidebar_filter_status_directsw_newsletter_recipient_list_sidebar_filter_status_opt_insw_newsletter_recipient_list_sidebar_filter_status_opt_out
These blocks will be removed in v6.8.0.0 without replacement. Use the parent blocks instead.
We also deprecate
administration/src/module/sw-newsletter-recipient/component/sw-newsletter-recipient-filter-switch which will be removed with v6.8.0.0 and
administration/src/module/sw-newsletter-recipient/page/sw-newsletter-recipient-list/index.js which will be private in v6.8.0.0.
Storefront
Language selector twig blocks
New extensible Twig blocks layout_header_actions_language_widget_content_inner and layout_header_actions_languages_widget_form_items_flag_inner have been added to the language selector to allow custom flag implementations.
context.token is no longer available in twig rendering context
The context.token variable is no longer available in twig rendering context to prevent potential security vulnerabilities. If you need to access the token, consider using alternative methods that do not expose it in the rendered HTML.
Usually inside the Twig storefront there is no need to handle the context token manually, as it is handled automatically via the session handling in the Storefront.
Added specific add-product-by-number template
The page_checkout_cart_add_product* blocks inside @Storefront/storefront/page/checkout/cart/index.html.twig are deprecated and a new template @Storefront/storefront/component/checkout/add-product-by-number.html.twig was added.
Instead of overwriting any of the page_checkout_cart_add_product* blocks inside @Storefront/storefront/page/checkout/cart/index.html.twig,
extend the new @Storefront/storefront/component/checkout/add-product-by-number.html.twig file using the same blocks.
Change:
{% sw_extends '@Storefront/storefront/page/checkout/_page.html.twig' %}
{% block page_checkout_cart_add_product %}
{# Your content #}
{% endblock %}
to:
{% sw_extends '@Storefront/storefront/component/checkout/add-product-by-number.html.twig' %}
{% block page_checkout_cart_add_product %}
{# Your content #}
{% endblock %}
Hosting & Configuration
Sales Channel Replace URL Command
A new sales-channel:replace:url command was added to replace the url of a sales channel.
bin/console sales-channel:replace:url <previous_url> <new_url>
Changed CACHE_CONTEXT_HASH_RULES_OPTIMIZATION feature flag to CACHE_REWORK
The CACHE_CONTEXT_HASH_RULES_OPTIMIZATION feature flag was renamed to CACHE_REWORK to better reflect its purpose, as more changes will be toggled by that flag, to enable the new cache behaviour.
To enable the new cache behaviour, set the CACHE_REWORK feature flag to 1 in your .env file:
Before:
CACHE_CONTEXT_HASH_RULES_OPTIMIZATION=1
Now:
CACHE_REWORK=1
To not break plugins that might check for the old flag unnecessarily, the old flag will be kept until the next major release, however, the flag has no effect anymore.
Staging configuration
The disabled delivery check in MailSender now checks for the Staging Mode core.staging, the shopware.staging.mailing.disable_delivery configuration and the config setting shopware.mailing.disable_delivery.
Regardless of mode the config setting shopware.mailing.disable_delivery always allows disabling mail delivery.
Critical fixes
Product weight precision
The database column product.weight now uses DECIMAL(15,6) instead of DECIMAL(10,3) to keep gram-based measurements accurate when values are stored in kilograms.
Full list of changes
- refactor: Deprecate the
Shopware\Core\Framework\Test\TestCaseHelper\ReflectionHelperby @aragon999 in https://github.com/shopware/shopware/pull/13063 - fix: Remove unnecessary PHPStan Symfony command feature by @mitelg in https://github.com/shopware/shopware/pull/13192
- fix(theme): ensure theme config directory is created by @BrocksiNet in https://github.com/shopware/shopware/pull/13181
- fix: respect errorRoute parameter in captcha failure handler by @BrocksiNet in https://github.com/shopware/shopware/pull/13158
- fix: improve select result list sometimes not loading the next page when scrolling to the bottom by @janpetto in https://github.com/shopware/shopware/pull/13037
- fix: search in import/export profile mapping modal by @vintagesucks in https://github.com/shopware/shopware/pull/13069
- feat: remove datepicker wrapper by @alastair-simon in https://github.com/shopware/shopware/pull/12948
- refactor: cleanup after-sales styles by @larskemper in https://github.com/shopware/shopware/pull/12924
- fix: #12525 improve url assembling in listing.plugin by @ROBJkE in https://github.com/shopware/shopware/pull/12553
- fix: tax free config by @FlorianKe in https://github.com/shopware/shopware/pull/12820
- fix: Apply default indentation for composer.json by @mitelg in https://github.com/shopware/shopware/pull/13213
- fix: update dive with depth buffer fix. by @ffrank913 in https://github.com/shopware/shopware/pull/13209
- fix: Improve PHPStan bootstrapping by @mitelg in https://github.com/shopware/shopware/pull/13202
- fix: Add check for supported types by @alexdumea in https://github.com/shopware/shopware/pull/13108
- feat: Update PHPStan and its plugins (10-2025) by @mitelg in https://github.com/shopware/shopware/pull/12971
- feat: Apply new screen design by @dgrothaus-sw in https://github.com/shopware/shopware/pull/13191
- fix: Fix document generation error messages by @lacknere in https://github.com/shopware/shopware/pull/13214
- feat(product-analytics): Don't send multiple page change events when query parameters change by @SebastianFranze in https://github.com/shopware/shopware/pull/13203
- fix: invalid wording in sw-order-general-info component by @gecolay in https://github.com/shopware/shopware/pull/13239
- fix: List/price percentage ratio dynamic product groups not working by @nguyenytran in https://github.com/shopware/shopware/pull/13012
- feat: Add save media modal by @quynhnguyen68 in https://github.com/shopware/shopware/pull/12146
- fix: Increase precision of product weights by @nguyenytran in https://github.com/shopware/shopware/pull/13245
- refactor(tests): simplify cache clearing, retry for needed cookies by @BrocksiNet in https://github.com/shopware/shopware/pull/13174
- fix: mark product number as required field by @wannevancamp in https://github.com/shopware/shopware/pull/13269
- test: admin sales channel visual test by @ocavli in https://github.com/shopware/shopware/pull/13252
- test: update acceptace test readme by @ocavli in https://github.com/shopware/shopware/pull/13264
- fix: Remove wrong assert assumption and optimize array types by @mitelg in https://github.com/shopware/shopware/pull/13253
- style: adjust sw-grid styles to use meteor tokens by @larskemper in https://github.com/shopware/shopware/pull/13276
- fix: clarify demo data command error message by @tripleelectric in https://github.com/shopware/shopware/pull/13221
- fix: Special Characters "/" in Search Not Working Even When Added as … by @tamvt in https://github.com/shopware/shopware/pull/13188
- fix: Add addtional information to probably breaking change by @mitelg in https://github.com/shopware/shopware/pull/13288
- feat: Add generate blocks command to composer.json by @M-arcus in https://github.com/shopware/shopware/pull/13281
- refactor: Various PHP code improvements by @aragon999 in https://github.com/shopware/shopware/pull/13286
- feat: cms content override indicator by @bschulzebaek in https://github.com/shopware/shopware/pull/12688
- feat: allow transaction finalize called multiple times by @FlorianKe in https://github.com/shopware/shopware/pull/13014
- feat: Display username in the import/export table by @M-arcus in https://github.com/shopware/shopware/pull/13279
- Update cms-element-product-description-reviews.html.twig by @cramytech in https://github.com/shopware/shopware/pull/6487
- feat: acceptance test for product analytics by @frobel in https://github.com/shopware/shopware/pull/12992
- fix: Cheapest price of variant product applies across sales channels by @tamvt in https://github.com/shopware/shopware/pull/13206
- fix: Reset canonical product id on product clone through the administration by @M-arcus in https://github.com/shopware/shopware/pull/13292
- feat: Sort sales channel selection options by name in administration by @M-arcus in https://github.com/shopware/shopware/pull/13293
- fix: Use specific staging config check for mail delivery by @M-arcus in https://github.com/shopware/shopware/pull/13280
- style: convert first run wizard to meteor tokens by @larskemper in https://github.com/shopware/shopware/pull/13291
- fix: improve missing entity error message in update-only imports by @vintagesucks in https://github.com/shopware/shopware/pull/13297
- fix: increase precision of kg unit to match database schema by @vienthuong in https://github.com/shopware/shopware/pull/13314
- feat: add a unique user ID to product analytics by @adrianles in https://github.com/shopware/shopware/pull/12913
- build: bump the 12.0.0 ats version by @hienha-sw in https://github.com/shopware/shopware/pull/13243
- fix: Always overwrite currency id based on header by @keulinho in https://github.com/shopware/shopware/pull/13304
- fix: positioning of partial review stars by @vintagesucks in https://github.com/shopware/shopware/pull/13325
- feat: Add new console command to replace the URL of a sales channel by @M-arcus in https://github.com/shopware/shopware/pull/13282
- feat: custom fingerprint compare by @AydinHassan in https://github.com/shopware/shopware/pull/13271
- feat: Empty Cart product add by @seggewiss in https://github.com/shopware/shopware/pull/13300
- build: bump ats version to 12.0.1 by @hienha-sw in https://github.com/shopware/shopware/pull/13344
- build: bump ats version to 12.0.1 by @hienha-sw in https://github.com/shopware/shopware/pull/13342
- fix: deprecate recurring data struct properties by @cyl3x in https://github.com/shopware/shopware/pull/13326
- fix: change sidebars min width by @dfrancos-hub in https://github.com/shopware/shopware/pull/13301
- fix: fix measurement system migration test by @vienthuong in https://github.com/shopware/shopware/pull/13375
- feat: Allow selecting pack unit for essential characteristics of products by @nguyenquocdaile in https://github.com/shopware/shopware/pull/13382
- fix: guest checkout change default address by @FlorianKe in https://github.com/shopware/shopware/pull/13345
- fix: review rating stars voiceover by @jozsefdamokos in https://github.com/shopware/shopware/pull/13390
- fix: Modify import statements and use raw suffix by @alexdumea in https://github.com/shopware/shopware/pull/13317
- feat: Add v6.7.30 and v6.7.4.0 releases by @kermie in https://github.com/shopware/shopware/pull/13354
- fix: storefront missing system services (Storefront Analytics / Google Analytics) by @gecolay in https://github.com/shopware/shopware/pull/13401
- fix: releases.json was not a valid JSON by @tinect in https://github.com/shopware/shopware/pull/13405
- fix: Introduce generic ID structure type to reduce ID checks by @mitelg in https://github.com/shopware/shopware/pull/13334
- fix: import export profile search by technical name by @jozsefdamokos in https://github.com/shopware/shopware/pull/13383
- feat: convert to Meteor components in dynamic field renderer by @jleifeld in https://github.com/shopware/shopware/pull/13185
- refactor: replace imitation token with JWT by @mstegmeyer in https://github.com/shopware/shopware/pull/12828
- fix(admin): settings storefront icon size by @FlorianKe in https://github.com/shopware/shopware/pull/13400
- feat: remove flag icons by @BrocksiNet in https://github.com/shopware/shopware/pull/13313
- fix: Storefront route usage in Core by @mstegmeyer in https://github.com/shopware/shopware/pull/13379
- test: update currency-price assertion with formatPrice() function by @ravenokko in https://github.com/shopware/shopware/pull/13356
- fix: correct favicon path for administration module by @jleifeld in https://github.com/shopware/shopware/pull/13392
- test: unit test ContextGatewayControllerTest is flaky by @nfortier-shopware in https://github.com/shopware/shopware/pull/13442
- fix: error messages when removing cms sections by @taltholtmann in https://github.com/shopware/shopware/pull/13428
- fix: Allow html tags in app snippets by @MartinKrzykawski in https://github.com/shopware/shopware/pull/13436
- fix: guest behavior for address edit by @mstegmeyer in https://github.com/shopware/shopware/pull/13395
- fix: blocked shipping method not switched by @FlorianKe in https://github.com/shopware/shopware/pull/13435
- feat: Allow specific indexers in EntityIndexerRegistry by @NielDuysters in https://github.com/shopware/shopware/pull/8929
- fix: app lifecycle with entity association by @rittou in https://github.com/shopware/shopware/pull/13357
- feat: enable Meteor text editor with feature flag in administration by @jleifeld in https://github.com/shopware/shopware/pull/13102
- fix: fix wrong display type of svgs by @jleifeld in https://github.com/shopware/shopware/pull/13471
- fix: Fix theme manager detail page in 6.8 by @lukasrump in https://github.com/shopware/shopware/pull/13316
- feat: robots directive, full robots tag support by @BrocksiNet in https://github.com/shopware/shopware/pull/12998
- fix: Remove superfluous service injections by @aragon999 in https://github.com/shopware/shopware/pull/13463
- fix: center empty state icon in cross selling page by @nguyenquocdaile in https://github.com/shopware/shopware/pull/13468
- fix: Cleanup release info file by @mitelg in https://github.com/shopware/shopware/pull/13437
- test: add RuleBuilderCreate test by @GitEvil in https://github.com/shopware/shopware/pull/6803
- fix: german mail snippets by @lacknere in https://github.com/shopware/shopware/pull/13480
- fix: dont expose context token in twig by @keulinho in https://github.com/shopware/shopware/pull/13272
- fix: bump ats to 12.1.3 by @yusufttur in https://github.com/shopware/shopware/pull/13506
- fix: bump ats to 12.1.4 by @yusufttur in https://github.com/shopware/shopware/pull/13538
- fix: remove deprecated method ignore from GoogleStorageFactory by @shyim in https://github.com/shopware/shopware/pull/13544
- fix: Trim spaces from promotion codes by @aragon999 in https://github.com/shopware/shopware/pull/13508
- fix: Add missing tooltip on product images in category listing by @diyaa97daoud in https://github.com/shopware/shopware/pull/13425
- feat: add a service to check for reserved router URLs by @dgrothaus-sw in https://github.com/shopware/shopware/pull/13309
- fix: bump ats to 12.1.5 by @vanpham-sw in https://github.com/shopware/shopware/pull/13557
- fix: rule area updater updates many to many associations by @keulinho in https://github.com/shopware/shopware/pull/13533
- fix: aria-controls attribute for shipping cost collapse by @quisse in https://github.com/shopware/shopware/pull/13547
- fix: Add mt-popover-deprecated wrapper to ignored path by @alexdumea in https://github.com/shopware/shopware/pull/13477
- fix: FormFieldToggle plugin breaking with value="false" by @damian-pastorini in https://github.com/shopware/shopware/pull/13520
- fix(navbar): Navbar won't hide when passing an item without children by @marcelbrode in https://github.com/shopware/shopware/pull/13525
- feat: Added corrupted media cleanup scheduled task by @MartinKrzykawski in https://github.com/shopware/shopware/pull/13535
- fix: attribute-value for data-magnifier-options by @digitalgopnik in https://github.com/shopware/shopware/pull/13427
- test: flow validation test by @GitEvil in https://github.com/shopware/shopware/pull/8784
- fix: Add streamIds field to Elasticsearch product mapping by @timeo-schmidt in https://github.com/shopware/shopware/pull/13153
- fix: prevent parameter parsing in criteria titles by @astehlik in https://github.com/shopware/shopware/pull/13573
- feat: improve associations documentation in OpenAPI Schema |
store-apicontext by @mkucmus in https://github.com/shopware/shopware/pull/13514 - fix: audit issue with glob and js-yaml by @patzick in https://github.com/shopware/shopware/pull/13580
- fix: context token in twig by @keulinho in https://github.com/shopware/shopware/pull/13502
- fix(cross-selling): Fix transition speed of cross-selling element and make it configurable by @marcelbrode in https://github.com/shopware/shopware/pull/13575
- fix: fix multiple sw-single-select issue by @jleifeld in https://github.com/shopware/shopware/pull/13488
- feat: add media schema type to LineItem cover property by @mdanilowicz in https://github.com/shopware/shopware/pull/13484
- fix: salutation autocomplete (a11y) by @mstegmeyer in https://github.com/shopware/shopware/pull/13576
- fix: Adjust EOL because of skipped major release by @keulinho in https://github.com/shopware/shopware/pull/13585
- fix: condition list of restricted rules by @mstegmeyer in https://github.com/shopware/shopware/pull/13572
- refactor: payment tokens to new JWT structure by @mstegmeyer in https://github.com/shopware/shopware/pull/13519
- feat: Change manufacturer link to LongTextField and make translatable by @flkasper in https://github.com/shopware/shopware/pull/13542
- feat: ADRs for updated http caching strategy by @h1k3r in https://github.com/shopware/shopware/pull/12541
- fix: failing AppAsyncPaymentHandlerTest after JWT refactoring by @mstegmeyer in https://github.com/shopware/shopware/pull/13602
- fix: Fix issue that deleting variants in the variant overview does not consider its entries in product_configurator_setting by @tamvt in https://github.com/shopware/shopware/pull/13495
- refactor: Replace email recipients filters with mt select by @DennisGarding in https://github.com/shopware/shopware/pull/13536
- fix: Allow boolean field types in SCSS validation by @Phil23 in https://github.com/shopware/shopware/pull/13584
- fix: expectException instead of catch by @mstegmeyer in https://github.com/shopware/shopware/pull/13608
- fix: remove html from plain text mail templates by @DennisGarding in https://github.com/shopware/shopware/pull/13589
- feat: allow overwriting wrapperClass on primary/replica mode by @shyim in https://github.com/shopware/shopware/pull/13410
- fix: robots.txt on storefront domains by @keulinho in https://github.com/shopware/shopware/pull/13606
- fix: document search on order details page by @jozsefdamokos in https://github.com/shopware/shopware/pull/13485
- test: add product review visual test by @yusufttur in https://github.com/shopware/shopware/pull/13607
- feat: handle description for $ref schemas by @mkucmus in https://github.com/shopware/shopware/pull/13617
- feat: add filters to product review module by @shyim in https://github.com/shopware/shopware/pull/13595
- fix: Changed default sorting for export to autoIncrement and createdAt if available by @JoshuaBehrens in https://github.com/shopware/shopware/pull/12846
- fix: composer removal on uninstall with deactivate by @mstegmeyer in https://github.com/shopware/shopware/pull/13624
- fix: number field in individual promotion code generation modal by @mstegmeyer in https://github.com/shopware/shopware/pull/13592
New Contributors
- @janpetto made their first contribution in https://github.com/shopware/shopware/pull/13037
- @ROBJkE made their first contribution in https://github.com/shopware/shopware/pull/12553
- @tripleelectric made their first contribution in https://github.com/shopware/shopware/pull/13221
- @cramytech made their first contribution in https://github.com/shopware/shopware/pull/6487
- @hienha-sw made their first contribution in https://github.com/shopware/shopware/pull/13243
- @kermie made their first contribution in https://github.com/shopware/shopware/pull/13354
- @NielDuysters made their first contribution in https://github.com/shopware/shopware/pull/8929
- @diyaa97daoud made their first contribution in https://github.com/shopware/shopware/pull/13425
- @quisse made their first contribution in https://github.com/shopware/shopware/pull/13547
- @digitalgopnik made their first contribution in https://github.com/shopware/shopware/pull/13427
- @timeo-schmidt made their first contribution in https://github.com/shopware/shopware/pull/13153
- @flkasper made their first contribution in https://github.com/shopware/shopware/pull/13542
Full Changelog: https://github.com/shopware/shopware/compare/v6.7.4.2...v6.7.5.0
Minor fixes and improvements.
Full changelog
See the UPGRADE.md for all important technical changes.
- #13416 - Improve shop id verification when used with atomic deployments
- #13305 - Fix positioning of partial review stars
- #13387 - Add missing system services (Storefront Analytics / Google Analytics)
- #13434 - Fix: blocked shipping method not switched
- #13321 - Fix: changing the default address during guest checkout results in a 403 Forbidden error
- Password recovery tokens not expiring on email change (GHSA-2w46-vq8h-98vh)
Full changelog
See the UPGRADE.md for all important technical changes.
- GHSA-2w46-vq8h-98vh - fix: password recovery not expiring on email change
- Password recovery tokens not expiring on email change (GHSA-2w46-vq8h-98vh)
Full changelog
See the UPGRADE.md for all important technical changes.
- GHSA-2w46-vq8h-98vh - fix: password recovery not expiring on email change
Minor fixes and improvements.
Full changelog
See the UPGRADE.md for all important technical changes.
- #12145 - Add custom action in media sidebar
- #12165 - Fix vite bundling for Symfony bundles
- #12233 - Allow granular inheritance for slot_config overrides
- #12349 - Fix plugin config default values
- #12498 - Update health check API
- #12672 - Improve error output of app loader in CI environment
- #12723 - Remove not needed shipping detail admin SCSS @aragon999
- #12724 - Properly define the padding of the admin modal @aragon999
- #12755 - Do not use the Symfony validator to validate the honeypot captcha @aragon999
- #12756 - Fix Cache Cookie Handling to prevent cache poisoning
- #12808 - Add gitignore when creating a plugin @wannevancamp
- #12832 - Fix deletion and sorting of log events listing in the administration
- #12833 - Fix proper display of the administrator switch in the user create @wannevancamp
- #12834 - Fix media search navigation
- #12835 - Replace latest sw-switch-field component with bool input @wannevancamp
- #12836 - Fix SalesChannelContext::state to reset to previous state @JoshuaBehrens
- #12837 - Add more Twig blocks to product box to reduce amount of code to be copied over @JoshuaBehrens
- #12839 - Add option for FormAutoSubmit to trigger form validation @JoshuaBehrens
- #12865 - Add aria-label to CMS image link @lacknere
- #12869 - Improve shipping and payment cart blocking errors @gecolay
- #12892 - Improved error handling when a sales channel cannot be deleted because it is still assigned to other entities
- #12925 - Add product available sorting criteria option @lacknere
- #12932 - Only consider filterable discount packages @aragon999
- #12947 - Improve SCSS color validation
- #12986 - Fix sidebar width persistence issue when collapsed through button
- #13007 - Add message queue message size limit config option @gecolay
- #13011 - Add admin notification transformers
- #13070 - Add possibility to set
fetchpriority="high"on cms image elements @aragon999 - #13082 - Add events when fetching entities for the sitemap @aragon999
- #13087 - Fix IAP decoding with old OpenSSL versions
- #13091 - Replace
$resulttype with nativeCmsPageCollectiontype in theCmsPageLoadedEvent@aragon999 - #13094 - Fixed 3D light intensity
- #13146 - Fix webhook cleanup for queued webhook event logs
- #13156 - Fix flaky storefront test for active route parameters
- #13161 - Respect the
COMPOSER_PLUGIN_LOADERenvironment variable in thebin/shopwarecli command @aragon999 - #13177 - Only display last search index date
- 12292 - Fix issue with loading seo url preview
- 12411 - Load product streams over opensearch
- 12783 - Search result should include products when parent product number matches
- 12805 - Clearance sale (stock handling) is ignored as soon as a product is in the cart
- 13127 - Fix cookie offcanvas link not working when opened from navigation offcanvas
- 4307 - Fix Google Consent Mode v2 default and update implementation
- 9451 - Google reCAPTCHA loading only if cookie accepted
- 9451 - Interactive offcanvas cookies
- https://github.com/shopware/shopware/issues/12823 - Fix session locking during kernel reboot on plugin state change
- https://github.com/shopware/shopware/issues/6409 - Separate Vimeo and YouTube cookie consent
- https://github.com/shopware/shopware/pull/13079 - Fix CacheClearer global locking
Minor fixes and improvements.
Full changelog
See the UPGRADE.md for all important technical changes.
- #11055 - Add global styling for blockquotes
- #11215 - Restore ResetInterface support in long-running runtimes @mateuszfl
- #11484 - Don't check for canonical SEO Urls when no path info given during SEO URL creation @M-arcus
- #11580 - Increased minimum required version of MySQL database
- #11580 - Symfony components updated
- #11766 - Fix boolean fields in theme config
- #11803 - Fix advanced prices for fixed item price discount
- #11823 - optimize fetching product properties
- #11830 - Fix display of line item taxes with tax provider
- #11838 - Fix recursive cart lock usage
- #11839 - Fix duplicate address display in sw-order-detail
- #11855 - Fix removal of composer plugins
- #11967 - Fix zoom functionality to prevent a large window
- #12029 - Fix custom fields with same names as foreign keys
- #12209 - Allow docx file extension
- #12225 - Fix invoice empty pages @lacknere
- #12464 - Fix initialization of DiscountCampaignStruct and add additional properties
- #12756 - Fix Cache Cookie Handling to prevent cache poisoning
- #7156 - Fix API aware flag for proxied requests
- #7238 - Update SwitchContextEvent @PheysX
- #10707 - Fix Elasticsearch Datetime format
- #11001 - Show relevant products without previews when searching @tinect
- #11074 - Fix admin es search for document number does not return any result
- #11097 - Fix wrong customer context on login if entry from sales_channel_api_context is expired
- #11528 - Show correct exception when updating an entity with a foreign key constraint fails
- #11550 - Fix inconsistent seoUrls for cross-selling products
- #11619 - Fix SeoUrl generate database-error when the url changes
- #11654 - Fixing document squished line item listing
- #11800 - fix overwrite slot config
- #8018 - Move Search config loader class to Core bundle
- #8018 - Use minimal search term length in config tables
- #8584 - Error when trying to remove "Main category" for product
- #12979 - compatibility with OpenSearch 3.x
- Media visibility restriction bypass (GHSA-m895-2hj3-8cg9)
- CSV export sensitive data exposure (GHSA-27c9-vp3w-6ww8)
- Order invoice SSRF (GHSA-3cpp-fv95-mpr5)
Full changelog
See the UPGRADE.md for all important technical changes.
- GHSA-m895-2hj3-8cg9 - fix: Reading media entities by aggregating fields individually bypasses MediaVisibilityRestrictionSubscriber
- GHSA-27c9-vp3w-6ww8 - fix: Exposure of sensitive user information via CSV export mapping
- GHSA-3cpp-fv95-mpr5 - fix: Server-Side Request Forgery (SSRF) - order invoice
- GHSA-6wh5-mw9h-5c3w - fix: Path traversal via Plugin upload
- GHSA-r2vg-hvjm-fg38 - fix: Customer Orders can be canceled, even if refunds are disabled
- shopware/shopware#12576 - getAllCodes returns only string array
- shopware/shopware#12075 - Admin es search for "document number" doesn't return any results
- shopware/shopware#12363 - missing product rule filter
- shopware/shopware#12472 - cast XML config values for Length constraint to int to prevent type errors
- shopware/shopware#12489 - deletion of active customer address
- shopware/shopware#12979 - compatibility with OpenSearch 3.x
- Media visibility restriction bypass (GHSA-m895-2hj3-8cg9)
- CSV export sensitive data exposure (GHSA-27c9-vp3w-6ww8)
- Order invoice SSRF (GHSA-3cpp-fv95-mpr5)
Full changelog
See the UPGRADE.md for all important technical changes.
- GHSA-m895-2hj3-8cg9 - fix: Reading media entities by aggregating fields individually bypasses MediaVisibilityRestrictionSubscriber
- GHSA-27c9-vp3w-6ww8 - fix: Exposure of sensitive user information via CSV export mapping
- GHSA-3cpp-fv95-mpr5 - fix: Server-Side Request Forgery (SSRF) - order invoice
- GHSA-6wh5-mw9h-5c3w - fix: Path traversal via Plugin upload
- GHSA-r2vg-hvjm-fg38 - fix: Customer Orders can be canceled, even if refunds are disabled
- #6912 - fix: require with minimum-stability stable (fixes: #6912) (#6914)
- #6960 - ci: skip downstreams in case of no write perms (fixes: #6960) (#6985)
- #9031 - ci: reenable 6.6.0.0 update (fixes #9031)[6.6.x] (#9248)
- #9851 - feat: implement event on Sitemap Generation, closes #9851 [6.6.x] (#9968)
- Commands to schedule and disable scheduled tasks
- Design tokens in smart bar and review module
- Dark mode support for sidebar and select components
Full changelog
See the UPGRADE.md for all important technical changes.
- #10220 - Only consider product rule ids in HTTP cache key generation @aragon999
- #10529 - Simplify personal company fields @aragon999
- #10737 - Serialization cart size check
- #10935 - Check all form attributes in js form plugins @gecolay
- #11055 - Add global styling for blockquotes
- #11163 - Cache default category levels
- #11414 - Improved language settings UI
- #11459 - Add constants to global Shopware object @lacknere
- #11526 - Fix SCSS Valiator to save original color functions
- #11543 - Fix cart error message translation in store api @gecolay
- #11557 - Add MediaEntity to ResolveRemoteThumbnailUrlExtension @scarbous
- #11646 - fix price calculation runs twice
- #11721 - Deleting properties fails without error popup when property values are still in use @nguyenquocdaile
- #11766 - Fix boolean fields in theme config
- #11855 - Fix removal of composer plugins
- #11872 - Compatbile with symfony/validator 7.3
- #11911 - remove media data when sync product
- #11945 - Only show folder categories if they have children @aragon999
- #11962 - Fix promotion discount entity property initialization error in shopping cart
- #11984 - Add Design Tokens to the Review module
- #11984 - Fix alignment of review stars
- #11999 - Update OpenSearch in tests @tinect
- #12029 - Fix custom fields with same names as foreign keys
- #12034 - Make product of OrderLineItem api aware @aragon999
- #12105 - Add natural sorting for property option list @nguyenquocdaile
- #12116 - Add a crud permission shortcut to manifest
- #12124 - Optimize navbar focus and toggle @lacknere
- #12128 - fix order entities in search preferences
- #12129 - Fix app user id admin privileges
- #12133 - Update sales channel context after switching
- #12142 - Consider landing page assignments in CMS page list @lacknere
- #12173 - Allow docx file extension
- #12187 - Remove load expensive administration order sorting @gecolay
- #12192 - Remove unused and unnecessary associations from administration order list @gecolay
- #12193 - Add
skipConfigurator&skipCmsPagequery parameter to ProductDetailRoute @gecolay - #12198 - Add criteria
excludesproperty @gecolay - #12219 - Added missing 30 days period for export cleanup @lx-wnk
- #12224 - Fix media thumbnail generation with null media thumbnail size @gecolay
- #12252 - Fix order creation page reload during confirmation dialog when clicking save order button
- #12262 - Recover stuck scheduled tasks
- #12314 - Add ScheduledTaskMessageInterface @gecolay
- #12319 - Add extension API handler to retrive the current view router path
- #12326 - Add guest login functionality to OrderRoute
- #12334 - Change CMS to show element type @amenk
- #12351 - Fix customer profile account type forced to commercial with company signup form
- #12361 - Fix missing promotion product rule select
- #12394 - Adjust line height of sw-label to match the mt-label line height @aragon999
- #12418 - Fix initialization of DiscountCampaignStruct and add additional properties
- #12436 - Fix inherited switch value @lacknere
- #12577 - Fix install lock creation on failure
- #12610 - Clarify integration documentation @amenk
- #12639 - Add missing refreshTokenTtl context field to administration template @gecolay
- #12642 - Optimized performance on 3D viewer canvases
- #12654 - Fixed model placement in 3D Viewer
- #12655 - Decreased camera's near clipping distance in 3D viewer
- #12757 - Implemented mt-empty-stage component
- #6749 - Shop ID change suggestion modal
- #7156 - Fix API aware flag for proxied requests
- #9387 - Added shared indexes to the order tables
- #11097 - Fix wrong customer context on login if entry from sales_channel_api_context is expired
- #11842 - Fix customer registration address validation
- #12074 - Apply search score as fallback sort criteria on searching
- #12159 - Fix promotion exclusion for fixed delivery discounts
- #12182 - Fix intra community electronic invoice
- #12296 - Improve RuntimeException for getSchema on store API
- #12354 - Warn in rules when DPG indexing is disabled
- #12398 - Add env var for readonly filesystem support
- #12430 - Fix cart price initialization in shipping method price matrix settings
- #12433 - Fix ES index language inheritance issue
- #12573 - Extract url encoder utility
- #12600 - Fix default shipping and billing address reset on cart deletion
- #5882 - Fix customer address name field length mismatch
- #6652 - Allow Store-API search endpoints to set a limit again
- #7422 - Remove global controllerName and controllerAction variables from templates
- #9451 - Add cookie hash to cookie groups API response
- #9451 - Add request to cookie event
- #9451 - Refactor providing of cookies
- #9835 - Remove unnecessary default rules
- Ocarthon - Interpret checkbox custom fields values as booleans @Ocarthon
- #12154 - fix: expose one port for admin watcher, fixes #12154 (#12161)
- #12188 - Implement lint translation files command
Minor fixes and improvements.
Full changelog
We've fixed the following issues
- Properly escape active route params (GHSA-9v82-vcjx-m76j)
Full changelog
This security release fixes one security issue of severity high and one regular issue
- Command to download and install translations
- Storefront routes without prefix support
- Soft purge HTTP cache functionality
Full changelog
See the UPGRADE.md for all important technical changes.
- #10491 - Implemented a command to download and install translation
- #10528 - Remove superfluous vat-id block from
address-form.html.twig@aragon999 - #10530 - Allow admininistration scripts being provided by bundles @JoshuaBehrens
- #10556 - min search term is now configurable
- #10721 - Properly align logout link with icon @aragon999
- #10751 - Add search sorting for live search
- #10866 - Allow Storefront routes without prefix
- #10870 - Improve basic captcha accessibility
- #10878 - Fix order version for determining credit notes when creating credit notes @jgeramb
- #10959 - Use createdAt column as default for product list sort @gecolay
- #11083 - Reduce event bus usage for AddCacheTagEvent @gecolay
- #11108 - AR Placement
- #11139 - refresh measurement units
- #11167 - category path does not display
- #11188 - Reset UpdatedByField for updates via API
- #11191 - Implement soft purge HTTP cache functionality
- #11202 - Change class constants to self classes @M-arcus
- #11205 - Deprecated EntityDefinition constructor @aragon999
- #11215 - Restore ResetInterface support in long-running runtimes @mateuszfl
- #11222 - Update DBAL to 4.3.1
- #11223 - Copy app snippets after system language change
- #11282 - add cart rule loader extension event
- #11297 - Replace AddCacheTagEvent's with CacheTagCollector addTag @gecolay
- #11314 - config endpoints cached indefinitely
- #11327 - Add missing context config setting access optional chaining @gecolay
- #11341 - Correctly delete bearerAuth cookie from base path in administration @gecolay
- #11373 - Fix sidebar SDK handlers in Meteor page
- #11391 - Add missing ApiAware flag to CmsBlock & CmsSection id's @gecolay
- #11409 - Add missing timezone option for TimeRangeRule @gecolay
- #11410 - Allow child classes for getting extension of type
- #11417 - Fix media thumbnail sizes with mediaThumbnailSizeId @gecolay
- #11466 - Allow for LineItemFactoryHandler decoration
- #11485 - Skip persisting admin snippets for non-existing locales
- #11491 - Remove FK delete exception handler
- #11492 - Fix ThemeCompiler side effects @gecolay
- #11510 - allow configuring the minimum search term length
- #11515 - Fix reset active apps after app deactivation
- #11521 - fix: improve check for visibility parameter check, fixes #11521 (#11565)
- #11551 - Increased minimum required version of MySQL database
- #11551 - Symfony components updated
- #11566 - Add Design Tokens to the Smart Bar
- #11578 - Add dark mode support to sidebar
- #11582 - Added dark mode support to select components
- #11583 - Fix state machine history FK constraint to integration
- #11599 - Change createdComponent back to being sync
- #11604 - Copy context rules to ESI request context
- #11608 - Add app user ID header and fix domain exception patterns
- #11633 - Fix mediaThumbnailSizeId not null in MediaThumbnailEntity @gecolay
- #11636 - Fix service menu wrap @lacknere
- #11650 - Fix ScriptLoader loading invalid cache paths @gecolay
- #11653 - Add aria-label to image slider links @M-arcus
- #11670 - Add commands to schedule and disable scheduled tasks @M-arcus
- #11702 - sorting of properties
- #11725 - Fix guest logout manipulation possibility
- #11726 - Add cart data to the symfony profiler @aragon999
- #11730 - Fix CMS block slot config error highlighting @lacknere
- #11731 - Fix login page redirect parameters @lacknere
- #11739 - Stale cache over queue
- #11748 - Improve property group loading performance
- #11759 - Add Dark Mode support to modals
- #11768 - Fix CMS content slot overrides for modules and languages
- #11769 - Input quantity for extended prices incorrect @nguyenquocdaile
- #11773 - Cart persistence behaviour
- #11778 - Opimize CMS create wizard page type selection spacing @lacknere
- #11781 - Load all category levels for current path
- #11782 - Fix advanced prices for fixed item price discount
- #11783 - Adjust MatrixElement extends Struct for StoreApi @gecolay
- #11785 - Remove assign override of MediaThumbnailEntity @gecolay
- #11788 - Fix advanced prices for fixed item price discount
- #11792 - Event interfaces for extension events
- #11798 - Download translations to private filesystem
- #11804 - Fix display of line item taxes with tax provider
- #11806 - Fix duplicate address display in sw-order-detail
- #11822 - Fix CMS block component rendering @lacknere
- #11823 - optimize fetching product properties
- #11828 - Fix recursive cart lock usage
- #11832 - Added Design Tokens to the dashboard
- #11852 - Remove superfluous overrides of id methods in entities @gecolay
- #11866 - Load all hookable entities dynamically by checking shopware.entity.hookable tag
- #11867 - Fix webhook deactivation on failure
- #11874 - Enable sidebar apps in cms detail page
- #11906 - Fix forwarding after login
- #11915 - Allow autoconfigure attribute on attribute entities
- #11916 - Fix zoom functionality to prevent a large window
- #11944 - Make navbar template extendable @aragon999
- #11955 - Fix sidebar renderer width reset on close
- #11956 - Add Design Tokens to sw-switch
- #11974 - Add Design Tokens to grid related components
- #11974 - Add Design Tokens to the Tabs Component
- #11986 - Add Design Tokens to help center and shortcut overview
- #11986 - Add Design Tokens to the tooltip
- #11987 - Fix storage names of category runtime fields @aragon999
- #12023 - Add loading of active category in category tree on change @lacknere
- #12037 - Make AsyncAwsS3WriteBatchAdapter batch size configurable
- #12040 - Fix confusing error on user create in admin
- #12046 - Remove usage of imagedestroy @tinect
- #12047 - Use bootstrap gutter variables for product-listing grid
- #2938 - Fix tax rounding errors for percentage price calculation
- #4053 - Adds MIN() Function to cheapestPrice Accessor @ulloe
- #5418 - Add configuration for meta tag "robots" @dallyger
- #9614 - Replace breadcrumb separator by the bootstrap default solution @aragon999
- #9635 - Add custom field entities (unit and newsletter_recipient) to apps
- #10707 - Fix Elasticsearch Datetime format
- #10720 - Update MatchAllLineItemsRule to support multiple item types
- #11001 - Show relevant products without previews when searching @tinect
- #11074 - Fix admin es search for document number does not return any result
- #11128 - Improve admin search on searching for numeric tokens
- #11130 - Optimize storefront elasticsearch
- #11204 - Change main category seo url of a variant leads to an empty for its parent @nguyenquocdaile
- #11420 - Fix navigation cache invalidation
- #11528 - Show correct exception when updating an entity with a foreign key constraint fails
- #11534 - Added document return address display option
- #11568 - Remove language switch from import/export
- #11619 - Fix SeoUrl generate database-error when the url changes
- #11654 - Fixing document squished line item listing
- #11800 - fix overwrite slot config
- #11895 - Improve admin search indexing event handling and iterator versioning
- #11899 - Updated ignored URL parameters for http cache @tinect
- #12011 - Fix issue with theme config update if fields got removed
- #5868 - fix product media import with whitespace in url
- #5913 - Disallow usage of file_exists @tinect
- #8584 - Error when trying to remove "Main category" for product
- #10897 - Include GET methods to store API schema where POST and GET supported
- #11085 - Fix primary connection is not working when replica configured
- #11106 - Fix Quote counts up the order number range
- #11110 - Fix SystemConfigService::deleteExtensionConfiguration removes only global configuration
- #11194 - Add fetchpriority attribute to first image slider and image gallery item @M-arcus
- #11397 - Make sidebar expandable by dragging
- #7881 - Add headers to vary Storefront API caches based on context vars
Minor fixes and improvements.
Full changelog
See the UPGRADE.md for all important technical changes.
- #11371 - fix sorting order when search property values
- #11377 - Use sw-text-editor instead of mt-text-editor
- #11515 - Fix reset active apps after app deactivation
- #11521 - fix: improve check for visibility parameter check
- #11599 - Change createdComponent back to being sync
- #10040 - Fix backward compatibility of MediaThumbnailEntity
- #11155 - Fix cart deserialization type error
- #11550 - Fix inconsistent seoUrls for cross-selling products
- #8018 - Move Search config loader class to Core bundle
- #8018 - Use minimal search term length in config tables
- #11085 - Fix primary connection is not working when replica configured
Minor fixes and improvements.
Full changelog
See the UPGRADE.md for all important technical changes.
Minor fixes and improvements.
Full changelog
See the UPGRADE.md for all important technical changes.
- #11157 - Scope RenamePaidTransitionActions migration to order transaction state transitions
- #11386 - Fix CMS element loading when reviews are not activated
- #8724 - Added locking to cart mutating routes
- Improve CMS slot selection and prevent misclicks @marvn-r3
- #10030 - Align error styles of form components
- #10051 - Added namespaces option for dal:validate command @OliverSkroblin
- #10056 - Added shorthands for not equals filter @OliverSkroblin
- #10130 - Added Elasticsearch response to ElasticsearchEntitySearcherSearchedEvent @OliverSkroblin
- #10146 - Filter cart success error messages
- #10191 - Fix tooltip of the
sw-product-variant-infocomponent @aragon999 - #10234 - Removed global Vue2 event emitter from the
sw-order-detailcomponent @aragon999 - #10243 - Fix password field autocomplete with the
new-passwordtype @akf-bw - #10244 - Fix wrong variant of mt-banner-on-sales-channel-detail-page
- #10312 - Improve error handling of Storefront JS plugin manager
- #10341 - Skip MediaIndexing when remote thumbnails are enabled
- #10358 - Added price calculation extension @OliverSkroblin
- #10368 - Fix spelling and typos in core packages @wannevancamp
- #10438 - Improve ES search scoring for numeric tokens @thuong-le
- #10495 - Spatial Asset Caching
- #10498 - Installer supports presets based on the language selection
- #10520 - Remove unused
urlspecification from app metadata @aragon999 - #10531 - Add modifyFields method to EntityExtension @gecolay
- #10534 - Fix authentication for document downloads via the Store API @jgeramb
- #10679 - Add validation for theme configuration
- #10688 - "CountryStateController: Support GET for /country/country-state-data and deprecate POST"
- #10688 - New Media Upload API v2
- #10696 - Respect missing shipping method currency prices
- #10697 - Fix Vimeo video element iframe title @lacknere
- #10711 - Use global Vue PropType @gecolay
- #10712 - Fix session usage and session start behaviour @gecolay
- #10718 - Properly display product slider element with border in the administration @aragon999
- #10738 - Custom field set name is now unique for apps
- #10738 - Fix apps with duplicated custom field sets
- #10744 - Fix duplicate grid settings space @gecolay
- #10749 - Fix product search SQL scoring @lacknere
- #10754 - fix: find correct admin root without explict env, fixes #10754 (#10925)
- #10764 - Unify margins of admin dashboard @aragon999
- #10767 - Added twig block to mt-text-editor component template @acris-lf
- #10774 - Multiple promotions order count fix
- #10853 - Skip In-App Purchases update task on missing authentication headers
- #10855 - Fix duplicate checkout gateway filter @gecolay
- #10874 - Fix invoice creation with a custom number @jgeramb
- #10876 - Fix invoice number selection for credit notes and storno invoices @jgeramb
- #10877 - Cleanup styles of the
sw-categorymodule @aragon999 - #10880 - Use display index to get active slide element
- #10885 - Prevent line item price editing in admin if price definition is missing @aragon999
- #10919 - Delete correct expired store session
- #10947 - Add createdAt column to customer list in administration @gecolay
- #10948 - Add administration product number filter @gecolay
- #10949 - Fix tooltip formatting @lacknere
- #10955 - Add missing dateTimeFormat property for sw-time-ago @gecolay
- #10956 - Improved initial camera position of 3D viewer
- #10958 - Use single shared interval for sw-time-ago component @gecolay
- #10965 - Add staging config to SetupStagingEvent
- #10969 - Add CanonicalRedirectExtension to CanonicalRedirectService @gecolay
- #10971 - Removed EntityHydrator internal class tag @gecolay
- #10974 - Deprecate filesystem visibility in config array
- #10978 - Add remove loader function to form submit loader plugin
- #10981 - Improved XmlHttpRequest denied exception information @gecolay
- #10983 - Use sw-time-ago for past date times @gecolay
- #10988 - Change URL generation for ESI includes to avoid HTTPS issues with Varnish @stefanpoensgen
- #10998 - Fix order line items label display & add type column @gecolay
- #10999 - Fix variant listing config when cloning products or deleting variants @schneider-felix
- #11008 - Add product creation date sorting criteria option @lacknere
- #11010 - Change deprecated
&&in sql accessor builder @gecolay - #11033 - Change ApiAware visibility for externalUser field in ProductReview @gecolay
- #11035 - Change ApiAware visibility for products association in CustomerWishlist @gecolay
- #11043 - Generate routes based on current request
- #11079 - Optimize product slider CMS element @lacknere
- #11113 - Add error handling to YouTube CMS element link parsing @LukasVoeller
- #3784 - Fix SEO URLs for landing pages in footer navigation
- #4728 - Deprecate force option from es:index:cleanup command @M-arcus
- #6001 - Add an explicit configurable robots.txt @aragon999
- #6032 - Unify constraint option structure and checks @akf-bw
- #6038 - Fix Gallery Thumbnail Slider
- #6418 - Fix negative zero when calculating price @JasperP98
- #6486 - Change redirect path for wishlist after login @tinect
- #7346 - feat: Fixes #7346 - Allow variable icon names in sw_icon (#8369)
- #7457 - Add acl hook service
- #7494 - Preserve administration sidebar state @akf-bw
- #7716 - Improve fetching of language information for SalesChannelContext
- #7719 - add nl2br filter to customer review content variable @marvn-r3
- #7770 - Move review active check into store api routes @aragon999
- #7840 - Fix CmsDataResolver same Criteria different Entities @Fayti1703
- #7852 - Add storefront snippet events @scarbous
- #7932 - Remove non-existing imports from admin module stub @M-arcus
- #7938 - fix cms block removable check @schneider-felix
- #7993 - Removed write protection flag from fileExtension field in the MediaDefinition
- #8027 - Deprecated theme translations to use admin snippets
- #8041 - save fileHash if it is available @scarbous
- #8055 - Deprecated payment method DebitPayment
- #8209 - Spatial AR viewer checks
- #8226 - Add renaming scales unit banner in Settings overview @nguyenquocdaile
- #8228 - Allow empty alt with sw_thumbnails
- #8390 - Fix invoice empty pages @lacknere
- #8393 - Add support for extended definition of attribute entity
- #8478 - Add remote thumbnail url extension @TheBreaken
- #8531 - Truncate long custom field descriptions in rulebuilder @lacknere
- #8538 - Add measurement settings into sales channel configuration
- #8539 - Add measurement settings into sales channel domain configuration
- #8540 - Update domain listing to show measurement information
- #8558 - Skip cart recalculation on ESI sub requests
- #8574 - Deprecate account order detail page
- #8591 - Fixed theme config inheritance for database child themes
- #8670 - Implement media component with Admin SDK
- #8698 - Message queue statistics
- #8763 - Add recalculated custom line-items to delivery
- #8873 - Fix unprepared statements breaking profiler @MelvinAchterhuis
- #8900 - Deprecated carts-alerts
- #8903 - Added DIVE as a 3D Viewer for Storefront
- #8981 - Remove specific color on icon-wishlist @tinect
- #8989 - Track status changes performed by integrations @schneider-felix
- #9028 - Remove obsolete
requiredMessagevariable declarations @aragon999 - #9031 - ci: reenable 6.6.0.0 update (fixes #9031) (#9245)
- #9068 - Fix app uninstalls with custom entities
- #9101 - Deprecate active language and currency from header pagelet @aragon999
- #9229 - Fix the reading of the cart widget by screen readers
- #9254 - Load
SalesChannelCategoryEntitywhen loading the breadcrumb - #9397 - chore: add cleanup-needs-triage (fixes: #9397) (#9527)
- #9477 - Add guest conversion route to Store API
- #9555 - A11y-Compliant alt tag for decorative images @wbm-sbasler
- #9739 - Fix paging listing page parameter usage in post requests @akf-bw
- #9826 - Added new API to delete unused increment keys or cluster
- #9828 - Register mt-modal componants globally
- #9850 - Add deprecations to the theme configuration APIs
- #9851 - feat: implement event on Sitemap Generation, closes #9851 (#9853)
- #9887 - Improved AR Error feeback
- #9928 - Primary order and transaction deliveries during recalculation
- #9980 - Silence and log exceptions of In-App purchases
- Remove first level app snippet restriction
- #10297 - Products with variants should return the variant that match the search term in the product detail page
- #10507 - Fix media item quickinfo update after save @bschulzebaek
- #10513 - Fix issue SEO url not generating anymore
- #10706 - Add lock for CacheClearer
- #10906 - Change path of header and footer routes
- #11131 - add env variables for Opensearch min_ngram and max_ngram
- #5913 - Remove usage of file_exists @tinect
- #5913 - Remove usage of file_exists @tinect
- #5913 - Remove usage of file_exists @tinect
- #5913 - Remove usage of file_exists @tinect
- #7225 - Add measurement system
- #7730 - Create migration and DAL for measurement system
- #7732 - add sw-settings-measurement module
- #7792 - Implement app:list command @devin-ai-integration
- #8471 - ES should work correctly with ScoreQuery
- #8541 - add selling packaging card
- #8542 - add sw-product-measurement-form component
- #8543 - Apply last chosen measurement settings as user preferred settings
- #8545 - adjust bulk editing products with new product measurements
- #9175 - Add ACL
- #9909 - Fix unable to fall back to parent language on product entity
- #9931 - deprecate i18n $tc function
- Add twig block around filter columns
- Ocarthon - fix AfterSort with multiple null values @PhilipStandt
- https://github.com/shopware/service-enablement/issues/17 - Changed Admin-SDK handler for context.can
- #10248 - Added DeduplicatableMessageInterface
- #11053 - Delete Admin snippet cache after app install
- #11085 - Fix mysql replica parameters parsing
- #3712 - Meta information in landing pages is not inherited @Songworks
- #4936 - Add primary order delivery and primary order transaction reference @hanneswernery
- #5913 - Change file_exists to is_dir @tinect
- #7480 - New config to toggle salutation field on registration
- #7482 - Added new configs for changing cart columns
- #7766 - Optimizing theme config loading
- #9851 - Add Event to modify SalesChannelContext @wrongspot
Minor fixes and improvements.
Full changelog
- #8724 - Added locking to cart mutating routes
- #10763 - fix: remove 6.8.0.0 feature flag
- #10146 - Filter cart success error messages
- #10457 - Improve ES search scoring for numeric tokens
- #10518 - Press ESC key in the modal will go back listing page
- #10682 - Live search page broken if the data is empty
- #10696 - Respect missing shipping method currency prices
- #10738 - Fix apps with duplicated custom field sets
- #10774 - Multiple promotions order count fix
- #10853 - Skip In-App Purchases update task on missing authentication headers
- #10900 - Add new data id to set off-canvas aria-labelledby
- #10919 - Delete correct expired store session
- #11016 - Change URL generation for ESI includes to avoid HTTPS issues with Varnish @stefanpoensgen
- #11092 - Fix variant listing config when cloning products or deleting variants @schneider-felix
- #8228 - Allow empty alt with sw_thumbnails
- #8591 - Fixed theme config inheritance for database child themes
- #9229 - Fix the reading of the cart widget by screen readers
- #9310 - E-invoice vertical tax calculation
- #10513 - Fix issue SEO url not generating anymore
- #10906 - Change path of header and footer routes
- #8471 - ES should work correctly with ScoreQuery
- #9367 - Fix alignment logo manufacturer media field not correct
- #11106 - Fix Quote counts up the order number range
Minor fixes and improvements.
Full changelog
See the UPGRADE.md for all important technical changes.
- Vue 2 compatibility removed
- Webpack replaced with Vite build system
- Store-API route caching removed; ESI introduced
- Vue 3 full support with Pinia state management
- Meteor Component Library adoption
- Cache system rework
Full changelog
Shopware 6.7.0.0
This major release introduces significant technical improvements, cleanup of deprecated features, upgraded accessibility changes and impactful changes for long-term platform stability. After a RC validation period in different phases, the 6.7 release is now production-ready for self-hosted environments.
Highlights
-
Vue 3 is now fully supported in the administration. The compatibility layer has been removed, and Pinia replaces Vuex for state management.
-
Webpack has been replaced with Vite for the administration build process, improving performance and DX.
-
Storefront and Admin templates have been migrated to the Meteor Component Library. Several legacy components have been deprecated or removed.
-
The cache system has been reworked. Store-API route caching has been removed, and ESI was introduced for more precise cache control.
-
Native type declarations have been added to PHP class properties across the platform.
-
Multiple core libraries were upgraded: DBAL 4.x, PHPUnit 11.x, Dompdf 3.x, oauth2-server 9.x.
-
The OAuth token request flow is now spec-compliant. The /api/oauth/authorize endpoint has been removed.
-
Accessibility improvements have been made across the admin UI in preparation for the European Accessibility Act (EAA).
Deprecation Cleanup
6.7 finalizes the deprecation removals that were scheduled during the 6.6 lifecycle. Please refer to the Upgrade Guide for detailed migration instructions.
Upgrade Considerations
-
Plugin and app developers should test compatibility, particularly with the Vue 3 and Vite changes.
-
Private apps and themes may require additional review due to internal API and caching adjustments.
-
Redis configuration and Varnish now rely on updated modules. See the hosting section in the upgrade guide.
Additional Resources
The changes introduced between RC5 and the final release were limited to bug fixes and minor adjustments. No additional breaking changes were introduced after RC5.
Fixed 29 bugs across search, checkout, analytics, and storefront.
Full changelog
See the UPGRADE.md for all important technical changes.
- #9447- Assets repeatedly disappearing
- #10112 - Silence and log exceptions of In-App purchases
- #10254 - Pass through extensions from IdSearchResult to EntitySearchResult in ProductListingLoader @OliverSkroblin
- #10259 - Translated custom field value accessor @OliverSkroblin
- #10285 - Unwrap messages when routing
- #10300 - Fix StoreAPI criteria endpoints schema @akf-bw
- #8321 - Fix nested line items
- #8739 - Imitate customer active sales channel check @MelvinAchterhuis
- #8763 - Add recalculated custom line-items to delivery
- #9031 - ci: reenable 6.6.0.0 update (fixes #9031)[6.6.x] (#9248)
- #9117 - Allow enriching seoUrls for search results's extensions
- #9179 - Elasticsearch index's mapping should be updated post update
- #9198 - Fix StructEncoder custom field visibility @akf-bw
- #9236 - Add AllowHtml Attribute support @raffaelecarelle
- #9333 - Added locking mechanism to CartOrderRoute
- #9356 - Fixed accessibility issue of collapse button of orders @aragon999
- #9388 - Fix search result order
- #9460 - Transmit correct shipping costs to Google Analytics @aragon999
- #9517 - Provide context token to current request
- #9532 - Refactored snippet set list
- #9572 - Fix theme settings getting lost when navigating quickly @amenk
- #9615 - Changed manufacturer wrapper from
<a>to<div>when link is missing - #9712 - Display Promotion rule correctly as line item rule in Administration
- #9729 - Fix search term custom find weird icons
- #9844 - Fix incorrect overwrite of deepLinkCode on order recalculation
- #9851 - feat: implement event on Sitemap Generation, closes #9851 [6.6.x] (#9968)
- #10190 - Fix essential characteristics create template with more than 2 values does not work
- #5413 - Fix sorting of countries in Storefront
- #5899 - Elasticsearch list/price percentage ratio dynamic product groups not working
- #7447 - Variant indicator missing in product listing
- #8285 - Fixed promotion deletion cart error
- #8790 - Fix inline media upload preview image option is broken
- #8828 - Fix category search results not scrollable
- #8922 - Fix allowFullscreen attribute in CmsGdprVideoElement
- #9384 - Fix search result order in preview search in mysql
- #9612 - Remove overwrite of CreatedByField with non-live version
- #9715 - Set Limit when loading options in property group detail page
- #9855 - Elasticsearch custom fields dynamic product groups not working
- #7768 - Reduce downtime while theme change
- #9851 - Add Event to modify SalesChannelContext @wrongspot