Expo 내비게이션 마이그레이션 (SDK 58)
세 가지 작업. 요청에 따라 선택합니다. 마이그레이션 계획은 세 가지를 모두 순서대로 수행해야 합니다.
| 요청 | 수행할 작업 |
|---|---|
| "이 저장소에서 내비게이션이 어떻게 구현되어 있나요?" | 분석 |
| "마이그레이션 계획을 세워주세요", "이걸 플래그로 관리할 수 있나요?", "React Navigation vs @expo/ui?" | 분석, 계획 |
| "현재 React Navigation을 사용 중인데, 더 네이티브한 요소와 안정적인 내비게이션 및 딥링크 라이브러리를 원합니다" | 분석, 계획 (기존 React Navigation 시나리오 참조) |
| "사이드바 / 시트 / Duo 레이아웃을 어떻게 만드나요?", "X 패턴이 작동하나요?" | 카탈로그에서 조회 |
전반적으로 사용되는 대상 이름:
- React Navigation은 react-native-screens 기반의 Expo Router를 의미합니다. SDK 56부터
expo-router는 더 이상@react-navigation/*에 의존하지 않으며, 기반으로 삼는 부분을 포크(fork)했습니다. SDK 58은 포크된 API의 대부분을 제거했습니다. - Plain React Navigation은 Expo Router 없이
@react-navigation/*7.x를 사용하는 것을 의미합니다. - @expo/ui는 iOS에서 SwiftUI, Android에서 Jetpack Compose를 의미합니다.
대상 저장소만 읽습니다. 이 스킬은 계획만 수립하며, 사용자가 별도로 요청하지 않는 한 애플리케이션 코드를 변경하지 않습니다.
Expo는 SDK가 변경될 때마다 업데이트됩니다. 여기에 있는 API 정보는 SDK 58 기준 2026-11-02에 확인되었습니다. 카탈로그에서 verified으로 표시되지 않은 API에 의존하려면 https://docs.expo.dev/versions/v58.0.0/를 참조하세요.
분석
node <skill>/scripts/inventory-navigation.mjs <repo-root>를 실행합니다. 읽기 전용이며path:line위치와 함께 신호(signal)를 출력합니다. 신호에truncated가 0보다 크게 표시되면--max-locations 200을 추가하여 다시 실행합니다.- references/analysis.md를 따릅니다. templates/analysis-report.md를 작성합니다.
보고서의 모든 행에 증거가 있는 값이 있거나, 검색했지만 찾을 수 없다고 명시되고, 모든 인벤토리 신호가 해당 코드를 읽어 확인되거나 기각되면 완료됩니다.
계획
references/migration-planning.md를 따릅니다. 다음 참조를 사용합니다:
- references/target-decision.md: 대상 간 추천
- references/flag-seams.md: 플래그를 배치할 위치, 문서화된 내용, 스파이크(spike)가 필요한 사항
- references/no-flag-paths.md: 플래그가 불가능할 때의 전환 방법
- references/api-mapping.md: SDK 점프, import 대체, 호환성 파괴 변경 사항
- references/existing-react-navigation.md: 아키타입 N(또는 혼합 아키타입 M의 N 부분)에 대한 시나리오: 시작점, 안정성 순서, 딥링크
templates/migration-plan.md를 작성합니다. 계획에는 항상 플래그를 사용한 전환, 플래그 없는 전환, 각각 배포 및 검증 가능한 순서화된 단계, 그리고 모든 플래그와 계획이 대체한 것을 제거하는 깔끔한 종료가 포함되어야 합니다. 이 저장소의 근거와 함께 하나의 추천을 명명합니다. 이 추천은 현재 내비게이션 소유자를 유지하는 것일 수도 있습니다. SDK만 이동하는 경우 플래그할 것이 없으며 그 이유를 계획에 명시합니다.
패턴 조회
references/pattern-catalog.md는 모든 시나리오와 해당 파일을 나열합니다. 각 파일은 iOS 및 Android에서 두 대상 모두에 대해 작동하는 프로토타입의 코드, 플랫폼별 상태, 주의사항 및 마이그레이션 노트를 제공합니다. 상태 단어는 그대로 인용하세요: verified는 시뮬레이터 또는 에뮬레이터에서 실행되었으며 실제 하드웨어는 사용되지 않았음을 의미합니다.
templates/는 재사용 가능한 파일을 보관합니다: 사이드바 섹션, 사이드바 배치 및 내비게이션 바 가시성을 위한 로컬 모듈, 내비게이션 헬퍼 레이어, 힌지(hinge) 및 창 분할(pane-split) 컴포넌트. 로컬 모듈은 개발 빌드(development build)가 필요합니다.