--- category: Frontend tags: [auto-wikified, technical-documentation, frontend] title: Fabric Renderer description: "Fabric Renderer는 React Native의 새로운 아키텍처(New Architecture)에 도입된 혁신적인 UI 렌더링 시스템으로, 기존의 UI 관리 레이어를 밑바닥부터 다시 작성한 결과물입니다 [1]." last_updated: 2026-05-04 --- # Fabric Renderer ## 📌 Brief Summary Fabric Renderer는 React Native의 새로운 아키텍처(New Architecture)에 도입된 혁신적인 UI 렌더링 시스템으로, 기존의 UI 관리 레이어를 밑바닥부터 다시 작성한 결과물입니다 [1]. 과거 자바스크립트 스레드와 네이티브 스레드 간의 비동기적 브릿지(Bridge) 통신이 유발하던 성능 병목 현상을 해결하기 위해 설계되었습니다 [2, 3]. 네이티브 UI 레이어에 대한 동기적(synchronous) 접근을 가능하게 하여, React 18의 동시성 렌더링(Concurrent rendering)을 지원하고 네이티브에 가까운 부드러운 앱 성능을 제공합니다 [1, 3]. ## 📖 Core Content * **C++ 기반의 섀도우 트리(Shadow Tree) 생성:** 구형 아키텍처에서는 UI가 별도의 네이티브 스레드에서 관리되었으며 자바스크립트 스레드와의 통신이 비동기적으로 이루어졌습니다 [1]. 반면, Fabric은 UI의 가상 표현인 '섀도우 트리'를 C++에서 직접 생성하게 함으로써 스레드 간의 직접적이고 효율적인 데이터 공유를 가능하게 합니다 [1]. * **동기적 레이아웃(Synchronous Layout) 연산:** Fabric 시스템은 비동기 왕복(round-trips) 없이 네이티브 뷰를 측정하고 렌더링할 수 있습니다 [3]. 네이티브 측에서 레이아웃을 계산한 뒤 동일한 렌더 사이클 내에 자바스크립트 스레드에 제공할 수 있게 되어, UI 요소가 한 프레임에 나타났다가 다음 프레임에 재배치되는 'UI 점프' 현상을 본질적으로 해결합니다 [1]. * **동시성 렌더링(Concurrent Rendering) 완벽 지원:** Fabric은 React 18 및 그 이후 버전과 호환되며, 데이터 페칭을 위한 Suspense나 Transitions와 같은 동시성 기능을 지원합니다 [1]. 이를 통해 React는 렌더링의 우선순위를 조정하거나 사용자 입력에 즉각적으로 반응하기 위해 기존 렌더링 작업을 중단할 수 있어, 훨씬 더 유동적이고 반응성 높은 UI를 제공합니다 [1]. * **성능 및 반응성 향상:** 렌더링 로직을 C++로 이동시키고 JSI를 통한 직접적인 통신을 활성화함으로써, UI 구성 요소를 렌더링하고 업데이트하는 데 걸리는 시간이 대폭 감소했습니다 [1]. 이는 복잡한 리스트 스크롤링, 네비게이션 전환 등에서 프레임 드랍 현상을 없애주며, 네이티브 컴포넌트들을 네이티브와 다름없는 성능으로 제어하고 애니메이션화할 수 있게 합니다 [3, 4]. ## ⚖️ Trade-offs & Caveats * **서드파티 라이브러리 호환성 및 과도기적 한계:** Fabric을 포함한 새로운 아키텍처는 아직 모든 신규 프로젝트에 기본값(default)으로 적용된 상태는 아니며, 선택적(opt-in)으로 사용할 수 있는 과도기적 단계에 있습니다 [5]. 따라서 초기 도입자(early adopters)에게는 훌륭한 성능을 제공하지만, 기존의 거대한 에코시스템 내 서드파티 라이브러리들이 새로운 아키텍처(Fabric 및 TurboModules)를 완벽히 지원하도록 채택(adoption) 및 업데이트될 때까지는 호환성 검토에 추가적인 노력이 필요할 수 있습니다 [3]. * **플랫폼 종속적 애니메이션 한계:** Fabric이 네이티브 UI 레이어에 대한 렌더링 성능을 극대화했음에도 불구하고, React Native의 근본 특성상 실제 네이티브 플랫폼 컴포넌트(iOS의 UIKit, Android의 Views)를 그대로 사용합니다 [6]. 이는 진정한 네이티브 느낌을 주는 장점이 되지만, 극도로 복잡한 커스텀 애니메이션이나 비표준 파티클 효과 등을 구현할 때는 전체 렌더링 파이프라인을 독자적으로 통제하는 프레임워크(예: Flutter)에 비해 제약이 따르거나 플랫폼 간 미세한 편차가 발생할 수 있습니다 [6]. --- *Last updated: 2026-05-03*