Cloudflare công bố vinext: tái hiện Next.js trên Vite chỉ trong 1 tuần nhờ AI
(blog.cloudflare.com)Một kỹ sư của Cloudflare đã công bố dự án "vinext (vee-next)", được viết lại hoàn toàn dựa trên Vite cho hạ tầng Next.js phức tạp với sự hỗ trợ của AI (Claude). Đây là một nỗ lực thử nghiệm nhằm giải quyết các vấn đề cố hữu về triển khai và build của Next.js.
Tóm tắt chính
- Động cơ: Next.js rất xuất sắc, nhưng do phụ thuộc mạnh vào công cụ build riêng là Turbopack, nên khi triển khai lên các môi trường serverless như Cloudflare Workers hay AWS Lambda, nó gặp "điểm nghẽn triển khai" vì phải đi qua các adapter phức tạp như OpenNext.
- Quá trình phát triển: Tận dụng AI mạnh mẽ để triển khai trong vòng 1 tuần. Được kiểm chứng bằng hơn 1.700 bài test Vitest và 380 bài test Playwright E2E được port từ bộ test Next.js và bộ test tương thích của OpenNext. Vượt qua 94% các bài test API surface của Next.js 16
- Giải pháp: Thay vì chỉnh sửa đầu ra của Next.js, dự án triển khai lại nguyên vẹn API của Next.js (Routing, RSC, SSR, v.v.) ngay từ đầu trên nền Vite.
- Thành quả: Hoàn thành trong một tuần với chi phí token AI khoảng $1,100. So với Next.js, kết quả cho thấy tốc độ build nhanh hơn tới 4 lần và kích thước client bundle nhỏ hơn 57%.
- Đặc điểm kỹ thuật: Các API cốt lõi như next/link, next/navigation, Server Actions, RSC (React Server Components) được tái hiện dưới dạng plugin Vite, cho phép di chuyển hầu như nguyên trạng các ứng dụng Next.js hiện có.
Ý nghĩa: Dự án chứng minh rằng ngay cả những framework đồ sộ cũng có thể được thay thế trong thời gian ngắn bằng một "phiên bản nhẹ và nhanh" nếu có bộ test được xác định rõ ràng và sự hỗ trợ của AI.
6 bình luận
Cách tái hiện Next.js bằng AI chỉ trong một tuần
Hãy tham khảo thêm cả phiên bản do GN+ tổng hợp
Dù bài blog không mang giọng điệu như vậy, nhưng việc cố ý lược bỏ tính năng tạo trang tĩnh khiến tôi có cảm giác hàm ý ở đây là khi cần tạo trang tĩnh thì hãy dùng Astro.
Astro*
Tôi cứ nghĩ nếu họ dành một tuần công sức đó để đóng góp cho opennext thì có lẽ sẽ tốt hơn.
Ngay từ đầu định hướng đã khác nhau rồi
OpenNext là chuyển đổi kết quả build của Next.js, còn vinext là viết lại toàn bộ để thay turbopack bằng vite.
Ý kiến trên Hacker News
Tôi thích cả Next lẫn Vite. Nhưng tôi có cảm giác đội ngũ Next chỉ tập trung vào những tính năng hào nhoáng phục vụ 0,1% người dùng, còn 99,9% còn lại thì bị bỏ mặc. Bản fork lần này của Cloudflare có vẻ sẽ giải tỏa được sự bất mãn đó. Cải thiện hiệu năng là điều cộng đồng Next mong muốn từ rất lâu, và giờ cuối cùng cũng có người lắng nghe. Ở công ty, nếu cái này thành công thì tôi rất muốn thử dùng
Tôi nghĩ đây là một ví dụ rất rõ về động lực nguồn mở trong thời đại AI. Tài liệu càng tốt, các hợp đồng càng được định nghĩa rõ ràng thì người khác càng dễ sao chép. Nếu Cloudflare không tận dụng các bài kiểm thử của Next thì bản fork này hẳn đã không thể xuất hiện. Server Components vẫn là một pattern bị đánh giá thấp, nên tôi hoan nghênh những nỗ lực đơn giản hóa DX. Next trở nên phức tạp do mở rộng dần dần, còn framework mới thì có thể được thiết kế linh hoạt ngay từ đầu
Tôi nghĩ gọi một thứ còn không chạy nổi “Hello world” là được ‘tái triển khai from scratch’ thì hơi phóng đại. Nếu lấy nguyên bài kiểm thử của bản gốc thì khó mà xem là viết lại hoàn toàn. Nó giống như lấy đoạn mở đầu của một tiểu thuyết nổi tiếng, thay vài từ rồi tuyên bố là mình đã viết mới vậy
Cloudflare đã mua lại Astro từ một tháng trước, và giờ lại dùng AI để sao chép Next.js, điều này khá thú vị. Nếu làm dễ đến thế thì tại sao họ lại mua Astro? Có lẽ là để nắm giữ tầm nhìn và vai trò lãnh đạo của framework
Trước đây Next.js từng dính lỗ hổng thực thi mã từ xa, nên tôi muốn tránh phiên bản do AI tạo ra ít nhất trong một thời gian
Mỗi khi nghe câu ‘AI đã tái triển khai X’ là tôi luôn thấy nghi ngờ. Rất có thể những edge case chi tiết và lượng bug fix tích lũy suốt nhiều năm đã bị bỏ sót. Nếu nó vượt qua được toàn bộ bài kiểm thử thì tôi sẽ công nhận, còn không thì khó tin lắm
Đây là thử nghiệm AI thú vị nhất mà tôi từng thấy cho đến nay. Tôi ngạc nhiên vì nó nhỏ hơn codebase Next.js rất nhiều. Nhưng tôi vẫn tự hỏi liệu nó chỉ đơn thuần là mức vượt qua test hay không. Ví dụ như phần triển khai form hoàn toàn khác. Dù sao thì vẫn rất ấn tượng
Tôi không đồng ý với câu nói rằng ‘sự trừu tượng trong phần mềm xuất hiện vì con người không thể xử lý độ phức tạp’. Trừu tượng tồn tại để nắm bắt bản chất của thực tại và tăng khả năng tái sử dụng. Việc phân lớp đơn giản là vấn đề tách biệt mối quan tâm
Điểm thú vị là tổng chi phí chỉ khoảng 1.100 USD tiền token
Mấu chốt thật sự là thời điểm mua lại Astro. Cloudflare đã mua Astro một tháng trước, rồi giờ công bố sao chép API Next.js bằng AI. Đây là tín hiệu về việc phá vỡ lock-in của framework. Họ đã đưa cho người dùng Next.js bị trói vào Vercel hai lối thoát — dự án mới thì dùng Astro, dự án hiện có thì dùng Vinext. Dù hiện tại chưa phù hợp cho production, đây vẫn là một thông điệp làm lung lay khả năng cạnh tranh về giá của Vercel