프론트엔드 프레임워크 2026, 시그널이 표준이 되고 논쟁은 끝났다

2026. 9. 13. 09:00·IT
728x90
반응형

2026년에 프론트엔드 프레임워크를 고르는 일은 5년 전과 다른 문제가 됐다. Angular, Vue, Svelte, Preact, Qwik 이 전부 시그널(signals) 기반 반응성으로 옮겨갔고, 시그널은 TC39 에서 자바스크립트 표준 제안으로 올라가 있다. 남은 예외는 React 하나이고, React 는 런타임 대신 컴파일러로 같은 문제를 풀기로 했다. 이 글의 주장은 하나다. 반응성 모델이 수렴한 이상 "어느 프레임워크가 빠른가"는 더 이상 선택 기준이 아니다. 남은 기준은 팀과 생태계다.

시그널은 Solid 의 아이디어에서 모두의 기본값이 됐다

시그널은 값이 바뀌면 그 값을 읽은 곳만 정확히 다시 계산하는 반응성 원시 타입이다. 가상 DOM 을 통째로 비교하는 대신 의존 관계를 추적한다. 이 모델을 프레임워크의 중심에 놓고 대중화한 건 Solid 였다. 2026년에는 그 모델이 거의 모든 곳에 있다.

Angular 는 2025년 말 나온 v21 부터 신규 앱에서 zone.js 를 빼고 시그널 기반 변경 감지를 기본값으로 켰다. 시그널로 폼을 다루는 Signal Forms 도 실험 기능으로 들어갔다. Vue 는 3.6 에서 가상 DOM 을 건너뛰는 Vapor 모드를 실험 기능으로 열었고, 이 모드의 반응성 엔진이 시그널이다. Svelte 5 는 $state, $derived, $effect 라는 룬(runes)으로 반응성을 명시적 원시 타입으로 바꿨다. Preact 와 Qwik 은 그 전부터 시그널을 썼다.

결정적인 건 TC39 다. 자바스크립트 표준화 기구에 올라간 Signals 제안은 2024년 4월 Stage 1 에 도달했고, Angular·Vue·Solid·Preact·Ember·Qwik·MobX·Svelte·RxJS 의 저자와 메인테이너가 설계에 참여했다. 아직 Stage 1 이라 브라우저 탑재 일정은 없고 폴리필만 있다. 하지만 경쟁하던 프레임워크들이 같은 원시 타입을 언어에 넣자고 합의했다는 사실 자체가 논쟁의 종료 선언이다. 반응성을 어떻게 할지는 정해졌다.

React 는 혼자 컴파일러에 걸었다

React 는 시그널을 받아들이지 않았다. 대신 2025년 10월 7일 React Compiler 1.0 을 냈다. 빌드 시점에 컴포넌트와 훅을 분석해 메모이제이션을 자동으로 넣는 도구다. useMemo 와 useCallback 을 손으로 쓰지 않아도 되고, 조건부 메모이제이션처럼 손으로는 불가능한 최적화도 한다. React 팀은 메타 내부 앱에서 초기 로드와 페이지 이동이 최대 12% 빨라지고 일부 상호작용은 2.5배 이상 빨라졌으며 메모리는 늘지 않았다고 밝혔다. Expo SDK 54 는 컴파일러를 기본으로 켰고 Vite 와 Next.js 템플릿에서도 선택할 수 있다.

이 선택은 일리가 있다. React 의 자산은 런타임이 아니라 수십만 개의 라이브러리와 채용 시장이다. 반응성 모델을 바꾸면 그 자산이 흔들린다. 컴파일러는 기존 코드를 한 줄도 안 고치고 성능을 끌어올리는 길이다. 다만 이건 React 가 시그널 진영과 같은 성능 지점에 다른 길로 도달하겠다는 뜻이지, 시그널이 틀렸다는 뜻이 아니다.

반론: 점유율을 보면 논쟁은 끝나지 않았다

State of JS 2025(2025년 9~11월 조사, 응답자 13,002명)에서 React 를 써봤다는 응답은 83.6% 였다. 채용 공고에서도 React 는 압도적이다. 시그널이 표준이 됐다고 해서 React 가 밀려난 건 아니다. 오히려 "논쟁이 끝났다"는 말을 React 의 패배로 읽으면 현실과 어긋난다.

맞는 지적이다. 그런데 같은 조사에서 Solid 는 5년 연속 만족도 1위였고, Svelte 5 는 룬 도입 이후 만족도가 가장 높은 축에 들었다. 사용률과 만족도가 이렇게 갈리는 건 사용률이 성능이 아니라 관성과 생태계로 결정된다는 뜻이다. 그리고 그게 바로 내 주장이다. 성능 논쟁이 끝났기 때문에 남은 변수가 관성과 생태계뿐인 것이다. 한 개발자가 2026년 3월에 쓴 표현을 빌리면 "프레임워크들이 서로에게서 배우고 있고, 2026년의 성능 비교는 2019년만큼 극적이지 않다". 2019년에는 Svelte 가 React 보다 번들이 몇 배 작다는 게 선택 이유가 됐다. 2026년에는 그 차이가 선택을 뒤집을 만큼 크지 않다.

선택 기준은 벤치마크가 아니라 팀이다

그래서 2026년의 프레임워크 선택은 이렇게 정리된다. 팀이 이미 React 를 쓰고 있다면 바꿀 이유가 없다. 컴파일러를 켜고 끝이다. 새 프로젝트를 시작하는데 팀이 작고 채용 걱정이 없다면 Svelte 5 나 Solid 가 코드 양과 만족도에서 앞선다. 조직이 크고 규칙이 필요하면 Angular 21 이 zoneless 로 가벼워졌다. Vue 는 그 사이 어디든 들어간다. 어느 쪽을 골라도 반응성의 정신 모델은 같아졌으므로 옮겨 다니는 비용도 예전보다 낮다.

