Web Performance mit Claude Code: Core Web Vitals optimieren 2026
Core Web Vitals sind Google-Rankingfaktor und Nutzererlebnis in einem — LCP, CLS und INP direkt messbar und optimierbar. Claude Code analysiert Performance-Probleme, erklärt Ursachen und generiert konkrete Fixes für schnellere Websites.
Core Web Vitals: LCP, CLS, INP
LCP
Largest Contentful Paint
Gut: <2,5s
Gut: <2,5s
CLS
Cumulative Layout Shift
Gut: <0,1
Gut: <0,1
INP
Interaction to Next Paint
Gut: <200ms
Gut: <200ms
LCPLargest Contentful Paint optimieren
# Prompt: "Analysiere warum unser LCP bei 4,2s liegt und gib konkrete Fixes"
# Häufigste LCP-Ursachen und Claude Code Fixes:
# 1. Hero Image nicht preloaded:
# VORHER: normales img-Tag — Browser entdeckt es spät
<img src="/hero.jpg" alt="Hero" />
# NACHHER: preload + Next.js Image mit priority
<link rel="preload" as="image" href="/hero.webp" />
<Image src="/hero.jpg" priority fetchPriority="high" />
# 2. Schriften blocken Rendering:
<link rel="preconnect" href="https://fonts.googleapis.com" />
# font-display: swap in CSS — Text sofort sichtbar
@font-face { font-display: swap; }
# 3. Server Response Time (TTFB) zu langsam:
# → ISR / Static Generation statt SSR wo möglich
# → CDN für statische Assets (Vercel Edge, Cloudflare)
# → Database Connection Pooling (PgBouncer, Prisma Accelerate)
# Next.js Image Optimierung (automatisch durch Claude Code):
import Image from 'next/image'
<Image
src="/hero.jpg"
width={1200} height={600}
priority // LCP-Element
sizes="(max-width: 768px) 100vw, 1200px"
placeholder="blur"
/>
Bundle Size: Weniger JavaScript
BundleJavaScript reduzieren
# Prompt: "Analysiere unser Next.js Bundle und finde die größten Einsparpotenziale"
# Bundle Analyzer starten:
npm install @next/bundle-analyzer
# next.config.js:
const withBundleAnalyzer = require('@next/bundle-analyzer')({ enabled: true })
# Typische Findings und Claude Code Fixes:
# 1. Moment.js (330KB!) → date-fns (tree-shakeable)
// VORHER:
import moment from 'moment' // 330KB!
// NACHHER:
import { format } from 'date-fns' // nur ~5KB
# 2. Lodash komplett importiert:
import _ from 'lodash' // 70KB
import debounce from 'lodash/debounce' // 2KB
# 3. Dynamic Imports für schwere Komponenten:
const RichTextEditor = dynamic(
() => import('@tiptap/react'),
{ ssr: false, loading: () => <EditorSkeleton /> }
)
# Editor lädt nur wenn Nutzer ihn braucht — nicht im Initial Bundle
Bundle-Prompt: "Zeige mir die größten Dependencies in package.json nach Bundle-Größe. Welche haben leichtere Alternativen? Implementiere die 3 wichtigsten Wechsel." Claude Code kennt Bundle-Größen und leichtere Alternativen.
CLS und INP: Layout Stability und Responsiveness
CLSLayout Shifts eliminieren
# Häufigste CLS-Ursachen:
# 1. Images ohne Dimensionen (SEHR häufig!)
# VORHER — Browser kennt Größe nicht vor dem Laden:
<img src="/product.jpg" />
# NACHHER — aspect-ratio reserviert Platz:
<img src="/product.jpg" width="800" height="600"
style="aspect-ratio: 4/3; height: auto" />
# 2. Dynamisch eingefügte Banner (Cookie-Consent, Notifications):
# → NIEMALS oben in den Content einfügen
# → Feste Höhe reservieren oder bottom-fixed
# INP optimieren — Interactions schnell machen:
# Lange Tasks aufteilen mit scheduler.yield():
async function handleClick() {
updateUI() // Sofort: UI-Update
await scheduler.yield() // Browser darf rendern
await heavyComputation() // Dann schwere Arbeit
}
# React 19: useTransition für nicht-dringende Updates
const [isPending, startTransition] = useTransition()
startTransition(() => {
setSearchResults(results) // Nicht-dringend — unterbrechbar
})
Performance-Modul im Kurs
Im Claude Code Mastery Kurs: vollständiges Performance-Modul mit Core Web Vitals, Bundle-Analyse, Image-Optimierung, Caching-Strategien und Lighthouse 100-Score als Ziel.
14 Tage kostenlos testen →