Saltar al contenido

Migración y rescate de Next.js

De Pages Router a App Router, de otro framework a Next.js, o una base de código heredada que nadie quiere tocar — migrada de forma incremental, en producción y sin congelar el desarrollo.

Dos situaciones traen aquí a la mayoría de los equipos. O una aplicación Next.js existente se ha quedado pequeña en Pages Router y el camino incremental no es evidente, o una aplicación construida por otros se ha convertido en algo que el equipo actual tiene miedo de desplegar.

Ambas tienen solución. Ninguna requiere una reescritura.

De Pages Router a App Router

Los dos routers interoperan. Esa es toda la estrategia: una aplicación compartida donde app/ y pages/ coexisten, migrada desde las hojas, con cada ruta moviéndose tras su propio pull request y su propia verificación.

Empezamos por rutas de poco tráfico y bajo riesgo para construir los patrones compartidos —layouts, acceso a datos, límites de error— y luego subimos hasta las rutas que importan. La obtención de datos pasa de getServerSideProps al árbol de componentes. El estado de cliente que solo existía para compensar el modelo de renderizado antiguo suele desaparecer por completo.

De otro framework a Next.js

Create React App, SPAs con Vite, Gatsby y una larga cola de configuraciones de webpack a medida. La parte mecánica es el enrutado y la configuración de build; la parte que exige criterio es decidir cuáles de las suposiciones de la aplicación eran artefactos del framework y cuáles eran requisitos reales.

Bases de código heredadas

Antes de cambiar nada, lo leemos todo. Dos semanas de orientación producen un mapa de dependencias, un inventario de renderizado de cada ruta, una lista de lo que está muerto y un registro de riesgos priorizado. Ese documento es tuyo independientemente de lo que decidas después: es lo que vuelve gobernable la base de código, y varios clientes se lo han llevado a casa y han hecho el trabajo ellos mismos.

Nos parece un resultado razonable.

Preguntas frecuentes

¿Tenemos que dejar de publicar funcionalidades durante la migración?
No. App Router y Pages Router conviven en la misma aplicación, así que migramos ruta a ruta mientras tu equipo sigue publicando. Un congelamiento de funcionalidades es señal de que la migración se planificó mal.
¿Y si el código existente es realmente malo?
Entonces lo decimos, con detalles y una comparación de costes entre migración incremental y reconstrucción de la superficie afectada. No tenemos ningún incentivo para recomendar el camino largo, y reescribir suele ser la respuesta equivocada.
¿Podéis haceros cargo de un proyecto que el equipo anterior abandonó?
Sí. Es una parte considerable de nuestro trabajo. Empezamos con dos semanas de orientación —leer, mapear y documentar— antes de tocar nada, y ese mapa es tuyo continúes o no con nosotros.