목차
- 오늘 본 것 — VoidZero가 Cloudflare 산하로 들어갔다
- 새로 알게 된 것 — Cloudflare가 왜 이걸 샀나
- 코드로 본 변화 — 실제로 뭐가 달라지는지
- 걱정되는 것들 — 메모
npm create vite@latest로 프로젝트 깔다가 README 끝에 붙은 한 줄을 봤다. "VoidZero is now part of Cloudflare." 손이 멈췄다. Vite 패키지 메타데이터를 확인하니 maintainer 필드가 며칠 사이 바뀌어 있었다. 작업하던 PR을 잠시 덮고 발표문, 블로그 포스트, HN 스레드를 한 시간쯤 훑었다. 정리하면서 알게 된 게 생각보다 많아서 메모로 남긴다.
오늘 본 것 — VoidZero가 Cloudflare 산하로 들어갔다
물론, VoidZero는 Evan You가 2024년 말 세운 회사다. Vite, Vitest, Rolldown, Oxc를 한 우산 아래 묶고 "통합 JavaScript 툴체인"을 만들겠다고 선언했던 곳이다. 시드 라운드에서 $4.6M을 모았고, Accel이 리드했다. 1년 반쯤 운영하다가 2026년 6월 초 Cloudflare에 인수됐다고 공식 발표가 떴다 (출처: Cloudflare blog, 2026-06-04 기준).
인수 금액은 공개되지 않았다. 다만 Evan You 본인이 Cloudflare에서 "Head of Web Framework Tooling" 같은 자리로 합류한다는 표현이 발표문에 있었다. Anthony Fu, Patak도 같이 넘어간다. Vite 코어 메인테이너 대부분이 한 회사 소속이 된 셈이다.
특히, 오픈소스 거버넌스는 그대로 유지한다고 못 박았다. Vite는 MIT 라이선스고 Vue, Vitest는 별도 재단 비슷하게 운영되니 라이선스 자체가 바뀔 일은 없다. 다만 "누가 풀타임으로 어디에 시간을 쏟는가"는 분명히 달라진다 (개인적으로 이게 진짜 변수다).
같이 넘어간 프로젝트들
실제로, 한 줄 정리가 필요해서 표로 적어둔다. 글 하나에 비교표 하나만 두기로 했다.
| 프로젝트 | 역할 | 현재 상태 (2026-06 기준) |
|---|---|---|
| Vite | 개발 서버 + 빌드 도구 | v7.x 안정, 주간 다운로드 ~3,500만 |
| Rolldown | Rust 기반 번들러 (Rollup 후속) | 1.0 RC, Vite 7부터 기본 옵션 |
| Oxc | Rust 기반 JS 파서/린터/포매터 | oxlint 1.0 출시, ESLint 호환 모드 |
| Vitest | 테스트 러너 | v3.x 안정, Jest 호환 API |
| tsdown | Rolldown 기반 라이브러리 빌드 도구 | 베타 |
실제로, 다섯 개가 한 번에 같은 회사로 들어간 거다. 프론트엔드 빌드 파이프라인의 입구부터 출구까지가 한 손에 잡혔다.
새로 알게 된 것 — Cloudflare가 왜 이걸 샀나
반면, 처음엔 단순히 "Workers에서 Vite 잘 돌아가게 하려는 거겠지" 정도로 생각했다. 발표문이랑 관련 블로그를 더 읽어보니 그림이 좀 더 컸다.
Workers의 약점이 빌드였다
이처럼, Cloudflare Workers는 엣지 런타임으로는 빠르고 싸다. 그런데 프레임워크 통합이 늘 절반쯤 어색했다. Next.js는 @cloudflare/next-on-pages라는 별도 어댑터가 필요했고, Remix는 그나마 나았지만 빌드 단계에서 Node API를 걸러내는 작업이 손이 많이 갔다. SvelteKit, Nuxt, SolidStart도 각자 어댑터를 따로 두고 있었다.
또한, 이 어댑터들이 다 Vite 위에서 돈다. Vite의 Environment API가 2024년 후반에 들어가면서 "하나의 dev 서버가 여러 런타임을 동시에 다룬다"는 게 가능해졌는데, 이게 사실상 엣지 런타임 회사들을 위한 기능이었다. Cloudflare가 이 API 설계에 관여했다는 건 이미 알려진 얘기였다.
번들러 단계에서 Workers 호환 코드를 뽑아내려면 트리 셰이킹, 코드 스플리팅, 노드 폴리필 제거가 다 정확해야 한다. Rolldown이 Rollup 호환 API를 유지하면서 Rust로 5~10배 빠르다는 점이 여기서 결정적이다 (출처: Rolldown 공식 벤치마크, rolldown.rs). 빌드 시간이 줄면 엣지 배포 사이클이 짧아진다.
Vercel과의 정면 충돌
반면, 이게 더 흥미롭다. Vercel은 Next.js를 자체 인프라에 묶어서 SaaS 비즈니스를 키웠다. Turbopack, Turborepo, SWC 같은 툴체인을 직접 만들고 있고, 이것도 Rust 기반이다. 한쪽 끝에서 같은 그림을 그리고 있던 셈이다.
물론, Cloudflare가 VoidZero를 사면서 "프레임워크-중립 진영의 빌드 도구"를 통째로 확보했다. Vue, Svelte, Solid, Qwik, Astro, Nuxt, SvelteKit이 다 Vite 위에 있다. Next.js만 Webpack/Turbopack을 쓰고 나머지는 전부 Vite다. 즉 Cloudflare는 "Next.js를 제외한 거의 모든 메타 프레임워크의 빌드 레이어"를 얻은 셈이다.
한편, 이게 단순한 인수가 아니라 진영 정리에 가깝다고 보는 시각이 많다 (HN 스레드, 38xxxxxx 번대에서 토론이 길었다). 직접 확인한 건 아니지만 발표 직후 Bluesky와 X 양쪽에서 프레임워크 메인테이너들이 일제히 환영 코멘트를 올렸다. Rich Harris, Ryan Carniato, Sebastian De Deyne 다 호의적이었다.
Oxc가 들어간 게 의외였다
오늘 본 것 중 가장 의외였던 부분이다. Oxc는 Boshen Chen이 만든 Rust 파서/린터인데 ESLint 대비 50~100배 빠르다고 알려져 있다 (출처: oxlint 1.0 release notes). VoidZero가 작년에 흡수했고, 이번에 같이 Cloudflare로 넘어갔다.
파서가 왜 중요하냐면 Workers 같은 엣지 환경에서 코드 정적 분석이 빌드 시간의 큰 부분을 먹기 때문이다. 보안 스캔, 호환성 검증, 트리 셰이킹 다 파서 위에서 돈다. Cloudflare는 이걸 자체 빌드 파이프라인에 박아넣을 수 있게 됐다.
코드로 본 변화 — 실제로 뭐가 달라지는지
따라서, Vite 7에서 Rolldown을 기본으로 켜는 옵션이 추가됐다. 발표 전부터 있던 기능인데, 이번 인수 후에 rolldown-vite가 정식 패키지로 승격될 거라는 로드맵이 같이 나왔다.
// vite.config.js
import { defineConfig } from 'vite'
export default defineConfig({
// Vite 7부터 experimental.rolldown 옵션이 안정화됐다
// 2026년 하반기 릴리스부터 기본값이 true가 될 예정
build: {
rollupOptions: {
// Rolldown은 Rollup 플러그인 API를 99% 호환한다
// 다만 일부 메타 프로퍼티 (this.meta.rollupVersion 같은 것)는 다르게 동작한다
},
},
})
Workers 배포 쪽도 어댑터가 단순해진다. 기존엔 이렇게 썼다.
// 기존: @cloudflare/vite-plugin + 별도 빌드 스크립트
import { cloudflare } from '@cloudflare/vite-plugin'
export default defineConfig({
plugins: [cloudflare({
// Workers 전용 entry, 환경변수 매핑, KV 바인딩 등을 따로 설정
configPath: './wrangler.toml',
})],
})
반면, 발표문에 따르면 향후엔 Vite의 Environment API가 Workers 런타임을 1급 시민으로 다루게 된다. environments.workers 같은 키로 dev 서버에서 바로 엣지 환경을 흉내내는 그림이다. 정식 API는 아직 RFC 단계라 코드로 옮기긴 이르다 (이건 나중에 다시 봐야 한다).
Vitest 입장에서
그런데, Vitest는 테스트 러너인데 이미 @cloudflare/vitest-pool-workers라는 통합이 있었다. 워커 풀을 실제 workerd 런타임 위에서 돌리는 거다. 이게 작년에 나왔을 때도 좀 신기했는데, 이제 둘 다 같은 회사 소속이라 통합이 더 자연스러워질 것 같다.
// vitest.config.ts — 이미 가능한 설정
import { defineWorkersConfig } from '@cloudflare/vitest-pool-workers/config'
export default defineWorkersConfig({
test: {
poolOptions: {
workers: {
// workerd 런타임에서 실제로 테스트를 돌린다
// jsdom 같은 모킹이 아니라 진짜 엣지 환경
wrangler: { configPath: './wrangler.toml' },
},
},
},
})
이게 다른 엣지 런타임 (Deno Deploy, Bun, Netlify Edge)에서도 같은 패턴으로 굴러갈 수 있느냐가 관건이다. Vitest는 원래 런타임 중립이었는데 한 회사 우산 아래 들어가면서 우선순위가 한쪽으로 쏠릴 가능성도 있다.
걱정되는 것들 — 메모
그런데, 오해는 풀어두고 싶다. 라이선스 변경은 없다. Vite는 MIT다. 단 시간이 흐르면 자연스럽게 우선순위가 바뀐다는 게 OSS 인수 사례에서 자주 봤던 패턴이다.
- 다른 엣지 런타임의 입지: Deno, Bun, Netlify Edge는 앞으로 Vite 코어에 PR 보낼 때 무게감이 좀 다를 수 있다. Cloudflare 직원이 메인테이너인 상황에서 경쟁사 런타임 우선순위가 어떻게 매겨질지는 지켜봐야 한다.
- Vue 생태계의 자율성: Evan You가 Vue 창시자다. Vue가 Cloudflare 색이 묻을 일은 없겠지만, 풀타임 시간이 Vite/Cloudflare 쪽으로 쏠리면 Vue 코어 릴리스 속도에 영향이 있을지도 모른다 (그동안에도 풀타임은 Vite 쪽이긴 했다).
- Rolldown의 중립성: Rolldown은 Rollup의 후속이고 Rollup은 사실상 표준이다. Cloudflare 색이 너무 진해지면 다른 빌드 도구들이 fork할 명분이 생길 수 있다. esbuild처럼.
이런 우려는 발표 직후 HN과 Bluesky에서 다 나왔고, Evan You가 직접 답변을 달았다. 거버넌스는 그대로고, Cloudflare 인수의 핵심 조건이 "오픈소스 중립성 유지"였다는 답이었다. 진짜로 그렇게 굴러갈지는 1~2년쯤 지켜봐야 알 것 같다.
당장 할 만한 것
오늘 작업하던 PR로 돌아가기 전에 챙겨둔 액션 세 가지.
package.json에서vite,vitest,@vitejs/*버전을 확인하고 7.x 안정화 라인을 따라가도록 정렬. 5.x에 묶여 있다면 마이그레이션 일정을 잡는다.- Workers 배포를 쓰는 프로젝트라면
@cloudflare/vite-plugin최신 버전 changelog를 구독. 6월 이후 릴리스 노트가 빨라질 가능성이 높다. - ESLint를 쓰고 있다면
oxlint를 dev 의존성으로 추가해서 같은 코드베이스에 같이 돌려본다. 호환 모드가 어느 정도까지 커버하는지 직접 보는 게 빠르다.
pnpm why vite로 의존성 트리를 한번 훑어봤더니 간접 의존이 17개 나왔다. 이 중에 곧 Rolldown으로 갈아탈 곳이 몇 개나 될지 궁금해서 일단 북마크만 해뒀다.
관련 글
- Cloudflare Turnstile WebGL 핑거프린팅 강제 문제와 대안 4종 비교 – Turnstile이 WebGL 정보를 챌린지 신호로 적극 활용하면서 Tor와 프라이버시 브라우저 사용자가 가입을 못 끝낸다. 대안 3종을 …
- Elixir 점진적 타이핑 도입 이유 — 동적 언어가 타입을 받아들이는 흐름 – 동적 언어에 타입을 끼워넣는 건 늘 논란이다. Elixir 1.20이 set-theoretic types로 정식 전환하면서 무엇이 바뀌는지…
- Elixir v1.20 점진적 타입 시스템, TypeScript 전철 밟나 – Elixir v1.20에서 점진적 타입이 본격적으로 들어왔다. set-theoretic 기반이라 TypeScript와 접근이 다르다. 오늘…