React 진영에서 10년 넘게 "가상 DOM이면 충분하다"고 말해왔고, Vue는 Proxy 기반 반응성으로 나름의 영역을 지켰다. 그런데 Vue 3.6 베타가 나오면서 뭔가 이상한 일이 벌어졌다. Evan You가 @vue/reactivity의 핵심을 alien-signals라는 외부 라이브러리로 통째로 교체한 거다. 자기 집 엔진을 남의 것으로 갈아끼운 셈인데, 이게 단순한 성능 튜닝이 아니다.
alien-signals가 뭔데
StackBlitz의 Johnson Chu가 만든 초경량 시그널 라이브러리다. Vue 3.5에서 pull 기반 알고리즘으로 전환한 뒤, push-pull 하이브리드 방식을 별도 프로젝트에서 실험하다 탄생했다. 의존성 그래프를 효율적으로 추적하면서, 변경이 발생하면 영향받는 노드만 정확히 업데이트한다.
벤치마크 수치가 좀 과격하다. 특정 스트레스 테스트에서 기존 Vue 반응성 대비 400% 빠르고, 10만 개 컴포넌트를 100ms 안에 마운트한다는 결과도 나왔다. 실제 앱에서 10만 개 컴포넌트를 동시에 올리는 경우는 드물지만, 반응성 레이어의 오버헤드가 극적으로 줄었다는 건 복잡한 computed chain이 줄줄이 엮인 대시보드나 대형 데이터 테이블에서 체감 가능한 수준이다.
7년 키운 코어를 왜 외부 것으로 바꿨나
여기가 진짜 흥미로운 지점이다.
ref(), reactive(), computed() — 이건 Vue의 정체성이나 마찬가지다. 그 핵심을 외부 라이브러리로 대체한다? 첫인상은 "항복"에 가까워 보인다. 하지만 맥락을 보면 정반대다. alien-signals는 프레임워크에 종속되지 않는 순수한 반응성 프리미티브를 제공한다. Vue가 이걸 채택했다는 건, 반응성이라는 문제가 더 이상 특정 프레임워크의 독점 영역이 아니라 공용 인프라여야 한다는 판단이 깔려 있다.
실제로 alien-signals의 코어 알고리즘은 이미 xstate에도 포팅됐다. 상태 머신 라이브러리와 UI 프레임워크가 같은 반응성 엔진을 공유하는 상황. 기술 교체 수준이 아니라 생태계 구조 변화다.
Vapor 모드
같이 나온 Vapor 모드도 빼놓을 수 없다. 가상 DOM 없이 직접 DOM을 조작하는 컴파일 모드인데, 기존 Vue 컴포넌트와 섞어 쓸 수 있다. 앱 전체를 재작성할 필요 없이 병목 컴포넌트만 Vapor로 전환하면 된다. Next.js App Router 마이그레이션의 고통을 겪어본 사람이라면, 이 점진적 접근이 얼마나 현실적인지 바로 알 거다.
다 같은 방향을 보고 있다
한 발 물러서 보면 풍경이 묘하다:
Angular 20 — 시그널이 1급 프리미티브. Zone.js를 제거하면서 리렌더링 20-30% 감소
Svelte 5 — Runes가
$:문법 대체. 컴파일러 레벨의 시그널SolidJS — 태생부터 시그널 전용. 가상 DOM 자체가 없음
Vue 3.6 — alien-signals 도입, Vapor로 가상 DOM 탈출 옵션 추가
React — Compiler로 자동 메모이제이션. 시그널은 아니지만 불필요한 리렌더링 제거라는 같은 방향
TC39에서는 아예 시그널을 JavaScript 표준으로 밀어올리려는 제안이 Stage 1에 올라와 있다. Angular, Vue, Solid, Preact, Svelte, MobX 메인테이너들이 전부 참여 중이다. 빠르면 2-3년 뒤 Signal이 Promise처럼 브라우저에 내장된다.
프레임워크 전쟁의 결말이 "누가 이기느냐"가 아니라 "전부 같은 엔진을 쓰게 된다"인 시나리오가 점점 현실적이다.
지금 뭘 해야 하냐면
당장 Vue 3.6으로 올리라는 얘기가 아니다. 아직 베타고, 프로덕션 투입은 이르다. 다만 준비할 건 있다.
watchEffect나 computed 체인에서 의존성 추적 타이밍이 미묘하게 달라질 수 있다. 대부분 호환되지만 엣지 케이스가 존재한다. 테스트 커버리지가 얇은 computed chain이 있다면 지금 보강해두는 게 낫다. Vapor 모드를 쓸 예정이라면 template ref 접근 패턴도 점검 대상이다 — 가상 DOM이 없으니 $refs 타이밍이 다르다.
그리고 이건 Vue 유저한테만 해당되는 이야기가 아니다. 시그널이 사실상 업계 표준 반응성 모델로 수렴하고 있으니, React만 쓰더라도 시그널의 핵심 개념 — 의존성 그래프, fine-grained 업데이트, push-pull 전파 — 을 이해해두면 어떤 프레임워크를 만나든 적응이 빨라진다. Vue 3.6의 alien-signals 도입은 그 수렴의 가장 선명한 신호탄이다.