Reducing local dev time by 83%: Why we migrated off Next.js
Bài tóm tắt Inngest 2026 2. Tăng trưởng Độ khó: Dễ
Inngest · 2026 · 2. Tăng trưởng · Độ khó: Dễ — bài gốc
Đối chiếu với Railway 2026: cùng năm, cùng hướng (Next.js → TanStack), Railway vì build production chậm, Inngest vì load trang lúc dev chậm.
Bối cảnh
- Inngest từng chuyển từ Vite sang Next.js "trong chưa tới một ngày", dùng App Router từ bản beta và React Server Components (RSC) với lời hứa bỏ được màn hình trống và network waterfall của SPA.
- Theo tác giả, Next.js tối ưu cho đội frontend chuyên trách. Ở một đội nhỏ mà ai cũng kiêm nhiều việc,
"use client"/"use server", nhiều tầng API cache, ranh giới mờ giữa RSC và client component là chi phí nhận thức cộng dồn.
Thay đổi chính
- Thử cứu trước: lùi khỏi RSC, ưu tiên client component; dễ chịu hơn một thời gian rồi chậm lại: load trang đầu tiên lúc dev 10–12 giây trở lên. Nâng cấp Next.js, dùng công cụ profiling của Vercel: không đỡ. Thử Turbopack hai lần (mỗi lần phải nâng dependency và refactor; dev dùng Turbopack nhưng production vẫn Webpack nên hai môi trường khác nhau): chỉ bớt vài giây.
- Đánh giá phương án: prototype TanStack Start, Deno Fresh, React Router v7 (Remix). Không cái nào bị loại hẳn; lo ngại là Fresh chậm ra v2 và Remix đổi hướng nhiều lần; TanStack Start vẫn ở release candidate. Chọn TanStack vì đội đã dùng các thư viện khác của TanStack và hào hứng với nó.
- Big-bang hay dần dần: đi dần cần routing có điều kiện và import có điều kiện trong thư viện component dùng chung (vốn dựa nhiều vào tiện ích của Next.js). Thử chuyển vài route để ước lượng, thấy nhanh nên chuyển hết: app Dev Server mất khoảng một tuần; Dashboard vài tuần công của một engineer có AI hỗ trợ. Component dùng chung thì nhân bản bản Next.js thành bản TanStack.
- Dùng AI có kiểm soát: người chuyển một route và con của nó, lập mẫu fetch server/client, rồi để AI chép mẫu sang route tương tự; người kiểm và dọn. Chặn phát triển tính năng chỉ 2–3 ngày lúc merge cuối và UAT.
- Kết quả (theo Inngest): load trang đầu tiên lúc dev hiếm khi quá 2–3 giây và chỉ ở route đầu tiên; các route sau gần như tức thì. Có đúng một lần phải rollback ngay, ở một luồng tích hợp khó test ngoài production.
Vì sao
- Đổi quy ước ngầm (directive) lấy cấu hình route và data loader tường minh hợp với đội không chuyên frontend.
Bài học cho SWE
- Big-bang đồng nghĩa PR khổng lồ không review theo kiểu thường được; Inngest bù bằng UAT rộng. Theo tác giả, đầu tư hạ tầng để chuyển dần chỉ đáng ở môi trường rất ngại rủi ro.
- Build và compile sớm, thường xuyên; đừng chỉ tin dev mode vì hành vi khác bản build (code server lọt vào bundle client rất khó lần từ lỗi build).
Liên quan
- Railway 2026 · Stripe 2022 (big-bang có chuẩn bị) · Yelp 2026 (đi dần bằng adapter)
- Kiến trúc frontend
#Next.js#App Router#React Server Components#Turbopack#TanStack Start#Vite#Big-bang migration#Developer experience#AI-assisted migration
Được nhắc tới trong
Chủ đề (1)
Công ty (1)
Bài tóm tắt (2)