Shopware

Was Shopware 6.7 fertig mitliefert und abgeschaltet lässt

Achtzehn Feature-Flags, sechzehn davon aus. Acht werden im nächsten Major zum Standard — und drei davon ändern Verhalten, auf das heute Integrationen bauen.

Pixup MediaVeröffentlicht am 9 Min. Lesezeit

Eine Versionsnummer sagt, was da ist. Sie sagt nicht, was davon eingeschaltet ist. Bei Shopware 6.7 liegt zwischen beidem eine ganze Liste.

Die Zahlen

6.6.10.66.7.13.1
Feature-Flags im Kern718
davon ab Werk an02
davon ab Werk aus716
davon aus und major58

Die beiden, die in 6.7 an sind, waren in 6.6 aus: DISABLE_VUE_COMPAT und ACCESSIBILITY_TWEAKS. Das ist der normale Lauf — ein Flag wandert von „experimentell" über „Standard im nächsten Major" zu „an".

Interessant ist die letzte Zeile.

Der Unterschied, auf den es ankommt

Jedes Flag trägt im Kern zwei Angaben. default sagt, ob es heute an ist. major sagt, ob es im nächsten Major zum Standard wird — ohne dass jemand es einschaltet.

- name: JSON_LD_DATA
  default: false
  major: true

Ein Flag mit major: false ist ein Experiment. Man kann es ausprobieren, und man muss es nicht.

Ein Flag mit major: true ist eine Ankündigung. Es beschreibt den Zustand, in dem sich die Installation nach dem nächsten großen Update befinden wird.

Genau deshalb ist die Liste der acht das nützlichste Update-Dokument, das eine 6.7-Installation mitbringt — und es steht in keiner Änderungsliste.

Die acht, die 6.8 zum Standard macht

Flagwas sich ändert
JSON_LD_DATAMicrodata im Storefront wird durch JSON-LD ersetzt. Die itemprop-Attribute verschwinden aus dem HTML
WEBHOOKS_REWORKWebhook-Wiederholungen laufen über eine eigene Outbox statt über den Messenger
FLOW_EXECUTION_AFTER_BUSINESS_PROCESSAbläufe starten erst, nachdem die eigentliche Arbeitseinheit abgeschlossen ist
DOCUMENT_GENERATION_REWORKneue Implementierung der Dokumenterzeugung samt geänderter Oberfläche
BREADCRUMB_REWORKneues Laden der Brotkrumen, Produktpfade werden aufbaubar
REPEATED_PAYMENT_FINALIZEwiederholte Aufrufe von /payment/finalize-transaction mit demselben Token werden zulässig
PERMANENT_AUTOMATIC_PROMOTIONSautomatische Aktionen lassen sich nicht mehr entfernen
PERFORMANCE_TWEAKSSammelflag für Änderungen, die Leistung gegen Verhalten tauschen

Dazu acht weitere mit major: false — echte Experimente, darunter MCP_SERVER, CACHE_REWORK, TELEMETRY_METRICS und ENABLE_OPENSEARCH_FOR_ADMIN_API.

Die drei, die in Projekten wehtun

WEBHOOKS_REWORK. Wer heute darauf baut, dass ein fehlgeschlagener Webhook nach einem bekannten Muster wiederholt wird, baut auf den Messenger. Die Umstellung verlegt das in eine eigene Outbox. Die Abstände und die Zahl der Versuche sind heute Teil des Vertrags zwischen Shop und Empfänger — und dieser Vertrag ändert sich.

FLOW_EXECUTION_AFTER_BUSINESS_PROCESS. Heute startet ein Ablauf innerhalb der laufenden Arbeitseinheit. Künftig danach. Für die meisten Abläufe ändert das nichts. Für einen Ablauf, der auf einen Datenstand zugreift, den die laufende Transaktion gerade erst erzeugt, ändert es alles — in die richtige Richtung, aber es ändert etwas.

DOCUMENT_GENERATION_REWORK. Wer eigene Dokumentvorlagen pflegt oder den Erzeuger erweitert hat, bekommt eine neue Implementierung unter den Füßen.

Die Entscheidung

Die Frage ist nicht „einschalten oder nicht". Die Frage ist, wann man hinschaut.

Situationwas zu tun ist
Update auf 6.8 steht anDie acht Flags einzeln durchgehen. Jedes ist ein Verhaltensänderung, die ohne Zutun kommt
Integration wird gerade gebautGegen das Verhalten mit aktiviertem Flag bauen, wenn der Bereich betroffen ist. Sonst baut man gegen einen Zustand mit Verfallsdatum
Storefront-Anpassungen im HTMLJSON_LD_DATA testweise einschalten. Wer itemprop im eigenen Template verarbeitet, merkt es sofort
Nichts davon trifft zuNichts tun. Acht Flags sind acht, nicht achtzig

Der praktische Weg ist einfach: Ein Flag in einer Kopie der Installation einschalten, die betroffene Funktion durchspielen, Ergebnis notieren. Genau so haben wir JSON_LD_DATA und MCP_SERVER geprüft — und in beiden Fällen war das Ergebnis eindeutiger als jede Beschreibung.

Ein Fallstrick beim Nachmessen

bin/console feature:list zeigt die registrierten Flags mit Status — aber nicht die major-Kennzeichnung. Genau die ist die interessante Angabe. Sie steht in feature.yaml im Kern.

Und noch eine Warnung aus eigener Erfahrung: Ein Flag zu setzen, das die installierte Version gar nicht kennt, führt nicht zu einem Fehler. Es führt zu einem stillen Nichts — die Umgebungsvariable wird angenommen, Feature::isActive meldet sogar true, und trotzdem ändert sich nichts, weil kein Code darauf hört. Wir sind darauf hereingefallen und haben es erst bemerkt, als die Gegenprüfung ergab, dass die betreffende Version das Flag in null Dateien trägt.

Grenzen dieser Messung

Gezählt sind Flags, nicht Auswirkungen. Was ein Flag im Einzelnen ändert, steht in seiner Beschreibung im Kern — und die ist bei manchen ein Satz. Zwei der acht haben wir tatsächlich eingeschaltet und gemessen; über die übrigen sechs sagt dieser Text nur, dass sie existieren, aus sind und zum Standard werden.

Die Zahlen gelten für 6.6.10.6 und 6.7.13.1. Eine andere Patch-Version kann eine andere Flagliste haben — 6.7.2.2 etwa kennt CACHE_REWORK noch nicht.

Häufige Fragen

Was bedeutet major:true bei einem Feature-Flag?
Dass das Verhalten hinter dem Flag im nächsten Major zum Standard wird. Das Flag ist dann keine Option mehr, sondern die Voreinstellung — und das Flag selbst verschwindet.
Kann ich ein Flag einfach einschalten?
Technisch ja, über eine Umgebungsvariable mit dem Flagnamen. Fachlich ist es eine Entscheidung je Flag: Einige ändern nur die Administration, andere ändern das HTML der Storefront oder das Wiederholungsverhalten von Webhooks.
Wie sehe ich, welche Flags meine Installation kennt?
bin/console feature:list zeigt die registrierten Flags mit ihrem Status. Die Datei feature.yaml im Kern zeigt zusätzlich die major-Kennzeichnung, die in der Konsolenausgabe fehlt.
Betrifft das auch 6.6?
6.6 hat sieben Flags, fünf davon major. Das Prinzip ist dasselbe, nur der Umfang ist kleiner — und die relevanten Flags sind andere.
WeiterführendShopware-Agentur