본문으로 바로가기
리옵트 핸드북
리옵트 핸드북
Expo 엔터프라이즈 프로덕션

New Architecture

SDK 56 브레이킹 체인지 총정리New Architecture 딥다이브React 19.2 동시성 패턴

네이티브 확장

Ch4. Expo UI — SwiftUI·Compose 선언형 네이티브Ch5. expo-widgets 홈 화면 위젯Expo Modules API v2 네이티브 확장

빌드·배포

EAS Build 고급 파이프라인EAS Update OTA 배포 전략보안·코드 서명·컴플라이언스

운영·품질

성능 모니터링·프로파일링테스트 전략 — E2E·네이티브·비주얼엔터프라이즈 앱 배포·MDM 통합

부록

검증 리포트업데이트 내역
핸드북›Expo 엔터프라이즈 프로덕션›New Architecture 딥다이브
한국어English

New Architecture 딥다이브

JSI·Fabric·TurboModules 내부 구조와 성능 최적화 전략

핵심 요약

  • SDK 55 이후 New Architecture는 사실상 전제이며 SDK 56은 RN 0.85, Hermes V1, 새 animation backend를 그 위에 쌓습니다.
  • Hermes V1·JSI·TurboModules·Fabric·Expo Modules API 각 계층마다 cold launch 증가, native 호출 crash, module not found, layout flicker 같은 고유 장애 징후가 있습니다.
  • native module boundary는 domain 함수로 감싸고, native exception은 typed error code로 바꿔 던지며, sync function은 startup path에서만 제한적으로 씁니다.
  • native module 추가·권한 변경은 OTA가 아니라 binary release 대상입니다.
  • 성능 예산은 cold launch·TTI P95 악화 10% 미만, crash-free 99.5% 이상으로 두고 Android ANR은 저사양 세그먼트를 별도 추적합니다.

운영 관점의 New Architecture

SDK 55부터 Expo 앱은 New Architecture를 사실상 전제로 깔고 갑니다. SDK 56은 React Native 0.85, Hermes V1, 새 animation backend, Expo Modules 성능 개선을 그 위에 얹습니다.

핵심 계층

계층역할장애 징후
Hermes V1JS 실행과 bytecode 로딩cold launch 증가, JSI crash
JSIJS와 native 객체 직접 연결native module 호출 crash, worklet 오류
TurboModuleslazy native module loadingmodule not found, sync/async mismatch
Fabricconcurrent rendering 친화 UI rendererlayout flicker, measurement mismatch
Expo Modules APISwift/Kotlin DSL 기반 native capabilityautolinking, permission, lifecycle 오류

SDK 56 점검 포인트

  • Hermes V1 기본값으로 startup metric을 다시 baseline합니다.
  • expo/fetch global 교체로 네트워크 계측·polyfill 충돌을 점검합니다.
  • 새 animation backend와 Reanimated/worklets 조합을 device farm에서 검증합니다.
  • iOS prebuilt Expo Modules가 켜진 상태에서 custom native patch가 source build를 요구하지 않는지 확인합니다.
  • Expo Router와 React Navigation import 경계가 섞이지 않았는지 expo-doctor와 codemod로 확인합니다.

native module boundary 규칙

  1. JS wrapper는 native API를 직접 노출하지 않고 domain 함수로 감쌉니다.
  2. 오류는 native exception 그대로 던지지 말고 typed error code로 변환합니다.
  3. sync function은 startup path에서만 제한적으로 사용합니다.
  4. 이벤트는 구독 해제 lifecycle을 강제합니다.
  5. native module 추가·권한 변경은 OTA 대상이 아니라 binary release 대상입니다.

성능 예산

지표권장 예산
cold launch P95이전 production 대비 10% 이상 악화 금지
TTI P95rollout 10% 단계에서 직전 버전과 비교
JS bundle loadbytecode diff 후 payload size와 함께 확인
native crash-free sessions99.5% 이상
Android ANR저사양 기기 세그먼트 별도 추적

디버깅 순서

  1. npx expo-doctor로 dependency·router·package 경계를 확인합니다.
  2. development build에서 React Native DevTools와 native logs를 동시에 봅니다.
  3. Hermes crash는 sourcemap·dSYM·ProGuard mapping 업로드 상태를 먼저 확인합니다.
  4. native module crash는 EAS Build artifact의 exact commit과 runtimeVersion을 대조합니다.
  5. OTA 이후만 발생하면 EAS Update group과 binary runtimeVersion 호환성을 먼저 봅니다.

관련 문서

Expo Modules API v2 네이티브 확장

Swift/Kotlin 네이티브 모듈 작성, 이벤트 브릿지, 테스트 전략

테스트 전략 — E2E·네이티브·비주얼

Maestro·Detox E2E, 네이티브 모듈 유닛 테스트, 비주얼 리그레션

SDK 56 브레이킹 체인지 총정리

React Native 0.85, Hermes V1, Expo Router 분리, 플랫폼 요구사항, 마이그레이션 체크리스트

React 19.2 동시성 패턴

useTransition·Suspense·Server Components가 모바일에서 의미하는 것

On this page

운영 관점의 New Architecture핵심 계층SDK 56 점검 포인트native module boundary 규칙성능 예산디버깅 순서