핵심 요약
RN 0.78에서 New Architecture(Fabric + TurboModules + JSI)가 default. 사내 앱 3개 1년 운영 — 앱 시작 시간 1.8s → 1.04s, FlatList 60fps 안정, 메모리 -28%. 라이브러리 호환은 80%, 나머지 20%는 patch-package 또는 fork.
1. New Architecture 핵심 변화
- Fabric — 새 렌더링 엔진. 동기 layout, concurrent React 호환
- TurboModules — Native module 호출이 JSI 직결, JSON bridge 제거
- Codegen — TypeScript 정의 → C++/Java/ObjC interface 자동 생성
- Hermes 0.20 — JS 엔진 안정성 + 메모리 -25%
2. 활성화
// 0.78부터 default true
// android/gradle.properties
newArchEnabled=true
hermesEnabled=true
// ios/Podfile
ENV['RCT_NEW_ARCH_ENABLED'] = '1'
3. 실측
| 지표 | Old | New |
|---|---|---|
| Cold start (Pixel 8) | 1.8s | 1.04s |
| FlatList 1000 items 스크롤 | 42fps | 60fps |
| Native call (per call) | 1.4ms | 0.18ms |
| Memory (active) | 142MB | 102MB |
4. 라이브러리 호환 상태
- ✅ React Navigation, Reanimated 4, FastImage, Lottie, Bluetooth Classic
- ⚠️ AsyncStorage(MMKV로 대체 권장), 일부 push notification SDK
- ❌ legacy WebView module (Reanimated 호환 fork 필요)
5. 함정
- Old + New 라이브러리 혼용 — interop layer가 자동이지만 미세 동작 다름, codegen 미대응 라이브러리 패치
- iOS Pod resolution — pod install 시 use_frameworks! :linkage => :static 필수, 안 그러면 빌드 실패
- Hermes vs JSC — JSC에서 잘 동작하던 코드(Date 처리)가 Hermes에서 미세 차이
- TypeScript codegen 캐시 — yarn cache clean + iOS DerivedData 삭제 필수

댓글 0