Zum Inhalt springen

Next.js Migration & Rettung

Pages Router zu App Router, ein anderes Framework zu Next.js oder eine geerbte Codebasis, die niemand anfassen will — inkrementell migriert, im laufenden Betrieb, ohne Feature-Freeze.

Zwei Situationen führen die meisten Teams hierher. Entweder ist eine bestehende Next.js-Anwendung dem Pages Router entwachsen und der inkrementelle Weg ist nicht offensichtlich — oder eine von jemand anderem gebaute Anwendung ist zu etwas geworden, das das aktuelle Team nicht mehr zu deployen wagt.

Beides ist lösbar. Keines erfordert einen Rewrite.

Pages Router zu App Router

Die beiden Router arbeiten zusammen. Das ist die gesamte Strategie: eine gemeinsame Anwendung, in der app/ und pages/ koexistieren, migriert von den Blättern her, wobei jede Route hinter ihrem eigenen Pull Request und ihrer eigenen Verifikation umzieht.

Wir beginnen bei Routen mit wenig Traffic und geringem Risiko, um die gemeinsamen Muster aufzubauen — Layouts, Datenzugriff, Error Boundaries — und arbeiten uns dann zu den Routen vor, auf die es ankommt. Datenabrufe wandern aus getServerSideProps in den Komponentenbaum. Client-State, der nur existiert hat, um das alte Rendering-Modell auszugleichen, verschwindet meist ganz.

Ein anderes Framework zu Next.js

Create React App, Vite-SPAs, Gatsby und ein langer Schwanz maßgeschneiderter Webpack-Konfigurationen. Der mechanische Teil sind Routing und Build-Konfiguration; der Teil, der Urteilsvermögen braucht, ist die Entscheidung, welche Annahmen der Anwendung Framework-Artefakte waren und welche echte Anforderungen.

Geerbte Codebasen

Bevor wir etwas ändern, lesen wir alles. Zwei Wochen Orientierung ergeben eine Abhängigkeitskarte, ein Rendering-Inventar jeder Route, eine Liste dessen, was tot ist, und ein priorisiertes Risikoregister. Dieses Dokument gehört Ihnen, unabhängig davon, wie Sie sich danach entscheiden — es ist das, was die Codebasis wieder steuerbar macht, und mehrere Kunden haben es intern übernommen und die Arbeit selbst erledigt.

Wir halten das für ein vernünftiges Ergebnis.

Häufige Fragen

Müssen wir während der Migration aufhören, Features auszuliefern?
Nein. App Router und Pages Router laufen in derselben Anwendung nebeneinander, wir migrieren also Route für Route, während Ihr Team weiter ausliefert. Ein Feature-Freeze ist ein Zeichen dafür, dass die Migration schlecht geplant war.
Was, wenn der bestehende Code wirklich schlecht ist?
Dann sagen wir das, mit Belegen und einem Kostenvergleich zwischen inkrementeller Migration und Neubau der betroffenen Oberfläche. Wir haben keinen Anreiz, den längeren Weg zu empfehlen, und ein Rewrite ist meistens die falsche Antwort.
Können Sie ein Projekt übernehmen, das ein anderes Team aufgegeben hat?
Ja. Das ist ein erheblicher Teil unserer Arbeit. Wir starten mit zwei Wochen Orientierung — lesen, kartieren, dokumentieren — bevor wir irgendetwas anfassen, und Sie bekommen diese Karte, unabhängig davon, ob Sie mit uns weitermachen.