Einleitung: Warum Performance jetzt ein Ranking-Faktor ist
Seit Mai 2021 sind Core Web Vitals offiziell ein Ranking-Faktor bei Google. Das bedeutet: Ein schneller Shop rankt besser als ein langsamer, selbst wenn der Inhalt identisch ist.
Noch wichtiger: Conversion Rate und Core Web Vitals sind direkt korreliert. Studien zeigen:
- Jede Sekunde Verzögerung kostet dich 7% Conversions
- Ein Shop mit „gut" bewerteten Core Web Vitals konvertiert 24% besser als ein Shop mit „schlecht" bewerteten
- Mobile Performance ist entscheidend: 65% des E-Commerce Traffic kommt mobil
Für Shopify-Shops ist das besonders wichtig, weil:
- Viele Apps bremsen die Performance
- Third-Party Scripts (Analytics, Tracking, Marketing) werden schnell unkontrollierbar
- Mobile-First-Indexing favorisiert schnelle Mobile-Seiten
Bei smplx. haben wir Shops wie Bekateq von 4,2 Sekunden auf 2,1 Sekunden LCP gebracht – und damit ihre Conversion Rate um 18% erhöht.
In diesem Artikel zeigen wir dir, wie du Core Web Vitals meistern wirst.
1. Die drei Core Web Vitals verstehen
LCP (Largest Contentful Paint) – Das Tempo wahrnehmen
Was ist LCP? LCP misst, wie schnell der größte sichtbare Inhalt lädt. Das ist normalerweise:
- Ein Produkt-Bild
- Ein Hero-Banner
- Ein Text-Block
Benchmark:
- Grün (gut): < 2,5 Sekunden
- Orange (verbesserungsbedürftig): 2,5 – 4,0 Sekunden
- Rot (schlecht): > 4,0 Sekunden
Wie Google LCP misst:
User startet die Seite
↓
[0s] Weiß
[0,5s] Logo erscheint
[1,2s] Text wird sichtbar
[2,0s] HERO IMAGE LÄDT ← Das ist dein LCP
[2,5s] Weitere Elemente laden
Der LCP ist also nicht die Zeit, bis die Seite vollständig geladen ist, sondern bis das größte Element sichtbar ist.
INP (Interaction to Next Paint) – Die Reaktion spüren
Was ist INP? INP misst die Zeit zwischen Nutzer-Aktion und visueller Antwort:
- User klickt auf Filterbutton
- [Verzögerung] ← Das ist INP
- Filter werden angewendet
Benchmark:
- Grün: < 200 Millisekunden
- Orange: 200 – 500 ms
- Rot: > 500 ms
Typische INP-Probleme in Shopify:
- Filter/Sortierung-Buttons reagieren langsam
- Produktoptionen (Farbe, Größe) ändern sich mit Verzögerung
- Add-to-Cart Button friert ein
- Suchvorhersagen brauchen zu lange
CLS (Cumulative Layout Shift) – Die Stabilität spüren
Was ist CLS? CLS misst, wie viel sich Layout unerwartet verschiebt. Jede Bewegung ist frustrierend:
Beispiel schlechtes CLS:
Nutzer sieht Preis: 89,99€
Nutzer möchte klicken
[Währungssymbol lädt] ← Layout verschiebt sich um 0,05 Einheiten
Nutzer klickt zu früh oder daneben
Benchmark:
- Grün: < 0,1
- Orange: 0,1 – 0,25
- Rot: > 0,25
Hauptverursacher von CLS in Shopify:
- Bilder ohne definierte Höhe
- Eingebettete Ads/Pop-ups
- Lazy-geladene Bilder
- Fonts die sich noch laden
2. LCP optimieren: Die Hero-Image Strategie
Problem: Hero-Bilder sind oft zu groß
Ein typisches Hero-Bild auf Shopify:
- Größe: 2-5 MB (unkomprimiert)
- Format: JPG
- Auflösung: 1920x1200px
Das kann 4-6 Sekunden LCP bedeuten, besonders auf Mobile.
Lösung: WebP + Responsive Images
Schritt 1: WebP Format verwenden
WebP ist 25-35% kleiner als JPG, bei gleicher Qualität.
<!-- Shopify Section Code -->
<picture>
<source srcset="{{ 'hero.webp' | asset_url }}" type="image/webp">
<img src="{{ 'hero.jpg' | asset_url }}" alt="Hero Banner" loading="eager">
</picture>
Schritt 2: Responsive Bilder Sizes definieren
<img
src="{{ hero_image | img_url: '800x600' }}"
srcset="{{ hero_image | img_url: '400x300' }} 400w,
{{ hero_image | img_url: '800x600' }} 800w,
{{ hero_image | img_url: '1200x900' }} 1200w"
sizes="(max-width: 600px) 400px,
(max-width: 1024px) 800px,
1200px"
alt="Hero"
loading="eager">
Dies stellt sicher:
- Mobile bekommt 400px Bild (statt 1920px)
- Tablet bekommt 800px Bild
- Desktop bekommt 1200px Bild
Ergebnis: LCP von 4,2s auf 2,1s (typisch für Bekateq-ähnliche Optimierungen)
Schritt 3: Preload kritischer Ressourcen
Im Theme's <head> hinzufügen:
<link rel="preload" as="image" href="{{ 'hero.webp' | asset_url }}" imagesrcset="{{ 'hero-400.webp' | asset_url }} 400w, {{ 'hero-800.webp' | asset_url }} 800w" imagesizes="(max-width: 600px) 400px, 800px">
<link rel="preload" as="font" href="{{ 'font.woff2' | asset_url }}" type="font/woff2" crossorigin>
Preload sagt Browser: "Diese Ressource ist wichtig, lade sie sofort."
3. CLS verhindern: Layout Stabilität
Häufigste CLS-Fehler in Shopify und Lösungen
Fehler 1: Bilder ohne definierten Aspect Ratio
<!-- FALSCH: Browser weiß nicht, wie viel Platz reservieren -->
<img src="product.jpg" alt="Product">
<!-- RICHTIG: Mit CSS Aspect Ratio -->
<img
src="product.jpg"
alt="Product"
width="400"
height="400"
style="aspect-ratio: 1;">
Fehler 2: Lazy-geladene Bilder ohne Container
/* FALSCH: Kein Platz reserviert */
.product-image {
width: 100%;
/* Höhe fehlt! */
}
/* RICHTIG: Padding-Bottom-Trick */
.product-image-container {
position: relative;
width: 100%;
padding-bottom: 100%; /* 1:1 Aspect Ratio */
}
.product-image {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
object-fit: cover;
}
Fehler 3: Fonts laden und ändern das Layout
/* FALSCH: Fallback-Font verursacht Shift */
body {
font-family: 'Roboto', sans-serif;
}
/* RICHTIG: Roboto laden ohne Shift */
@font-face {
font-family: 'Roboto';
src: url('roboto.woff2') format('woff2');
font-display: swap; /* Zeige Fallback, ersetze später */
}
Mit font-display: swap wird die Seite sofort mit Fallback-Font angezeigt, Roboto lädt im Hintergrund nach.
Fehler 4: Ads und Pop-ups injiziert Google Ads, Intercom etc.)
// FALSCH: Ad wird injiziert, verschiebt Layout
<div id="ad-container"></div>
<script>
// Ad wird nachgeladen
loadAd();
</script>
// RICHTIG: Container mit fixer Höhe
<div id="ad-container" style="height: 250px; overflow: hidden;"></div>
<script>
loadAd(); // Passt sich in den Container
</script>
4. INP optimieren: Schnelle Interaktionen
Das INP-Problem in Shopify
Der größte INP-Killer in Shopify ist zu viel JavaScript:
Zu viele Apps installiert
- Jede App injiziert JavaScript
- 10 Apps = möglicherweise 500KB+ extra JavaScript
Heavy Event Listeners
- Produktoptionen (Varianten-Auswahl) sind oft langsam
- Filter-Anwendung braucht zu lange
Render-Blocking Scripts
- Analytics, Tracking-Code blockiert Page Render
Lösung: JavaScript optimieren
Schritt 1: Weniger Apps
Audit deine installierten Apps:
Admin > Apps und Kanäle > Apps und Vertriebskanäle
Fragen:
- Brauche ich diese App wirklich?
- Kann eine andere App 2-3 Funktionen übernehmen?
- Verursacht die App merkbare Performance-Verluste?
Effekt: Jede entfernte App spart 10-50KB JavaScript.
Schritt 2: Third-Party Scripts asynchron laden
<!-- FALSCH: Blockiert Page Render -->
<script src="analytics.js"></script>
<!-- RICHTIG: Asynchron laden -->
<script async src="analytics.js"></script>
<!-- RICHTIG: Deferred laden (nach Page Load) -->
<script defer src="analytics.js"></script>
Schritt 3: JavaScript Code Splitting
Wenn dein Theme viel Custom JavaScript hat, teile es auf:
// FALSCH: Alles in einem großen Bundle
// main.js = 250KB (Produktseite, Checkout, etc. alles drin)
// RICHTIG: Teilen nach Seite
// products.js = 80KB (nur Produktseite)
// checkout.js = 60KB (nur Checkout)
// common.js = 50KB (auf allen Seiten)
Schritt 4: Event Listener Optimization
Für Varianten-Selector (oft sehr langsam):
// FALSCH: Event Listener auf JEDEM Varianten-Button
document.querySelectorAll('.variant-btn').forEach(btn => {
btn.addEventListener('click', updatePrice); // Ändert DOM
btn.addEventListener('click', updateImage); // Ändert DOM
btn.addEventListener('click', updateInventory); // Ändert DOM
});
// RICHTIG: Event Delegation + Batched Updates
document.addEventListener('click', (e) => {
if (e.target.matches('.variant-btn')) {
const updates = {
price: calculatePrice(),
image: getImage(),
inventory: getInventory()
};
// Alle Updates in einem Render-Schritt
updateDOM(updates);
}
});
5. Case Study: Bekateq – Von 4,2s auf 2,1s LCP
Bekateq ist ein B2B E-Commerce Shop für Großflächenverteilung mit 24 Produkttemplates und hohem Anspruch an Performance.
Ausgangslage:
- LCP: 4,2 Sekunden
- CLS: 0,18 (orange)
- INP: 280ms (orange)
Probleme identified:
- Hero-Bilder waren 3-4 MB JPGs, responsive-bilder fehlten
- 12 Apps installiert, viele tracken jeden Seitenaufruf
- Keine Lazy Loading auf Produktbildern
- Variant-Selector triggerte komplette DOM-Re-render
Implementierte Optimierungen:
- LCP: WebP-Konvertierung + Responsive Image Sizes → LCP fällt auf 2,1s
- CLS: Aspect Ratio Definition auf alle Bilder → CLS fällt auf 0,05
- INP: 3 redundante Apps deinstalliert, Event Listeners optimiert → INP fällt auf 140ms
Ergebnisse:
- Sichtbarkeit: +34%
- Organischer Traffic: +47%
- Conversion Rate: +18%
- Bounce Rate: -22%
6. Shopify-spezifische Performance Bottlenecks
Apps und ihre Performance-Auswirkungen
Heavy Apps (>100KB JavaScript):
- Produktbewertungs-Apps
- Live-Chat-Tools
- Inventory-Management
- Advanced Analytics
Alternative: Native Shopify Features wo möglich nutzen.
Third-Party Scripts
Die größten Performance-Killer:
1. Google Tag Manager (GTM): +50KB
2. Facebook Pixel: +40KB
3. Intercom / Live Chat: +100KB
4. Zendesk: +80KB
5. Affiliates Tool: +60KB
Lösung: Scripts deferren und conditional laden
<!-- Lade Chat nur auf Product Pages -->
<script>
if (window.location.pathname.includes('/products/')) {
const s = document.createElement('script');
s.src = 'chat.js';
document.body.appendChild(s);
}
</script>
7. Core Web Vitals in Shopify Admin monitoren
Google PageSpeed Insights nutzen
- Gehe zu PageSpeed Insights
- Deine Shop-URL eingeben
- Analysen für Mobile und Desktop sehen
Wichtig: PSI nutzt FieldData (echte Nutzer) von Chrome-Nutzern. Dadurch können sich Werte täglich ändern.
Search Console Bericht
In Google Search Console (bei deinem Shop konfiguriert):
- "Core Web Vitals" Bericht öffnen
- Sehen, wie viele Seiten im grünen, orange, roten Bereich sind
- Klicken auf Problem, um betroffene URLs zu sehen
Beispiel:
- 85% Seiten haben "gute" Core Web Vitals → Gut
- 10% Seiten haben "verbesserungsbedürftig" → Arbeiten!
- 5% Seiten haben "schlecht" → Dringend fixen
Eigenes Monitoring mit Web Vitals Library
Du kannst Core Web Vitals auch selbst messen:
// Im Theme einbinden
<script>
// LCP messen
const observer = new PerformanceObserver((list) => {
const entries = list.getEntries();
const lastEntry = entries[entries.length - 1];
console.log('LCP:', lastEntry.renderTime || lastEntry.loadTime);
});
observer.observe({entryTypes: ['largest-contentful-paint']});
// CLS messen
let clsValue = 0;
const clsObserver = new PerformanceObserver((list) => {
for (const entry of list.getEntries()) {
if (!entry.hadRecentInput) {
clsValue += entry.value;
}
}
console.log('CLS:', clsValue);
});
clsObserver.observe({entryTypes: ['layout-shift']});
</script>
8. Performance Budgets setzen
Was ist ein Performance Budget?
Ein Performance Budget ist eine "Obergrenze", die du nicht überschreiten darfst:
LCP Budget: 2,5 Sekunden
CLS Budget: 0,1
INP Budget: 200ms
JS Bundle Size: 250KB
CSS Bundle Size: 50KB
Total Image Size: 500KB
Nutzen: Wenn ein neues App zu schwer ist, wird es abgelehnt.
Budget durchsetzen
- Für neue Apps: "Wird diese App LCP über 2,5s treiben?" → Nein? → Installieren
- Für neue Features: "Wird dieser Custom Code CLS verursachen?" → Nein? → Coden
- Reviews: Alle 3 Monate überprüfen, ob Budget eingehalten
9. Die smplx. Performance Optimization
Shopify Performance Audit & Optimization (ab 6k €):
- Umfassende Core Web Vitals Analyse (LCP, CLS, INP)
- Image Optimization & WebP Conversion
- JavaScript Minification und Code Splitting
- Lazy Loading Implementation
- App Audit und Empfehlungen
- Custom Performance Fixes
- Google PageSpeed Optimization
Ongoing Performance Monitoring (ab 1,5k €/mo):
- Monatliche Core Web Vitals Reports
- Performance Regression Detection
- App Performance Testing
- Quarterly Optimization Recommendations
Diese Investition zahlt sich durch höhere Conversions schnell zurück.
10. Performance Quick-Wins (sofort implementierbar)
- Bilder komprimieren: TinyPNG oder Shopify's native Image Editor nutzen
- Lazy Loading aktivieren:
loading="lazy"auf Product Images - Render-blocking JavaScript: async/defer nutzen
- Favicon cachen: sehr viele kleine Requests sparen
- Browser Caching: Shopify macht das auto, check Headers
Fazit: Performance ist kein nice-to-have mehr
Core Web Vitals sind jetzt Teil des Google Ranking Algorithms. Ein langsamer Shop wird nicht nur von Nutzern, sondern auch von Google bestraft.
Die gute Nachricht: Viele Optimierungen sind relativ einfach und haben massive ROI:
- Bessere Rankings
- Höhere Conversion Rates
- Bessere User Experience
- Weniger Bounce Rate
Nächste Schritte:
- PageSpeed Insights aufrufen und aktuelle Werte checken
- Search Console > Core Web Vitals Report
- Top 3 Probleme identifizieren
- Priorisieren nach Impact (LCP > CLS > INP)
Wenn du umfassende Performance-Optimierungen brauchst, kontaktiere das smplx. Team. Wir optimieren Shopify-Shops täglich und wissen genau, welche Hebel am meisten Performance-Gewinn bringen.
Kontakt: hello@smplx.de | Coesfeld, NRW