이 블로그에서 Svelte 글을 여러 편 썼던 입장에서 덧붙이면, Svelte 가 이긴 게 아니라 Svelte 가 밀던 방향이 이긴 것이다. 컴파일 시점에 반응성을 정리하고 런타임을 얇게 가져간다는 생각을 지금은 모두가 한다. 다음 논쟁은 프레임워크가 아니라 그 위에서 서버 컴포넌트와 스트리밍을 어떻게 다루느냐로 옮겨갔다. 프레임워크 이름으로 싸우는 시대는 지났다.

참고 자료

  • React 공식 블로그, React Compiler v1.0 (2025-10-07)
  • Angular Architects, Angular 21 의 새 기능: Signal Forms, Zone-less (2025-12-02)
  • Strapi, State of JavaScript 2025 핵심 정리 (2026-03-18)
  • Nucamp, 2026년 자바스크립트 프레임워크 동향 (2026-01-18)
  • Reptile Haus, TC39 Signals 제안이 개발팀에 뜻하는 것
  • DEV Community, 2026 프론트엔드 프레임워크 전쟁: 시그널이 이겼다 (2026-03-01)
728x90
반응형

'IT' 카테고리의 다른 글

Playwright 파일 업로드, input 없는 사이트 처리법  (0) 2026.09.13
티스토리 이미지 업로드 URL 만료, 서명 주소를 저장하면 안 되는 이유  (0) 2026.09.12
주니어 개발자 채용이 줄었다는 말의 진짜 의미  (0) 2026.09.12
카카오 로그인 세션이 브라우저 닫으면 풀리는 이유와 자동 재로그인  (0) 2026.09.11
AI 코딩 에이전트 생산성, 90%가 쓰는데 왜 일정은 그대로인가  (0) 2026.09.11
'IT' 카테고리의 다른 글
  • Playwright 파일 업로드, input 없는 사이트 처리법
  • 티스토리 이미지 업로드 URL 만료, 서명 주소를 저장하면 안 되는 이유
  • 주니어 개발자 채용이 줄었다는 말의 진짜 의미
  • 카카오 로그인 세션이 브라우저 닫으면 풀리는 이유와 자동 재로그인
밍글링글링
밍글링글링
mingling - 밍글링, 밍글밍글링. 코드와 어우러지다. IT/ 프로그래밍/소스
    반응형
    250x250
  • 밍글링글링
    mingling
    밍글링글링
  • 전체
    오늘
    어제
    • 밍글링글링 (409) N
      • Flutter (2)
      • 일상생활 (8)
        • 리뷰 (1)
        • 생활정보 (4)
        • 맛집 (0)
        • 여행 (0)
        • 모든정보 (3)
      • JAVA (126)
        • 개념 (6)
        • 예제 (115)
        • Exception (2)
      • C (1)
        • C (1)
        • C++ (0)
        • C# (0)
      • JS (29)
        • JavaScript (18)
        • JQuery (5)
        • AJax (0)
        • NODE.JS (6)
        • Angular.JS 2.0 (0)
      • WEB (87)
        • HTML (6)
        • CSS (61)
        • JSP (20)
        • JSTL (0)
      • FrameWork (8)
        • Spring (8)
        • BootStrap (0)
        • MyBATIS (0)
        • JUnit (0)
      • 외부 라이브러리 (5)
      • 공유 소스 관리 (5)
        • Git (5)
        • SVN (0)
      • 빅데이터 프로그래밍 (37)
        • Python (37)
        • R Programming (0)
      • DB (7)
        • ORACLE (0)
        • MySql (6)
      • Development Tools (7)
        • StarUML (0)
        • eXERD (0)
        • Eclipse (4)
      • SKILL (6)
        • Migration (0)
        • Security (6)
      • MicroSoft (0)
        • Excel (0)
        • Word (0)
      • Android (0)
      • Server (21)
        • Ubuntu (5)
        • Linux (15)
      • IOS (0)
      • XML (0)
      • 미디어 (0)
      • 공지사항 (3)
      • NETWORK (1)
      • 게임 (4)
        • 피파 (1)
        • 리니지M (0)
        • 배틀그라운드 (1)
        • 듀랑고 (2)
      • 세상 이슈 (6)
      • 일렉트론 (0)
      • 대회 소식 (4)
      • 업무 (2)
      • Express, Vue (6)
      • docker (11)
      • svelte (3)
      • 블록체인 (1)
      • IT (12) N
      • Rust (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    docker
    VS Code 팁
    css tb
    API 설계
    css list
    브라우저 자동화
    자바 for문
    리눅스 설치
    Extension Bisect
    proxy pass
    React Compiler
    자바 exception
    Node
    자바 생성자
    svelte
    ubuntu
    servlet class
    jsp parameter
    ssl 인증서 발급
    프런트엔드
    티스토리 자동화
    nginx
    vue cli
    SSL 인증서
    jsp include
    클론코딩
    오류
    자바 객체 지향
    css table
    java casting
    Rust lang
    nginx ssl 적용
    vue 설치
    css block
    mysql db
    css perspective
    vscode
    nginx ssl 설정
    rust linux
    lang rust
    러스트
    spring java
    gitlab 설치
    에디터 팁
    css float
    AI 코딩 에이전트
    자바 클래스
    Java Array
    css transition
    자바 배열
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
밍글링글링
프론트엔드 프레임워크 2026, 시그널이 표준이 되고 논쟁은 끝났다
상단으로

티스토리툴바