We moved Railway's frontend off Next.js. Builds went from 10+ mins to under 2
Next.js avait permis de mettre en production railway.com et d'atteindre des millions d'utilisateurs, mais il est devenu inadapté à une application majoritairement côté client en raison de temps de build longs et d'un modèle server-first mal adapté. L'équipe a choisi Vite + TanStack Start pour un modèle explicite et client-first offrant du routage typé, des layouts de première classe, un HMR instantané et la possibilité d'utiliser le SSR uniquement là où il est utile. La migration s'est faite en deux pull requests : la première a supprimé toutes les dépendances spécifiques à Next.js et la seconde a remplacé le framework en migrant plus de 200 routes, en extrayant les composants, en ajoutant Nitro comme couche serveur et en consolidant les règles de redirection et de cache, le tout mergé sans interruption de service. En contrepartie, l'équipe a renoncé à des fonctionnalités natives de Next.js comme l'optimisation d'images et certains outils de l'écosystème, en les remplaçant par Fastly et des solutions internes tout en acceptant une maturité moindre de TanStack Start. Le résultat est un cycle d'itération beaucoup plus rapide — les builds passent de plus de dix minutes à moins de deux, le serveur de développement démarre instantanément, les assets chunkés et mis en cache au bord réduisent la bande passante téléchargée par les utilisateurs et facilitent des déploiements zero-downtime et des previews par PR.