React Native, Expo의 TurboModules/Fabric 아키텍처는 최신 성능 개선의 핵심이지만,
기본적으로 “별도 활성화(Opt-in)”가 필요하다.
이 글은 개인 기록 목적과 함께, 앞으로 프로젝트 선택 시 참고 자료로 남기기 위해 정리한다.
TurboModules/Fabric이란?
- TurboModules: 네이티브 모듈의 바인딩을 더욱 빠르고 효율적으로 관리하는 새로운 방식
- Fabric: React Native UI 레이어의 최신 구조. 더욱 빠른 렌더링, 동시성(Concurrent Rendering) 지원
왜 성능이 좋음에도 별도로 활성화(Opt-in)할까?
1. 호환성/안정성 문제
- 기존(Bridge) 방식과 완전히 달라,
기존 네이티브 모듈이나 서드파티 라이브러리가 TurboModules/Fabric을 지원하지 않으면 오류, 크래시 등 이상동작 발생 가능
- 새 구조에 맞지 않는 라이브러리는 런타임/빌드 타임 에러 발생
2. 기존 앱의 기능 변화/버그 위험
- 기존 Bridge 기반 코드와 새로운 TurboModules/Fabric 아키텍처가 동시에 존재 가능
- 이로 인해 미묘한 버그, 퍼포먼스 변화, 예기치 못한 크래시가 생길 수 있음
3. 점진적 도입을 위한 전략
- Facebook(메타)와 Expo 모두 “모든 프로젝트 한 번에 전환 → 대규모 장애”를 피하기 위해
옵션(실험적) 활성화 구조를 택함
4. 빌드 및 번들 변화
- 새로운 아키텍처 활성화 시 네이티브 빌드 설정, 번들 크기 등이 달라질 수 있어
예상치 못한 빌드/릴리즈 이슈 발생 가능성
5. Expo의 추가 제약
- Expo는 다양한 네이티브/외부 라이브러리 호환성을 고려해야 하므로,
Expo Go에서는 지원 불가, 직접 빌드한 앱에서만 사용 가능
활성화 방법 정리 (기록용)
TurboModules/Fabric 활성화 시 체크리스트
- 주요 네이티브/외부 모듈이 TurboModules/Fabric 지원 여부 확인
- 앱 빌드/런타임 전후 전체 테스트 필수
- 오래된 모듈은 교체/업데이트 고려
마무리
TurboModules/Fabric 아키텍처는 성능 개선을 위한 중요한 진화지만, “별도 활성화”를 요구하는 이유는
기존 코드, 라이브러리, 전체 빌드/릴리즈 흐름의 호환성 문제를 최소화하기 위함임.