Begriff
Hydration erklärt: HTML interaktiv machen
Direkte Antwort
Hydration: Hydration ist der Vorgang, bei dem ein Framework wie React servergerendertes HTML im Browser übernimmt, Event-Handler und Zustand anhängt und die Seite damit interaktiv macht. Die Seite erscheint schnell als lesbares HTML, doch jede hydrierte Komponente kostet JavaScript und Main-Thread-Zeit. Hydriere deshalb nur, was wirklich Interaktion braucht.
Wichtigste Punkte
- Hydration macht aus fertigem Server-HTML eine interaktive Anwendung im Browser.
- Der Preis: JavaScript laden, parsen und ausführen — das belastet den Main Thread und INP.
- Statischer Marketingtext braucht in der Regel keine Hydration.
- Eine reine JS-Shell (leeres HTML) ist etwas anderes und schadet Extrahierbarkeit und Crawling.
— Steve Baka
Aktualisiert: · Autor: Steve Baka
Was ist Hydration?
Wenn eine Webseite per Server-Side Rendering oder statischer Generierung erzeugt wird, schickt der Server fertiges HTML an den Browser. Besucher sehen Text und Layout sofort, aber Knöpfe, Menüs und Formulare reagieren noch nicht, weil die Programmlogik fehlt. Hydration schließt diese Lücke: Das JavaScript-Framework lädt, durchläuft das vorhandene HTML, ordnet es seinen Komponenten zu und hängt Event-Listener und Zustand an. Das DOM wird dabei nicht neu gebaut, sondern „befeuchtet“, daher der Name.
React beschreibt das in der Dokumentation zu hydrateRoot: Die Funktion übernimmt HTML, das von React-DOM-Servermethoden erzeugt wurde, und macht es interaktiv. Wichtig ist, dass Server-HTML und Client-Rendering übereinstimmen; Abweichungen führen zu Hydration-Fehlern und zusätzlichem Aufwand.
Warum kostet Hydration Performance?
Hydration verlagert Arbeit in den Browser. Das Bundle muss geladen, geparst und ausgeführt werden, anschließend muss das Framework die Komponentenstruktur durchlaufen. Das geschieht im Main Thread, demselben Thread, der auch Klicks verarbeitet. Während dieser Zeit können Eingaben verzögert werden. Web.dev beschreibt in „Rendering on the Web“, dass SSR schnellen ersten Inhalt liefert, die Seite aber bis zur Hydration nicht reagiert, eine Phase, die sich wie eine „Uncanny Valley“ anfühlt: Es sieht fertig aus, ist aber noch nicht bedienbar.
Das zeigt sich in INP, dem Maß für die Reaktionsgeschwindigkeit. Je mehr Komponenten hydriert werden und je größer die Bundles, desto länger blockieren Aufgaben den Thread und desto häufiger kommen träge Klicks vor. Bei mobilen Geräten mit schwächerer CPU fällt das besonders auf.
Wie begrenzt du den Hydration-Aufwand?
- Server-Komponenten nutzen: In modernen Next.js-Setups laufen Komponenten standardmäßig auf dem Server und schicken kein JavaScript an den Client. Nur Komponenten mit Interaktion werden als Client-Komponenten markiert.
- Interaktion isolieren: Ein Formular oder Menü ist eine kleine Client-Insel, der Rest bleibt statisches HTML.
- Bundles verkleinern: Abhängigkeiten prüfen, Code-Splitting, Lazy Loading für Elemente unterhalb des sichtbaren Bereichs.
- Third-Party-Skripte reduzieren: Tracking, Chat und Widgets zählen oft mehr als der eigene Code.
- Messen: Chrome DevTools und Lighthouse zeigen lange Aufgaben und ungenutztes JavaScript.
Hydration vs. JS-Shell
Beide Begriffe werden vermischt. Bei Hydration kommt der Inhalt als fertiges HTML an, JavaScript ergänzt Interaktivität. Bei einer JS-Shell (clientseitiges Rendering) liefert der Server ein fast leeres Dokument mit einem Container, und der Inhalt entsteht erst nach dem Ausführen des JavaScripts. Crawler und KI-Abrufer, die kein JavaScript ausführen oder nur eingeschränkt, sehen dann wenig bis nichts. Für Marketing- und Fachseiten ist die Shell daher eine schlechte Wahl; siehe Crawlability.
Wie handhaben wir das bei Modern Stack?
Wir liefern Inhalte als HTML aus und begrenzen JavaScript auf Stellen, an denen es nötig ist: Formulare, Navigation auf Mobilgeräten, Webseiten-Check. Fachtexte, Glossar und Studienseiten bleiben statisch oder serverseitig. Das senkt Bundle-Größe, verbessert Core Web Vitals und sorgt dafür, dass der Text auch ohne JavaScript lesbar bleibt. Die Architekturentscheidungen dazu stehen im Thema SSR/SSG-Stack.
Typische Fehler
- Ganze Seiten als Client-Komponente markieren, obwohl nur ein Button interaktiv ist.
- Inhalte erst nach einem Client-Fetch rendern.
- Große Bibliotheken für kleine Effekte einbinden.
- Unterschiede zwischen Server- und Client-Ausgabe, die Hydration-Warnungen auslösen.
- Nur den Desktop messen, mobile Werte ignorieren.
Verwandte Themen
Quellen
- React — hydrateRoot — React
Offizielle Referenz, wie React servergerendertes HTML hydriert.
- web.dev — Rendering on the Web — Google web.dev
Vergleicht SSR, Hydration und clientseitiges Rendering samt Kosten.
- SSR/SSG-Stack — Modern Stack
Praxis, wie wir Rendering und Interaktivität trennen.
Häufige Fragen
Ist Hydration schlecht?
Nein. Sie ist nötig, damit servergerendertes HTML interaktiv wird. Zum Problem wird sie, wenn viel mehr Komponenten hydriert werden, als Interaktion brauchen: Das kostet Ladezeit und verzögert Eingaben.
Woran merke ich zu viel Hydration?
Lange Aufgaben im Main Thread, große JavaScript-Bundles und träge Klicks direkt nach dem Laden. Das zeigt sich in schlechtem INP und in Lighthouse-Hinweisen zu ungenutztem JavaScript.
Was ist der Unterschied zwischen Hydration und einer JS-Shell?
Bei Hydration kommt der Inhalt bereits als HTML vom Server und JavaScript ergänzt Interaktivität. Bei einer JS-Shell liefert der Server nur ein leeres Gerüst, und der Inhalt entsteht erst im Browser. Das ist schlechter für Crawler und KI-Abrufer.
Weiterlesen
- SSR
SSR (Server-Side Rendering) erzeugt das HTML einer Seite auf dem Server pro Anfrage, statt es dem Browser per JavaScript zusammenbauen zu lassen. Crawler, Assistenten und Nutzer erhalten den Inhalt sofort im ersten Response.
- INP
INP (Interaction to Next Paint) ist ein Core Web Vital, der misst, wie schnell eine Webseite nach Klick, Tipp oder Tastendruck sichtbar reagiert. Gut sind 200 Millisekunden oder weniger; schweres JavaScript und aufgeblähte Pagebuilder verschlechtern den Wert.
- SSR/SSG-Stack
Warum servergerendertes und statisch generiertes HTML die Basis für Performance, Crawlability und KI-Extraktion ist — und warum eine reine React-SPA für Marketingseiten meist nicht reicht.
- Next.js
Next.js ist ein React-Framework von Vercel für Webanwendungen und Unternehmensseiten. Es rendert Seiten auf dem Server oder vorab (SSR, SSG, ISR) und liefert fertiges HTML — gut für Geschwindigkeit, Suche und KI.
- Core Web Vitals
Core Web Vitals sind Googles drei Nutzererlebnis-Kennzahlen: LCP (Ladezeit des größten Elements), INP (Reaktionszeit auf Eingaben) und CLS (visuelle Stabilität). Sie fließen in die Suche ein und zeigen Timeout- und Abbruchrisiken auch für KI-Crawler.