Der App-Router ist seit zwei Jahren produktionsreif – und doch sind viele Projekte noch im Pages-Modell. Drei Beobachtungen aus der Praxis, die helfen, eine Migration ehrlich zu bewerten.
Server Components als Default
Der größte Hebel liegt im Default. Wenn jede Komponente erst client-seitig nachgedacht wird, schrumpft das JavaScript-Bundle massiv. Erst dort, wo Interaktion echt nötig ist, kommt 'use client' ins Spiel – und das ist seltener als gedacht.
Streaming und Suspense gezielt einsetzen
Streaming ist kein Selbstzweck. Es lohnt sich, wenn Teile der Seite langsamer laden als andere – ein Drittanbieter-Widget, eine teure Aggregation, eine personalisierte Empfehlung. Dann zeigt Suspense einen Skeleton, der Rest rendert sofort.
Caching ist mächtig – und gefährlich
- fetch-Caching ist Default an. Wer das nicht weiß, wundert sich über veraltete Daten.
- revalidatePath und revalidateTag sind die sauberen Wege, Caches gezielt zu kippen.
- force-dynamic in einer Marketing-Seite ist meistens ein Indiz für ein Modellproblem, kein Feature.
Pragmatischer Migrationspfad
Neue Routen direkt im App-Router bauen, alte parallel betreiben, schrittweise umziehen. Eine harte Umstellung an einem Stichtag scheitert in den meisten Codebases an Tausenden Detailpunkten. Iteration schlägt Big Bang.