logo
|
Blog

    React Native Fabric 아키텍처

    김보람's avatar
    김보람
    Jul 09, 2025
     React Native Fabric 아키텍처
    Contents
    📌 Fabric이란?❗ 기존 아키텍처(Paper)의 문제구조 요약:문제점:✅ Fabric 구조핵심 구성 요소:작동 방식:✨ Fabric에서 가능해진 것들📦 Fabric이 도입된 배경🕓 도입 히스토리🔍 기존 vs Fabric 차이🔧 Fabric 활성화 여부 확인🧠 예시로 보는 변화✅ 마무리 요약

    📌 Fabric이란?

    Fabric은 React Native에서 새롭게 도입된 렌더링 아키텍처로
    기존 구조에서 JS와 Native 간 통신에 사용되던 Bridge 병목 문제, UI 업데이트 지연, React 최신 기능 미지원 같은 한계를 극복하기 위해 도입됨.
    React 18 이후 생긴 Concurrent Rendering, Suspense, Fine-grained UI control 등을 사용하려면 필요했음


    ❗ 기존 아키텍처(Paper)의 문제

    구조 요약:

    • JS에서 UI 명령 생성 → JSON 형태로 Bridge를 통해 Native로 전달 → Native에서 렌더링

    • JS와 Native는 서로 다른 쓰레드에서 동작함

    • 메시지들은 직렬화되고 비동기로 전달되며, 순서 보장 없이 처리됨

    문제점:

    • Bridge가 단방향/직렬화 기반이기 때문에 병목 발생

    • JS 쓰레드가 바쁠 때 Native 쪽 렌더링 지연됨 → UI 끊김 발생

    • React 18의 Concurrent UI 기능과 전혀 연동 불가능

    • 네이티브 UI와 JS 상태 간의 불일치 발생 가능성 있음

    • 컴포넌트 간 상호작용이 복잡해질수록 퍼포먼스 급격히 하락

    • Android와 iOS 간 UI 구현 일관성 유지 어려움


    ✅ Fabric 구조

    핵심 구성 요소:

    구성

    설명

    JSI (JavaScript Interface)

    JS에서 Native 기능을 직접 호출할 수 있는 C++ 레이어

    Fabric Renderer

    React Fiber와 연결되어 UI 명령을 직접 Native에 전달

    TurboModules

    기존 NativeModules를 대체, 더 빠르고 유연한 모듈 시스템

    Shadow Tree

    React의 Virtual DOM과 대응되는 구조로, 렌더링 트리 생성

    작동 방식:

    • React Fiber에서 UI 명령 생성

    • Shadow Tree로 변환

    • JSI를 통해 Native UI로 직접 적용
      → Bridge 경유하지 않음. 동기화와 성능 모두 개선


    ✨ Fabric에서 가능해진 것들

    기능

    설명

    ✅ boxShadow, backdropFilter 등 고급 CSS-like 스타일

    Android에서도 지원됨

    ✅ Concurrent Rendering 지원

    React 18의 핵심 기능 대응

    ✅ Pressability 개선

    Press 처리 정확도 및 피드백 향상

    ✅ LayoutAnimation

    네이티브 수준에서 더 자연스러운 레이아웃 애니메이션 가능

    ✅ Suspense, Lazy loading, JSI 연계

    더욱 효율적인 렌더링 전략 사용 가능

    ✅ 플랫폼 간 View 일관성

    Android/iOS 공통 ViewManager로 구현 차이 감소


    📦 Fabric이 도입된 배경

    React Native가 초기에 가진 장점(빠른 개발, JS-Native 혼합)은 유지하면서도,
    점점 무거워지는 UI 요구와 React Core의 발전 방향(Concurrent UI 등)에 대응할 수 없었다

    React 18의 기능을 모바일에서 제대로 활용하려면:

    • React Fiber와 Native UI의 렌더 트리 연동

    • JS ↔ Native 간 직접적인 커뮤니케이션 경로

    • 각 컴포넌트의 상태 변화에 따른 즉각적인 UI 반영

    이런 기반이 필수였음 → 그래서 Fabric이 나옴


    🕓 도입 히스토리

    버전

    출시일

    내용

    2018년

    -

    Facebook에서 "React Native New Architecture" 계획 최초 발표. Fabric, TurboModules, JSI 개념 등장

    0.68

    2022년 3월

    New Architecture 실험적 도입. 수동 설정 필요 (opt-in)

    0.70

    2022년 9월

    Fabric, TurboModules 기능 베이스라인 포함. 하지만 기본 비활성화

    0.71 ~ 0.75

    2023~2024년

    점진적 안정화 진행. boxShadow, Pressability 개선 등 일부 기능에 New Arch 의존성 생김

    0.76

    2024년 10월

    Fabric 및 TurboModules가 기본 활성화됨 (default ON)New Architecture가 표준화되기 시작함

    0.77

    2025년 1월

    ViewStyle.boxShadow 등 신기능 안정화. TurboModules 의존성 있는 라이브러리 확산

    0.78

    2025년 2월

    React 19 통합, Android Drawable 지원, Fabric 기반 컴포넌트 개선

    0.79

    2025년 4월

    성능 최적화와 빌드 개선 중심. Fabric 안정성 ↑

    0.80

    2025년 6월

    React 19.1 통합, Strict TypeScript API 추가📌 기존 아키텍처(Paper)는 공식적으로 동결됨 (deprecated)


    🔍 기존 vs Fabric 차이

    항목

    기존 아키텍처(Paper)

    Fabric

    JS ↔ Native 연결

    Bridge (직렬화 기반)

    JSI (Native 함수 직접 호출)

    UI 렌더링 방식

    UIManager 통해 명령 실행

    React Fiber ↔ Fabric Renderer 직접 연결

    Native 모듈

    NativeModules (비동기 호출)

    TurboModules (동기/JSI 기반)

    React 최신 기능 지원

    ❌ 불가

    ✅ 가능 (Concurrent, Suspense 등)

    성능

    JS/Native 간 지연 큼

    빠르고 일관된 렌더링

    Android/iOS 일관성

    ViewManager 분리

    공통 ViewManager 사용


    🔧 Fabric 활성화 여부 확인

    아래 콘솔이 true라면 활성화된 플젝.

    console.log(global?.nativeFabricUIManager != null);

    🧠 예시로 보는 변화

    <Button onPress={() => setOpen(true)} />
    • 기존

      1. 이 이벤트가 JS에서 처리되고

      2. Native는 Bridge 통해 지연 적용 → 프레임 딜레이 발생 가능

    • Fabric 이후

      1. React Fiber가 직접 상태 변화 추적

      2. Shadow Tree 업데이트 후 즉시 Native에 반영 → 지연 없음, UI 정확도 ↑


    ✅ 마무리 요약

    Fabric은 React와 Native가 진짜로 하나처럼 동작하게 만들어주는 기반이다
    0.76 이후부터는 기본 적용되어 있으며, boxShadow, PressAnimation, Concurrent Rendering 등 모든 최신 기능은 Fabric 없이는 불가능하다

    Share article
    Contents
    📌 Fabric이란?❗ 기존 아키텍처(Paper)의 문제구조 요약:문제점:✅ Fabric 구조핵심 구성 요소:작동 방식:✨ Fabric에서 가능해진 것들📦 Fabric이 도입된 배경🕓 도입 히스토리🔍 기존 vs Fabric 차이🔧 Fabric 활성화 여부 확인🧠 예시로 보는 변화✅ 마무리 요약

    김보람 | 930802qhfka@gmail.com

    RSS·Powered by Inblog