Patch, Minor, Major: drei verschiedene Risiken
Shopware zählt vierstellig. In 6.7.13.0 bezeichnen die ersten beiden Stellen die Major-Linie, die dritte das Minor-Release, die vierte den Patch-Stand. Minor-Releases erscheinen nach der Release-Policy am ersten Montag im Monat und bringen Funktionen, Fehlerkorrekturen und Sicherheitsfixes; Patch-Releases kommen dazwischen, wenn ein Fehler es verlangt. Für Major-Releases nennt Shopware keinen Takt: 6.7 erschien im Juni 2025, 6.8 wird erst für 2027 erwartet. Breaking Changes stehen im Major. Aus dieser Einteilung folgt die Risikoeinschätzung, und sie ist alles andere als symmetrisch. Ein Patch-Stand ist eine Betriebsaufgabe, ein Major-Sprung ist ein Projekt. Wer beides gleich behandelt, macht entweder das eine zu aufwendig oder das andere zu leichtfertig.
Bei Patch- und Minor-Ständen innerhalb von 6.7 ist das Risiko begrenzt, aber nicht null. Betroffen ist, was an internen APIs hängt statt an den dokumentierten Erweiterungspunkten, und was in Templates auf Markup zeigt, das sich geändert hat. Eine praktische Regel aus dem Betrieb: neue x.x.x.0-Releases nicht sofort einspielen. Shopware hat 6.7.12.0 kurz nach der Veröffentlichung gesperrt — laut Release-Notes lässt sich diese Version wegen eines nachträglich entdeckten Fehlers nicht installieren oder aktualisieren, stattdessen ist 6.7.12.1 zu verwenden. Wer einen Monat später einsteigt, spart sich diese Klasse von Überraschungen.
Beim Major-Sprung von 6.6 auf 6.7 ändert sich nicht nur der Code, sondern auch der Unterbau. Shopware nennt für 6.7 als Mindestanforderung PHP 8.2, 8.3 oder 8.4, Node.js ab 20 für den Administration-Build, MySQL ab 8.0.17 oder MariaDB ab 10.11 und Redis ab 7.0, falls im Einsatz. Die Dokumentation benennt dabei ausdrücklich problematische Zwischenversionen: MySQL 8.0.20 und 8.0.21, MariaDB 10.11.5 und 11.0.3. Das sind Mindestwerte und keine Empfehlungen — für den Betrieb führt der Hosting-Guide einen neueren Stack. Wer heute auf PHP 8.1 oder MariaDB 10.6 sitzt, hat zwei Vorhaben und nicht eines — und die Reihenfolge steht fest: erst der Unterbau, dann die Anwendung.
Warum 6.7 jedes Plugin und jedes Custom-Theme betrifft
Die Administration von Shopware 6 ist eine Vue-Anwendung, kein Satz von Formularseiten. Eine Erweiterung ruft dort keine stabile Schnittstelle auf, sondern wird Teil dieser Anwendung: Sie überschreibt Twig-Blöcke der Administration-Templates, registriert oder erweitert Komponenten über Component.register() und Component.override(), bringt einen eigenen Einstiegspunkt unter src/Resources/app/administration/ mit und wird in denselben Build kompiliert wie der Core. Genau daraus folgt der Aufwand von 6.7: Wenn die Anwendung von Vue 2 auf Vue 3 wechselt, wechselt der Vertrag mit jedem Plugin, das sich dort eingehängt hat.
Drei Umbauten wirken gleichzeitig. Erstens ist die Vue-2-Kompatibilitätsschicht entfallen; Komponenten müssen gegen Vue 3 laufen. Zweitens ersetzt Pinia das State-Management Vuex — aus Shopware.State.get() wird Shopware.Store.get(), und eigene Stores werden neu registriert. Drittens baut die Administration mit Vite statt mit Webpack; eine eigene webpack.config.js wird zur vite.config.js. Webpack und Vite sind nicht kreuzkompatibel: Wer ein Plugin für beide Linien pflegt, braucht getrennte Releases für 6.6 und 6.7. Als Faustregel für das Inventar genügt ein Blick ins Verzeichnis — jede Erweiterung mit Dateien unter src/Resources/app/administration/ ist betroffen.
Auf der PHP-Seite und im Storefront kommt der zweite Block dazu. 6.7 hebt DBAL auf 4, PHPUnit auf 11, Dompdf auf 3 und league/oauth2-server auf 9 und zieht die Symfony-Komponenten auf 7.3 nach; den Sprung auf Symfony 7 selbst hat bereits 6.6 gemacht, er steht also nicht mehr an. Die Payment-Handler sind auf eine einheitliche AbstractPaymentHandler-Klasse zusammengeführt, das Store-API-Route-Caching samt aller Cached*Route-Klassen ist entfallen, die verzögerte Cache-Invalidierung ist standardmäßig aktiv und die frühere Konfiguration shopware.cache.invalidation.delay ist weggefallen. Bei Zahlungs- und Versandarten ist technicalName Pflicht, und Custom-Field-Namen mit Bindestrich oder Punkt werden nicht mehr akzeptiert: Feld- und Feldset-Namen müssen gültige Twig-Variablennamen sein. Im Storefront laden Header und Footer per ESI, damit sie unabhängig gecacht werden können, und der Barrierefreiheits-Umbau hat Markup, ARIA-Attribute und Blockstruktur verändert. Was in 6.6 noch hinter dem Feature-Flag ACCESSIBILITY_TWEAKS lag, ist in 6.7 Standard — die Pagination läuft über Anchor-Links statt über Radio-Inputs, Icons aus dem Icon-Helper tragen aria-hidden. Ein Custom-Theme ist deshalb genauso betroffen wie ein Plugin: Jeder überschriebene Twig-Block muss gegen das neue Original gelesen werden, weil er sonst still eine alte Struktur zurückbringt.
Bei fremden Erweiterungen ist die Lage inzwischen besser als kurz nach dem Release. Anfang 2026 haben die großen Store-Plugins kompatible Fassungen für 6.7 — in den ersten Monaten war das anders, und daher stammt ein guter Teil der Update-Angst. Der Engpass sind heute die individuell gebauten Erweiterungen und die kleinen ohne Betreuer. Einen ersten Überblick liefert Shopware selbst: Unter Einstellungen → System → Shopware-Updates steht je aktiver Erweiterung einer von drei Zuständen. Diese Liste ist ein Anfang und keine Freigabe — sie kennt Ihren eigenen Code nicht und sagt über Templates gar nichts.
Von Shopware 5 aus ist es eine Migration, kein Update
Von Shopware 5 auf Shopware 6 gibt es keinen Update-Pfad, sondern nur einen Neuaufbau mit Datenübernahme. Shopware 6 ist ein anderes System: Twig statt Smarty, ein anderes Datenmodell, eine andere Plugin-Architektur. Übernommen werden Daten — Produkte, Varianten, Kategorien, Kunden, Bestellungen, Medien, Custom Fields, SEO-URLs — über den Shopware-Migrations-Assistenten. Theme, Erweiterungen und Schnittstellen entstehen neu. Statt Plugin-Update steht hier Plugin-Ersatz: Für jede Funktion wird entschieden, ob eine 6.7-Erweiterung sie abdeckt, ob sie nachgebaut wird oder ob sie entfällt, weil sie ohnehin niemand benutzt hat.
Für die Planung folgen daraus zwei Dinge. Erstens ist Zielversion direkt der aktuelle 6.7-Stand. Ein Zwischenschritt über 6.6 bringt nichts, weil ohnehin neu gebaut wird, und würde den Umbau auf Vue 3, Vite und Pinia nur einplanen, um ihn später zu wiederholen. Zweitens ist der Termin nicht beliebig: Shopware 5 ist seit Ende Juli 2024 aus der Herstellerwartung, und wer den Termin nicht halten kann, kauft mit den kostenpflichtigen safefive-Patches Zeit — das verschiebt die Migration und ersetzt sie nicht. Am Umschalttag entscheidet dann die Redirect-Liste: Die SEO-URLs aus Shopware 5 lassen sich mitnehmen, die URL-Struktur von Shopware 6 ist aber eine andere, und ohne vollständige Weiterleitungen verlieren Sie gewachsene Sichtbarkeit. Wir erzeugen die Liste aus dem Altbestand und prüfen sie vor dem Cutover; Rankingversprechen gibt es dazu nicht, von uns so wenig wie von jemand anderem.
Kalkuliert wird eine Migration deshalb anders als ein Update. Beim Update zählen Sie Erweiterungen, Administration-Anteile und überschriebene Twig-Blöcke und rechnen Anpassungsaufwand je Position. Bei der Migration rechnen Sie einen Neubau, dazu Datenübernahme, Abgleich und Redirects — und Sie entscheiden bei jeder Funktion neu, ob sie überhaupt mitkommt. Wer beides in einen Topf wirft, bekommt eine Zahl, die für keinen der beiden Fälle stimmt. Den Migrationsweg im Einzelnen — Migrations-Assistent, Mappings, Datenabgleich, Cutover — beschreibt unsere Seite zur Shopware-Hilfe. Auf dieser Seite geht es um den Weg innerhalb von Shopware 6.
Wie ein Update tatsächlich gefahren wird
Am Anfang steht eine Staging-Kopie mit echten Daten. Echte Katalog- und Bestelldaten sind nötig, weil sich Fehler in Preislogik, Steuersätzen, Rabattregeln und Bestelldokumenten an Testartikeln nicht zeigen. Vier Dinge werden abgeklemmt, bevor der erste Aufruf passiert: der Mailversand, damit niemand Bestellbestätigungen aus dem Testsystem bekommt; die Zahlungsanbieter, die auf Sandbox-Zugänge umgestellt werden; die ERP-Schnittstelle, die auf einen Testmandanten zeigt; und die Indexierung durch Suchmaschinen. Personenbezogene Kundendaten werden pseudonymisiert oder das System läuft geschlossen — eine Staging-Instanz mit echten Kundendaten und offener Erreichbarkeit ist ein Datenschutzvorfall mit Anlauf.
Aktualisiert wird über die Kommandozeile, nicht über den Updater im Browser. Der dokumentierte Weg läuft in zwei Hälften: lokal die Zielversion in die composer.json, dann composer update --no-scripts und composer recipes:update, danach committen und deployen. Auf dem Server folgen sales-channel:maintenance:enable --all, system:update:prepare, system:update:finish und am Ende sales-channel:maintenance:disable --all. Danach die Nacharbeit, die gern vergessen wird: Build der Administration, theme:compile, dal:refresh:index, bei aktiver Suche es:index, Cache-Warmup. Den Updater in der Administration empfiehlt Shopware ausdrücklich nur für kleine Instanzen, weil er im Browser läuft und bei größeren Shops in Timeouts und Memory-Limits läuft. Der Weg über das Repository hat außerdem den Vorteil, dass dieselbe Änderung zweimal identisch ausgeführt wird: erst auf Staging, dann live.
Die Testliste wird vor dem Staging-Durchlauf geschrieben und danach abgehakt, nicht umgekehrt. Sie enthält mindestens: eine vollständige Bestellung mit jeder aktiven Zahlungsart, jede Versandart, einen Gutschein, einen Staffelpreis, einen Kundengruppenpreis, Netto- und Bruttoanzeige mit jedem verwendeten Steuersatz, Rechnung und Lieferschein als PDF, den Bestellexport ins ERP, die Bestandsrückmeldung, Registrierung, Passwort-Reset, Mailversand und die Verkaufskanäle einzeln, wenn es mehrere gibt. Das Wartungsfenster liegt außerhalb der Umsatzzeit. Welche Stunde in Ihrem Shop die schwächste ist, steht in Ihrer eigenen Auswertung und nicht in einer Faustregel.
Der Rückweg gehört in den Plan, bevor umgeschaltet wird — mit einem Abbruchkriterium, das vorher benannt ist, und nicht mit einem Gefühl um drei Uhr nachts. Bei einem Blue-Green-Deployment lässt sich laut Shopware auf die alte Umgebung zurückschalten, ohne ein Backup zurückzuspielen; empfohlen ist das aber nur, wenn ausschließlich Shopware und nicht gleichzeitig Erweiterungen aktualisiert wurden. Die ehrliche Grenze dahinter: Datenbank-Migrationen laufen nur vorwärts. Wer nach dem Umschalten auf den Dump zurückgeht, verliert die Bestellungen, die dazwischen eingegangen sind. Genau deshalb ist das Fenster kurz, liegt in der schwächsten Umsatzstunde und beginnt mit einem Backup von Datenbank und Dateien, das unmittelbar davor gezogen wurde.
Was schiefgeht, wenn man es anders macht — und was 6.8 für die Planung heißt
Drei Ausfälle treten nach unbegleiteten Updates auf 6.7 wiederholt auf, und alle drei sind unauffällig. Erstens fällt eine Zahlungsart aus: Der Handler ist nicht auf AbstractPaymentHandler umgestellt oder der technicalName fehlt, die Methode verschwindet aus dem Checkout, der Shop läuft ansonsten normal. Zweitens rechnet die Preislogik falsch: Eine Erweiterung, die in Rabatt- oder Preisberechnung eingreift, kommt nicht mehr zum Zug, die Bestellung geht durch — mit dem falschen Betrag. Das ist der teuerste Fall, weil er wochenlang unbemerkt bleiben kann. Drittens schweigt die ERP-Schnittstelle: Ein umbenanntes Custom Field oder ein entfallener Endpunkt passt nicht mehr, und auffällig wird es erst, wenn die Ware nicht rausgeht.
Deshalb gehört nach dem Go-Live ein Monitoring dazu, das mehr misst als Erreichbarkeit. Sinnvoll sind vier Werte im Vergleich zur Woche davor: Zahl der abgeschlossenen Bestellungen, Fehlerrate im Log, Zahl der Bestellungen ohne Quittung aus dem ERP und die Dauer eines Indexlaufs. Wer nur prüft, ob die Startseite antwortet, überwacht die Größe, die im Störungsfall zuletzt kippt.
Für die Planung ist 6.8 die nächste Marke: erwartet für 2027, ohne festes Datum. Shopware koppelt die Supportübergänge an Major-Releases statt an Kalenderdaten und kennt vier Zustände — Maintained, Extended Support, Security fixes only, End of life. 6.6 ist mit dem Erscheinen von 6.7 in den Extended Support gewechselt und bleibt dort, bis 6.8 erscheint; angelegt war dieser Zustand auf ein Jahr, mit der Verschiebung von 6.8 auf 2027 hat Shopware ihn verlängert. Im Extended Support erhält der jeweils letzte Minor ausgewählte Bugfixes und Sicherheitsupdates als Patch, ältere Minors Sicherheitsfixes über das Security-Plugin, und laut Shopware folgt danach ein weiteres Jahr Sicherheitsupdates über dieses Plugin. Praktisch heißt das: Wer jetzt auf 6.7 geht, hat den Vue-3-, Vite- und Pinia-Umbau hinter sich, wenn 6.8 kommt. Dass 6.8 für Erweiterungen der kleinere Sprung wird, ist eine begründete Erwartung und keine Zusage von Shopware.
Es gibt den Fall, in dem wir von einem Update abraten. Wenn der Shop in absehbarer Zeit ohnehin ersetzt oder neu gebaut wird, ist der 6.7-Umbau Geld, das zweimal ausgegeben wird — die angepassten Plugins und Templates landen im Papierkorb des Neubaus. Dann ist 6.6 im Extended Support mit einem verbindlichen Termin für den Neuaufbau die günstigere Antwort. Wenn ein Projekt sich nicht rechnet, sagen wir das vor dem Angebot und nicht danach.