Cloudflare, AI로 Next.js를 1주일 만에 Vite로 재구현한 vinext 공개
(blog.cloudflare.com)Cloudflare의 한 엔지니어가 AI(Claude)의 도움을 받아, 복잡한 Next.js 인프라를 Vite 기반으로 완전히 새로 작성한 프로젝트 'vinext(vee-next)' 를 공개. 기존 Next.js의 고질적인 배포 및 빌드 문제를 해결하기 위한 실험적인 시도.
주요 요약
- 동기: Next.js는 훌륭하지만, 자체 빌드 도구인 Turbopack에 강하게 의존하여 Cloudflare Workers나 AWS Lambda 같은 서버리스 환경에 배포하려면 OpenNext 같은 복잡한 어댑터를 거쳐야 하는 '배포 병목' 문제가 있었음.
- 개발 과정: AI를 적극 활용해 1주일 내 구현. Next.js 테스트 및 OpenNext의 적합성 테스트에서 포팅된 Vitest 1,700+ / Playwright E2E 380 개의 테스트로 검증. Next.js 16 API surface 테스트의 94%를 통과
- 해결책: Next.js의 결과물을 수정하는 대신, 처음부터 Vite 위에서 Next.js의 API(Routing, RSC, SSR 등)를 그대로 구현함.
- 성과: AI 토큰 비용 약 $1,100를 들여 일주일 만에 완성. 결과물은 Next.js 대비 빌드 속도는 최대 4배 빠르고, 클라이언트 번들 크기는 57% 더 작음.
- 기술적 특징: next/link, next/navigation, Server Actions, RSC(React Server Components) 등 핵심 API를 Vite 플러그인 형태로 재구현하여 기존 Next.js 앱을 거의 그대로 옮겨올 수 있음.
의의: 거대한 프레임워크도 잘 정의된 테스트와 AI의 도움을 받으면 단기간에 '가볍고 빠른 버전'으로 대체 가능하다는 것을 증명함.
애초에 지향점이 다르긴 합니다
OpenNext는 nextjs 빌드 결과물을 변환하는건데 vinext는 turbopack을 vite로 대체하는 전체 재작성이라서요
Hacker News 의견들
-
나는 Next도 좋아하지만 Vite도 사랑함. 그런데 Next 팀은 0.1%의 사용자만 위한 화려한 기능에 집중하고 나머지 99.9%는 무시하는 느낌임. Cloudflare의 이번 포크는 그런 불만을 해소해줄 것 같음. 성능 개선은 Next 커뮤니티가 오랫동안 원하던 부분이었고, 이제야 누군가 들어준 셈임. 회사에서도 이게 성공하면 꼭 써보고 싶음
- Next는 내가 써본 프레임워크 중 Rails 다음으로 최악이었음. 대부분의 앱에는 순수한 오버헤드에 불과함
- 한 명의 엔지니어가 여가 시간에 만든 실험에서 장기적인 지원을 기대할 수 있다고 생각함?
- 우리 회사에는 7년 넘은 Next.js 앱이 있는데, 잘 돌아가는데도 불필요한 변경이 너무 많음. 버전 업그레이드 때마다 리팩터링 낭비가 심했음
- Next를 좋아한다고 했는데, Vercel과 분리된 Next의 장점이 뭐임? Vercel의 기능이 없으면 굳이 Next를 쓸 이유가 없다고 생각함
- 나는 Next를 싫어하고 Vite를 사랑함. 회사의 대형 Next.js 프로덕션 앱은 너무 느려서 M4 Pro로 업그레이드해야 했음. 로컬 빌드에 몇 분씩 걸리고, 핫 리프레시도 10초 이상 걸림. Next 팀은 늘 문서 링크만 주며 사용자가 잘못했다고 함. 하지만 프레임워크 자체가 느림
-
이번 일은 AI 시대의 오픈소스 인센티브를 잘 보여주는 사례라고 생각함. 문서를 잘 만들수록, 계약을 명확히 정의할수록 남이 복제하기 쉬워짐. Cloudflare가 Next의 테스트를 활용하지 않았다면 이런 포크는 불가능했을 것임. Server Components는 여전히 과소평가된 패턴이라, DX를 단순화하려는 시도는 환영임. Next는 점진적 확장으로 복잡해졌지만, 새 프레임워크는 처음부터 유연하게 설계할 수 있음
- 나도 같은 생각임. 누군가가 API 실험과 베스트 프랙티스를 정립하면, 다른 사람이 그대로 가져다 쓸 수 있음. Vercel이 자초한 결과이긴 하지만, 작은 프로젝트들이 이런 식으로 소멸될까 걱정임
- Cloudflare가 Next의 테스트 없이는 불가능했을 거라는 주장엔 동의하지 않음. 복잡한 시스템도 리버스 엔지니어링으로 재현된 사례가 많았음. AI의 속도를 고려하면 진입장벽은 거의 없다고 봄
- 오픈코어 + 비공개 테스트 모델이 된다면, 진짜 오픈소스는 결국 테스트나 스펙이 될지도 모름
-
“Hello world”도 안 되는 걸 두고 ‘from scratch로 재구현했다’고 말하는 건 과장이라고 생각함. 원본의 테스트를 그대로 가져왔다면 완전한 재작성이라 보기 어려움. 마치 유명 소설의 첫 문단을 단어만 바꿔 쓴 뒤 새로 썼다고 주장하는 것과 같음
-
Cloudflare가 한 달 전에 Astro를 인수했는데, 이번에 Next.js를 AI로 복제했다는 점이 흥미로움. 그렇게 쉽게 만들 수 있다면 왜 Astro를 샀을까? 아마도 프레임워크의 비전과 리더십을 확보하기 위해서였을 것임
- Astro 인수는 진지한 제품 전략이고, 이번 프로젝트는 경쟁사를 조롱하는 실험처럼 보임. 몇 년 후 결과를 지켜봐야 함
- Astro는 정적 사이트 중심이라 Next와는 다른 영역임. Cloudflare는 Astro를 통해 Vercel처럼 특정 웹사이트 계층을 장악하려는 듯함. 결국 Next.js 사이트를 Cloudflare로 옮긴 사람들은 Astro로 마이그레이션하게 될 것임
- Astro는 정적 사이트에 적합하고, Next는 동적 웹앱에도 쓰일 수 있음. 우리는 내부 문서 시스템에 Astro를 쓰는데 정말 만족함
- 아마 Cloudflare는 단순히 자사 제품 생태계로 유도하려는 전략일 것임. 나는 요즘 Svelte로 옮겨서 꽤 즐겁게 쓰고 있음
- Astro는 Next와 같은 문제를 해결하지 않음. 정적 사이트용임
-
예전에 Next.js가 원격 코드 실행 취약점을 겪은 적이 있어서, AI가 만든 버전은 당분간 피하고 싶음
- 나도 그 부분이 가장 걱정임. RCE 이전부터 Next.js를 개인 프로젝트에 쓰지 않았음. AI 코드 생성은 이런 버그를 더 쉽게 만들고 놓치기 쉬움
- 그건 Next가 아니라 React의 취약점이었음
-
“AI가 X를 재구현했다”는 말엔 늘 의심이 듦. 세부적인 엣지 케이스와 수년간의 버그 수정이 빠져 있을 가능성이 큼. 테스트를 모두 통과한다면 인정하겠지만, 그렇지 않다면 믿기 어려움
- 나도 완전히 믿진 않지만, 이번엔 Next의 2천 개 단위 테스트와 400개의 E2E 테스트를 통과했다고 함
-
이번 프로젝트는 지금까지 본 가장 흥미로운 AI 실험임. Next.js 코드베이스보다 훨씬 작아서 놀랐음. 하지만 단순히 테스트만 통과하는 수준인지 의문임. 예를 들어 form 구현이 완전히 다름. 그래도 인상적임
- (Cloudflare 엔지니어) 완전한 기능 일치는 목표가 아님. 아직 초기 버전이라 누락된 부분이 많음. 코드가 작은 이유는 Vite와 RSC 플러그인 위에 구축했기 때문임
- 이건 거의 수동적 공격처럼 보임. Cloudflare가 Next 팀에 불만이 있었던 걸까? ‘AI와 인턴으로 네 제품 다 만들었다’는 식의 반응 같음
- Vite에 많은 로직을 위임했기 때문에 코드가 줄어든 것 같음
-
“소프트웨어의 추상화는 인간이 복잡성을 감당하지 못해서 생긴다”는 말엔 동의하지 않음. 추상화는 현실의 본질을 포착하고 재사용성을 높이기 위해 존재함. 계층화는 단순히 관심사 분리의 문제임
-
전체 비용이 약 1,100달러의 토큰이었다는 점이 흥미로움
-
진짜 핵심은 Astro 인수 시점임. Cloudflare는 한 달 전 Astro를 샀고, 이번엔 AI로 Next.js API를 복제했다고 발표함. 이는 프레임워크 락인 해체 신호임. Vercel에 묶인 Next.js 사용자에게 두 가지 탈출구를 제공한 셈임 — 새 프로젝트는 Astro, 기존 프로젝트는 Vinext. 지금 당장 프로덕션용이 아니더라도, Vercel의 가격 경쟁력을 흔드는 메시지임
- 그래서 SQLite의 테스트 스위트는 비공개라는 점이 떠오름
- 아무리 Next.js가 욕을 먹어도, 일주일 된 프로젝트로 프로덕션을 옮길 사람은 없을 것임. 그래도 언젠가 Vercel의 Turbopack을 대체할 수도 있음
- Cloudflare는 이미 OpenNext도 지원하고 있음