9:23Better Stack
Log in to leave a comment
No posts yet
기술의 수명은 우리가 생각하는 것보다 짧습니다. 지난 수년간 React 생태계를 지배했던 Radix UI가 대표적인 사례입니다. 2026년 현재, Radix UI Primitives 저장소의 커밋 빈도는 주간 평균 0.5회 미만으로 떨어졌습니다. 사실상의 좀비 상태입니다. 반면 그 핵심 설계자들이 MUI 팀에 합류하여 만든 Base UI는 매일 25회 이상의 업데이트를 쏟아내고 있습니다. 단순한 유행이 아니라 생존의 문제입니다.
과거 우리는 Radix의 asChild 패턴에 열광했습니다. 하지만 실무에서 이 패턴은 골칫거리였습니다. 내부적으로 cloneElement를 사용하기 때문에 프롭 충돌이 잦았고 TypeScript 타입 추론은 늘 불안정했습니다.
Base UI는 이를 Render Props 패턴으로 정면 돌파했습니다. 단순히 문법이 바뀐 수준이 아닙니다. 런타임 오버헤드를 줄여 성능을 최적화하고 개발자가 하위 요소로 전달되는 프롭을 100% 통제하게 만듭니다.
Base UI에서는 컴포넌트 내부 상태를 렌더 함수 내부에서 즉시 인자로 받을 수 있습니다. Radix처럼 외부 훅을 지저분하게 연결할 필요가 없습니다.
cloneElement 대신 직접적인 함수 호출 방식을 선택했습니다.2026년부터 시행되는 유럽 접근성 법안(EAA)과 WCAG 2.2 표준은 이제 선택이 아닌 필수입니다. Base UI는 서버 사이드 렌더링 환경에서 일관된 ARIA 속성을 유지합니다. 이는 하이드레이션 과정의 레이아웃 시프트를 방지하고 초기 로딩 성능(TTI)을 대폭 개선합니다.
엔터프라이즈 환경에서 가장 고통스러운 작업은 Multi-select나 Combobox 구현입니다. Radix는 이런 고성능 위젯이 부족해 늘 외부 라이브러리를 덕지덕지 붙여야 했습니다.
Base UI는 다중 선택 기능을 네이티브로 지원합니다. 특히 @tanstack/react-virtual과 같은 가상화 라이브러리와의 결합이 매끄럽습니다. 대규모 데이터를 다룰 때 진가가 드러납니다.
Base UI의 Function as ClassName 패턴은 Tailwind CSS와 만날 때 가장 강력합니다. 복잡한 삼항 연산자 대신 선언적으로 스타일을 관리할 수 있습니다.
<Select.Item
className={(state) => `
flex items-center px-4 py-2 rounded-lg
${state.highlighted ? 'bg-indigo-50 text-indigo-900' : 'text-slate-700'}
${state.selected ? 'font-semibold bg-indigo-100' : 'font-normal'}
${state.disabled ? 'opacity-40 cursor-not-allowed' : 'cursor-pointer'}
`}
>
{item.label}
</Select.Item>
모든 코드를 한 번에 갈아엎는 것은 자살 행위입니다. 점진적이고 전략적인 접근이 필요합니다.
1단계: 공존기
기존 Radix UI를 유지한 채 npm install @base-ui-components/react를 병행합니다.
2단계: 신규 기능 우선 적용
새로 추가되는 모달이나 복잡한 폼에 Base UI를 먼저 도입합니다. 팀원들이 Render Props 패턴에 익숙해지는 시간을 벌어야 합니다.
3단계: 핵심 디자인 시스템 교체
디자인 시스템의 공통 컴포넌트 내부 구현만 Base UI로 교체합니다. 외부 API 인터페이스를 유지하면 다른 팀의 코드를 건드리지 않고도 하부 아키텍처를 현대화할 수 있습니다.
| 비교 항목 | Radix UI | Base UI |
|---|---|---|
| 핵심 매커니즘 | cloneElement 프롭 주입 | Render Props 함수 호출 |
| 프롭 제어권 | 낮음 (라이브러리가 주도) | 높음 (개발자가 직접 전달) |
| 상태 접근 | 외부 훅 필요 | 렌더 함수의 인자로 즉시 주입 |
| 유지보수 상태 | 사실상 중단 (2026년 기준) | 매우 활발 (MUI 팀 주도) |
이미 shadcn/ui의 최신 업데이트가 Base UI를 기본 원시 컴포넌트로 채택하기 시작했습니다. 시장의 주도권은 완전히 넘어갔습니다. 기술 부채는 방치할수록 이자가 붙습니다. Radix UI가 제공하던 혁신은 이제 Base UI라는 더 완성도 높은 형태로 진화했습니다.
유지보수 가능성과 접근성 표준 준수는 2026년 프론트엔드 개발자의 핵심 경쟁력입니다. 더 명확하고 성능 중심적인 도구로 갈아탈 시간입니다. 2026년의 프로젝트는 더 이상 어제의 유산에 머물러서는 안 됩니다.