4.2 KiB
4.2 KiB
category, tags, title, description, last_updated
| category | tags | title | description | last_updated | |||
|---|---|---|---|---|---|---|---|
| Architecture |
|
React Native New Architecture | React Native의 New Architecture(새로운 아키텍처)는 기존의 비동기적 자바스크립트 브릿지(Bridge) 통신 방식이 초래했던 성능 병목 현상을 해결하기 위해 도입된 혁신적인 구조적 변화입니다 [1, 2]. | 2026-05-04 |
React Native New Architecture
📌 Brief Summary
React Native의 New Architecture(새로운 아키텍처)는 기존의 비동기적 자바스크립트 브릿지(Bridge) 통신 방식이 초래했던 성능 병목 현상을 해결하기 위해 도입된 혁신적인 구조적 변화입니다 [1, 2]. 이 아키텍처는 JavaScript Interface(JSI)를 기반으로 자바스크립트와 네이티브 코드 간의 직접적이고 동기적인 통신을 가능하게 합니다 [3, 4]. 최신 버전(0.74 이상)부터 브릿지리스(Bridgeless) 모드가 기본으로 활성화되며, 렌더링 성능과 초기 로딩 속도를 대폭 향상시켜 네이티브 앱과 구별하기 힘든 수준의 성능을 제공합니다 [3, 5, 6].
📖 Core Content
- JSI (JavaScript Interface): 새로운 아키텍처의 근간을 이루는 기술로, 자바스크립트 코드가 네이티브 객체를 직접적이고 동기적으로 참조할 수 있게 하는 경량 C++ 레이어입니다 [4, 7]. 이를 통해 데이터를 JSON 문자열로 변환하는 직렬화(Serialization) 오버헤드를 완전히 제거하고 실시간 고성능 통신을 실현합니다 [4, 7].
- Fabric Renderer (패브릭 렌더러): 기존에 분리되어 있던 스레드 통신 문제를 해결하기 위해 도입된 새로운 UI 렌더링 시스템으로, C++ 기반의 'Shadow Tree'를 스레드 간에 공유합니다 [8]. React 18의 동시성 렌더링(Concurrent Rendering)을 지원하며, 네이티브 측에서 레이아웃을 동기적으로 계산하여 UI가 건너뛰는 현상(UI Jump)을 해결하고 앱의 전반적인 반응성을 개선합니다 [4, 8].
- TurboModules (터보 모듈): 앱 시작 시 모든 네이티브 모듈을 초기화해야 했던 기존 아키텍처의 단점을 극복한 차세대 네이티브 모듈 시스템입니다 [4, 9]. 모듈이 실제 사용되는 시점에만 로드되는 지연 로딩(Lazy Loading) 방식을 적용하여 앱의 초기 구동 시간을 크게 단축하고 메모리 사용량을 줄입니다 [4, 9].
- Codegen (코드젠): 빌드 시점에 TypeScript나 Flow의 타입 정의를 분석하여 자바스크립트와 네이티브 양측을 연결하는 C++ 보일러플레이트 코드를 자동 생성하는 도구입니다 [10]. 이를 통해 동적 타입 언어인 자바스크립트와 정적 타입의 네이티브 환경이 통신할 때 발생할 수 있는 오류를 런타임이 아닌 컴파일 시점에 잡아내어 강력한 타입 안전성을 보장합니다 [10].
⚖️ Trade-offs & Caveats
React Native의 새로운 아키텍처는 기존 비동기 브릿지가 유발했던 '브릿지 세금(Bridge Tax)'을 없애고 렌더링 성능을 극대화했지만, 기술적 선택과 유지보수 측면에서 몇 가지 제약 사항과 반대 급부를 수반합니다.
- 네이티브 모듈 통합 및 마이그레이션 복잡성: 복잡한 네이티브 모듈을 통합하거나 브릿징(Bridging)하는 작업에는 기존 방식보다 추가적인 노력과 기술적 이해도가 필요할 수 있습니다 [11]. 특히, TurboModules 등을 통해 커스텀 네이티브 기능을 구현할 때 C++이나 네이티브 계층에 대한 이해가 전제되어야 합니다 [10, 12].
- 서드파티 라이브러리 의존성과 호환성 문제: 방대한 React Native 생태계의 서드파티 라이브러리들이 OS 업데이트에 따라 네이티브 모듈 호환성이 깨질 위험이 지속적으로 존재합니다 [13, 14]. 새로운 아키텍처로 넘어가기 위한 메이저 버전 업그레이드 시 플랫폼별 코드를 다시 작성하거나 광범위한 테스트를 수행해야 하므로, 단기적으로 최소 2~3개월의 마이그레이션 기간과 높은 유지보수 비용이 발생할 수 있습니다 [13, 14].
Last updated: 2026-05-03