Korrigieren Sie die Shopify JS-Leistung in 60 Sekunden
Führen Sie einen Geschwindigkeitstest in Ihrem Shop durch – Wenn Sie in der Diagnose „JavaScript-Ausführungszeit reduzieren“ oder „Haupt-Thread-Arbeit minimieren“ sehen, macht die JavaScript-Optimierung den größten Unterschied. Thunder Page Speed Optimizer packt beides automatisch an:
- Verschiebt unkritisches JavaScript bis nach dem Rendern der Seite
- Reduziert die Gesamtblockierzeit (TBT) und verbessert die Interaktion mit der nächsten Farbe (INP)
- Verwaltet die Ladereihenfolge von App-Skripten für optimale Leistung
- Funktioniert mit allen Shopify 2.0-Themes – keine Änderungen am Theme-Code
Für Entwickler, die die JavaScript-Optimierung tiefgreifend verstehen und manuelle Korrekturen anwenden möchten, lesen Sie weiter.
Wie JavaScript die Shopify Store-Leistung zerstört
JavaScript wirkt sich anders auf die Geschwindigkeit aus als CSS oder Bilder. Während CSS das Rendern blockiert und Bilder die visuelle Ladezeit beeinflussen, blockiert JS dies Hauptthread – der einzelne Thread, der für Layout, Malerei und Reaktion auf Benutzerinteraktionen verantwortlich ist. Wenn JavaScript ausgeführt wird, kann nichts anderes passieren. Tippen auf eine Schaltfläche, Scrollen, Tippen – alles eingefroren, bis die JS-Ausführung abgeschlossen ist.
Drei Core Web Vitals-Metriken messen direkt die Wirkung von JavaScript:
| Metrisch | Was es misst | JS Impact |
|---|---|---|
| Gesamtblockierungszeit (TBT) | Zeit, in der der Hauptthread während des Ladens der Seite blockiert wird | Lange JS-Aufgaben (>50 ms) erhöhen direkt die TBT |
| Interaktion mit nächster Farbe (INP) | Reaktionsfähigkeit auf Benutzereingaben | Starke JS-Ausführung verzögert die Reaktion auf Klicks/Tips |
| Time to Interactive (TTI) | Wenn die Seite zuverlässig interaktiv wird | Die Seite ist nicht interaktiv, bis JS die Ausführung abgeschlossen hat |
Auf einem Mobilgerät der Mittelklasse (wie die meisten Käufer es verwenden) dauert das Parsen und Ausführen von JavaScript 500 KB 2-4 Sekunden. Während dieser Zeit scheint der Store überladen zu sein, reagiert aber nicht auf Interaktionen – das schlechteste Benutzererlebnis überhaupt. Aus diesem Grund hat die JS-Optimierung oft einen größeren Einfluss auf die Conversions als die Bildoptimierung. Erfahren Sie mehr in unserem Core Web Vitals-Leitfaden.
Wo kommt das gesamte JavaScript her?
Der erste Schritt zur Reduzierung besteht darin, zu verstehen, woher das JavaScript Ihres Shops stammt. Hier ist eine typische Aufschlüsselung:
| JS-Quelle | Typische Größe | Geladen am |
|---|---|---|
| Shopify-Kern (Analyse, Checkout) | 80-120KB | Jede Seite |
| Theme-JavaScript (Dawn, Prestige usw.) | 60-200KB | Jede Seite |
| Installierte Apps (Bewertungen, Upsells, Chat) | 150-500KB | Jede Seite (normalerweise) |
| Analytics (GA4, Meta Pixel, TikTok) | 50-150KB | Jede Seite |
| Widgets von Drittanbietern (Chat, Popups) | 50-200KB | Jede Seite |
Beachten Sie das Muster: Apps und Skripte von Drittanbietern machen 50–70 % des gesamten JavaScript aus in den meisten Shopify-Shops. Ein Store mit 12 Apps verfügt möglicherweise über mehr als 400 KB App-JavaScript, das auf jeder Seite geladen wird, auch auf Seiten, auf denen diese Apps nicht benötigt werden.
Unser Leitfaden für Skripte von Drittanbietern deckt die volle Auswirkung externer Skripte und deren Verwaltung ab.
So prüfen Sie JavaScript in Ihrem Shopify-Shop
Vor der Optimierung müssen Sie genau wissen, welche Skripte geladen werden und wie viel Haupt-Thread-Zeit sie verbrauchen.
Methode 1: Chrome DevTools-Abdeckung
- Öffnen Sie Ihren Shop in Chrome → DevTools (
F12) - Drücken
Strg+Umschalt+P(Mac:Befehl+Umschalt+P) → „Abdeckung“ eingeben → „Abdeckung anzeigen“ auswählen - Klicken Sie im Abdeckungsbereich auf die Schaltfläche „Neu laden“.
- Filtern nach „JS“ – Sortierung nach Gesamtbytes und ungenutzten Bytes
- Typisches Ergebnis: 60–80 % des geladenen JavaScript sind ungenutzt auf einer einzelnen Seite
Methode 2: Flammendiagramm auf der Registerkarte „Leistung“.
- DevTools → Registerkarte „Leistung“ → „Screenshots“ und „Web Vitals“ ankreuzen
- Klicken Sie auf „Aufzeichnen“ → Seite neu laden → Aufnahme beenden
- Sehen Sie sich den Hauptabschnitt an – gelbe Blöcke stehen für die Ausführung von JavaScript
- Lange gelbe Blöcke (>50 ms) sind „lange Aufgaben“, die den Hauptthread blockieren
- Klicken Sie auf einen beliebigen Block, um zu sehen, welches Skript und welche Funktion verantwortlich ist
Methode 3: Registerkarte „Netzwerk“.
- DevTools → Registerkarte „Netzwerk“ → Filter nach „JS“
- Laden Sie die Seite neu und sortieren Sie sie nach Größe (größte zuerst)
- Beachten Sie die insgesamt übertragenen JS und die Anzahl der Anfragen
- Überprüfen Sie die Spalte „Initiator“, um zu sehen, welche Skripte andere Skripte geladen haben
Für ein umfassenderes Leistungsbild: Führen Sie Ihren Shop durch unseren Geschwindigkeitstest – es hebt JavaScript-spezifische Probleme neben anderen Leistungsengpässen hervor.
Skriptverzögerung: asynchron, verzögert und dynamisches Laden
Standardmäßig ist <script> -Tags blockieren die HTML-Analyse. Der Browser stoppt den Aufbau der Seite, lädt das Skript herunter, führt es aus und fährt dann fort. Skriptverzögerungsattribute ändern dieses Verhalten:
<!-- Render-blocking (default) — worst for performance -->
<script src="app.js"></script>
<!-- defer — downloads in parallel, executes after HTML parsing, maintains order -->
<script src="app.js" defer></script>
<!-- async — downloads in parallel, executes immediately when ready, no order guarantee -->
<script src="analytics.js" async></script>
<!-- Dynamic loading — loads on demand, best for non-essential scripts -->
<script>
// Load chat widget only when user scrolls past fold
const observer = new IntersectionObserver((entries) => {
if (entries[0].isIntersecting) {
const script = document.createElement("script");
script.src = "https://chat-widget.example.com/widget.js";
document.body.appendChild(script);
observer.disconnect();
}
});
observer.observe(document.querySelector("#footer"));
</script> Wann jeweils zu verwenden ist:
- aufschieben: Theme-JavaScript, App-Skripte, die davon abhängen, dass DOM bereit ist
- asynchron: Analyseskripte (GA4, Meta Pixel) – unabhängig, keine DOM-Abhängigkeit
- Dynamische Belastung: Chat-Widgets, Bewertungs-Widgets, alles unterhalb der Falte
Bei Shopify besteht die Herausforderung darin, dass Sie nicht kontrollieren können, wie Apps ihre Skripte einfügen. Die meisten Apps fügen hinzu <script> Tags ohne async oder defer. Genau das ist es Thunder wird automatisch verarbeitet – es verzögert nicht unbedingt erforderliche Skripte, unabhängig davon, wie Apps sie ursprünglich geladen haben.
Entfernen von ungenutztem JavaScript aus Shopify
Das schnellste JavaScript ist das JavaScript, das Sie überhaupt nicht laden. So reduzieren Sie Ihre gesamte JS-Nutzlast:
1. Überwachen und entfernen Sie nicht benötigte Apps
Jede installierte App fügt JavaScript hinzu. Prüfen Sie jede App und fragen Sie: Rechtfertigen die Umsatzauswirkungen dieser App ihre Leistungskosten? Häufige Kandidaten für eine Entfernung:
- Trust-Badge-Apps (durch statisches HTML/CSS ersetzen – spart 30–80 KB)
- Ankündigungsleisten-Apps (verwenden Sie die integrierte Ankündigungsleiste des Themas)
- SEO-Apps, die nur Meta-Tags hinzufügen (tun Sie dies manuell im Theme-Code)
- Apps, die Sie zum Testen installiert und vergessen haben
2. Bereinigen Sie übrig gebliebenen App-Code
Überprüfen Sie nach der Deinstallation einer App Ihre Theme-Dateien auf verwaiste Skriptreferenzen:
- Suchen
theme.liquidundlayout/-Dateien für externe Skriptdomänen - Überprüfen Sie die
snippets/Ordner für App-spezifisch.liquid-Dateien - Schau rein
assets/für JS-Dateien, die zu entfernten Apps gehören
3. Ersetzen Sie schwere Bibliotheken
Einige Themes und Apps laden immer noch jQuery (90 KB) oder andere umfangreiche Bibliotheken. Moderne Alternativen:
- jQuery → nativ
document.querySelectorundfetch(0 KB – in Browser integriert) - Slick-Slider (43 KB) → nativer CSS-Scroll-Snap oder leichter Swiper (minimaler Build)
- Moment.js (70 KB) → nativ
Intl.DateTimeFormatoder day.js (2 KB)
Shopifys Dawn-Theme wurde speziell dafür entwickelt, umfangreiche Abhängigkeiten zu vermeiden: Es verwendet Vanilla-JavaScript ohne jQuery. Wenn Ihr Theme noch immer von jQuery abhängt, spricht das deutlich für ein Theme-Upgrade. Weitere Hinweise finden Sie in unserem Leitfaden zu renderblockierenden Ressourcen.
Interaktionsbasiertes Laden: Laden Sie JS nur bei Bedarf
Viele Shopify-Skripte müssen beim Laden der Seite nicht ausgeführt werden. Chat-Widgets, Bewertungskarussells und Produktempfehlungen sind nur dann von Bedeutung, wenn der Benutzer zu ihnen scrollt oder mit der Seite interagiert. Das Laden im Voraus verschwendet Bandbreite und blockiert den Hauptthread ohne Grund.
IntersectionObserver für scrollbasiertes Laden
Laden Sie Skripte, wenn ihr Zielelement das Ansichtsfenster betritt:
// Load review widget JS only when reviews section is visible
const reviewSection = document.querySelector("#product-reviews");
if (reviewSection) {
const observer = new IntersectionObserver((entries) => {
if (entries[0].isIntersecting) {
// Load the review app script
const script = document.createElement("script");
script.src = "https://reviews-app.example.com/widget.js";
document.body.appendChild(script);
observer.disconnect();
}
}, { rootMargin: "200px" }); // Start loading 200px before visible
observer.observe(reviewSection);
} Benutzerinteraktionsauslöser
Einige Skripte sollten nur geladen werden, wenn der Benutzer aktiv interagiert:
// Load chat widget only on first user interaction
let chatLoaded = false;
function loadChat() {
if (chatLoaded) return;
chatLoaded = true;
const script = document.createElement("script");
script.src = "https://chat.example.com/widget.js";
document.body.appendChild(script);
}
// Trigger on any user interaction
["mouseover", "touchstart", "scroll", "keydown"].forEach(event => {
document.addEventListener(event, loadChat, { once: true });
}); Dieses Muster eignet sich gut für Chat-Widgets, Pop-up-Skripte und Treueprogramm-Widgets. Der Benutzer erhält einen schnellen anfänglichen Ladevorgang und das Widget erscheint innerhalb von 100–200 ms nach seiner ersten Interaktion – eine nicht wahrnehmbare Verzögerung. Das vollständige Bild zur Optimierung der Interaktivität finden Sie in unserem Leitfaden zur INP-Optimierung.
Code-Splitting und Tree Shaking für Shopify
Wenn Sie benutzerdefiniertes JavaScript für Ihr Shopify-Theme erstellen (oder mit einem Entwickler zusammenarbeiten), können moderne Bündelungstechniken die Menge, die an den Browser gesendet wird, erheblich reduzieren:
Codeaufteilung
Anstatt das gesamte JavaScript in einer großen Datei zu bündeln, teilen Sie es in kleinere Teile auf, die bei Bedarf geladen werden:
- Routenbasierte Aufteilung: Produktseiten-JS wird nur auf Produktseiten geladen, Sammlungs-JS nur auf Sammlungsseiten
- Komponentenbasierte Aufteilung: Die modale Schnellansicht von JS wird nur geladen, wenn der Benutzer auf „Schnellansicht“ klickt.
- Lieferantensplitting: Separate Anbieterbibliotheken in ihr eigenes zwischengespeichertes Paket
Baumschütteln
Tree Shaking entfernt ungenutzte Exporte aus JavaScript-Modulen. Wenn Ihr Theme eine Dienstprogrammbibliothek importiert, aber nur 3 von 50 Funktionen verwendet, eliminiert Tree Shaking die anderen 47. Dies erfordert die ES-Modulsyntax (import/export) und einen Bundler wie Vite, Webpack oder esbuild.
Beispiel für Auswirkung: Durch den gesamten Import von lodash werden 72 KB hinzugefügt. Nur Import lodash/debounce fügt 1KB hinzu. Das ist eine 98.6% Reduzierung durch eine einzige Importänderung.
Die meisten Händler implementieren Code-Splitting oder Tree-Shaking nicht direkt – das sind Optimierungen auf Entwicklerebene. Wenn Sie jedoch mit einem Entwickler an einem benutzerdefinierten Thema arbeiten, bestehen Sie auf diesen Vorgehensweisen. Sie können Theme-JavaScript um 40–60 % reduzieren. Für einen detaillierten Blick darauf, wie das Dawn-Thema erledigt dies, siehe unseren Leitfaden zur Themengeschwindigkeit.
Web Worker: Auslagerung umfangreicher JavaScript-Berechnungen
Web Worker führen JavaScript in einem separaten Hintergrund-Thread aus, sodass der Haupt-Thread für Benutzerinteraktionen frei bleibt. Sie sind nützlich, wenn Ihr Shop umfangreiche Berechnungen durchführt, die andernfalls Probleme verursachen würden:
- Komplexe Produktfilterung mit Hunderten von Varianten
- Preisberechnungen über mehrere Währungen hinweg oder Mengenrabatte
- Verarbeitung großer Produktdatensätze für Suchfunktionen
- Bildverarbeitung für Anpassungstools (Gravurvorschauen usw.)
Einschränkung: Web Worker können nicht auf das DOM zugreifen. Sie können Daten nur über an den Hauptthread zurücksenden postMessage. Für die meisten Shopify-Shops ergeben sich größere Vorteile aus der Reduzierung und Verzögerung von JavaScript, anstatt es in Worker zu verschieben. Worker sind ein Präzisionswerkzeug für spezifische Rechenengpässe.
JS-Optimierung: Manuell vs. Thunder
| Optimierung | Manueller Ansatz | Mit Thunder |
|---|---|---|
| Skriptverzögerung | Bearbeiten Sie theme.liquid und fügen Sie defer/async pro Skript hinzu | Automatische Zurückstellung unkritischer Skripte |
| App JS-Verwaltung | Keine Kontrolle darüber, wie Apps JS injizieren | Verzögert App-Skripte automatisch |
| Laden von Skripten von Drittanbietern | Erstellen Sie benutzerdefinierte interaktionsbasierte Loader | Optimierte Ladereihenfolge integriert |
| Laufende Wartung | Erneutes Audit, wenn sich Apps ändern | Passt sich automatisch an neue Skripte an |
| Gefahr einer Funktionsstörung | Hoch – Eine falsche Verzögerungsreihenfolge kann zu Funktionsstörungen führen | Niedrig – getestet für alle Hauptthemen |
Bester Ansatz: Kombinieren Sie die manuelle Bereinigung (Entfernen nicht verwendeter Apps, Bereinigen verwaisten Codes) mit Thunders automatische JS-Optimierung. Siehe aktuelle Pläne.
Checkliste zur JavaScript-Optimierung von Shopify
Nach Auswirkungen geordnet — beginnen Sie oben:
- Installieren Sie den Thunder Page Speed Optimizer – Verwaltet automatisch die Skriptverzögerung und App-JS-Optimierung. Jetzt installieren
- Installierte Apps prüfen – Entfernen Sie Apps, die Sie nicht aktiv nutzen. Jeder fügt 30-150 KB JS hinzu.
- Bereinigen Sie verwaisten App-Code — Durchsuchen Sie Themendateien nach Skriptreferenzen von deinstallierten Apps.
- Führen Sie Chrome Coverage aus – Identifizieren Sie nicht verwendetes JS auf Ihren Hauptseitentypen.
- Auf jQuery-Abhängigkeit prüfen – Wenn Ihr Theme jQuery lädt, sollten Sie ein Upgrade auf ein modernes Theme wie Dawn in Betracht ziehen.
- Interaktionsbasiertes Laden implementieren – Laden Sie Chat, Rezensionen und Widgets unterhalb der Falte beim Scrollen/Interaktion.
- Optimieren CSS neben JS – Beide Block-Rendering; Gemeinsam optimieren, um maximale Wirkung zu erzielen.
- Test nach Änderungen – Laufen unser Geschwindigkeitstest und überprüfen Sie die Funktionalität auf allen Seitentypen.
Häufig gestellte Fragen zur Shopify-JavaScript-Optimierung
Wie viel JavaScript lädt ein typischer Shopify-Shop?
Ein Standard-Shopify 2.0-Theme wie Dawn lädt 150–250 KB JavaScript. Nach der Installation von Apps, dem Hinzufügen benutzerdefinierter Funktionen und der Integration von Tools von Drittanbietern (Analysen, Chat-Widgets, Bewertungs-Apps) laden die meisten Shops 400–800 KB+ JS. Einige stark angepasste Stores überschreiten 1 MB. Jede installierte App fügt normalerweise 30–150 KB eigenes JavaScript hinzu, und dieses JS wird häufig auf jeder Seite geladen, unabhängig davon, ob es benötigt wird.
Was ist der Unterschied zwischen Async und Defer für Shopify-Skripte?
Sowohl „async“ als auch „defer“ bewirken, dass Skripte das Rendern nicht blockieren, sie verhalten sich jedoch unterschiedlich. „defer“ lädt das Skript parallel herunter und führt es aus, nachdem der HTML-Code vollständig analysiert wurde, wobei die Skriptreihenfolge beibehalten wird. „async“ lädt parallel herunter, führt es jedoch sofort aus, wenn es bereit ist, unabhängig von der HTML-Analyse oder der Skriptreihenfolge. Für Shopify ist Defer normalerweise sicherer, da viele Skripte von anderen Skripten (wie jQuery) abhängen. Verwenden Sie Async nur für unabhängige Skripte wie Analysen, die von nichts anderem abhängen.
Reduziert das Entfernen von Shopify-Apps JavaScript?
Ja – jede Shopify-App injiziert typischerweise 30-150KB JavaScript in Ihren Shop. Das Entfernen einer App entfernt ihr JS, aber nicht immer vollständig. Einige Apps hinterlassen auch nach der Deinstallation Code-Snippets in Ihren Theme-Dateien. Suchen Sie nach dem Entfernen einer App in den Layout- und Snippet-Dateien Ihres Themes nach verbleibenden Verweisen auf die Domain oder Skriptdateien der App. Ein Shop, der von 15 Apps auf 8 reduziert, kann die JS-Nutzlast um 200-400KB reduzieren.
Warum besteht mein Shopify-Shop die Prüfung „JavaScript-Ausführungszeit reduzieren“ nicht?
Dieses Lighthouse-Audit markiert, wenn der Browser mehr als 2 Sekunden mit dem Parsen, Kompilieren und Ausführen von JavaScript verbringt. Häufige Ursachen bei Shopify: Zu viele Apps laden JS auf jeder Seite, nicht optimiertes Theme-JavaScript mit starker DOM-Manipulation, Chat-Widgets werden sofort initialisiert, Analyseskripte werden synchron ausgeführt und Überprüfungs-Widgets werden beim Laden der Seite statt beim Scrollen gerendert. Der Fix besteht darin, die gesamte JS zu reduzieren, unkritische Skripte zurückzustellen und interaktive Widgets nur bei Bedarf zu laden.
Kann ich Web Worker auf Shopify verwenden, um die JS-Leistung zu verbessern?
Ja, aber mit Einschränkungen. Web Worker führen JavaScript in einem Hintergrund-Thread aus und halten den Haupt-Thread für Benutzerinteraktionen frei. Auf Shopify können Sie aufwendige Berechnungen wie Preisberechnungen, Bestandsfilterung oder Datenverarbeitung an Web Worker auslagern. Web Worker können jedoch nicht direkt auf das DOM zugreifen, daher sind sie nicht für UI-Rendering-Aufgaben geeignet. Für die meisten Shopify-Shops ergeben sich größere Vorteile aus der Reduzierung des gesamten JS und der Verzögerung nicht-kritischer Skripte, anstatt Web Worker zu implementieren.
Wie optimiert Thunder JavaScript in Shopify-Shops?
Thunder Page Speed Optimizer verzögert unkritisches JavaScript, sodass es nach dem Rendern der Seite geladen wird, wodurch die Gesamtblockierungszeit reduziert und die Interaktion mit dem nächsten Paint verbessert wird. Es identifiziert, welche Skripte für das „Above-the-Fold“-Rendering unerlässlich sind und welche verzögert werden können – einschließlich App-Skripten, Analysen, Chat-Widgets und Theme-JavaScript, das nicht sofort benötigt wird. Dies geschieht automatisch ohne Codeänderungen und funktioniert in allen Shopify 2.0-Themes.
Machen Sie das JavaScript Ihres Shopify-Shops intelligenter
JavaScript ist der größte Leistungsengpass in den meisten Shopify-Shops. Es blockiert die Interaktivität, erhöht die Core Web Vitals-Scores und wirkt sich direkt aus SEO-Rankings und Umrechnungskurse. Die gute Nachricht: Sie müssen den Code Ihres Shops nicht neu schreiben.
Beginnen Sie mit Thunder Page Speed Optimizer für automatische Skriptverzögerung und App-JS-Verwaltung. Überprüfen Sie dann manuell Ihre installierten Apps – durch das Entfernen von 3–4 unnötigen Apps können über Nacht über 200 KB JavaScript eingespart werden. Für ein vollständiges Optimierungsbild kombinieren Sie die JS-Optimierung mit CSS-Optimierung, TTFB-Verbesserungen, und Liquid-Template-Optimierung.
Testen Sie jetzt Ihren Shop , um zu sehen, wie stark sich JavaScript auf Ihre Leistung auswirkt. Eine vollständige Optimierungs-Roadmap finden Sie in unserer Vollständiger Leitfaden zur Shopify-Geschwindigkeitsoptimierung.
Professionelle Speed-Optimierung für Ihren Shop
Unser Team kümmert sich um alles — Theme-Optimierung, App-Bereinigung, Core Web Vitals Garantie. Die meisten Shops in 2 Wochen optimiert.
✅ Core Web Vitals Garantie · ⚡ 2 Wochen Lieferzeit · 🎁 6 Monate Thunder gratis
Ab €1.500 · Mehr erfahren