React Native 0.83 and Expo 55
- REACT & NODE
- 2026. 3. 31.
Expo SDK 55 릴리즈 노트
Expo SDK 55가 출시되었습니다. 이번 릴리즈에는 React Native 0.83과 React 19.2가 포함되어 있으며, 레거시 아키텍처 지원 종료, AI 도구 확장, 네이티브 UI 개선 등 굵직한 변화가 가득합니다.
- 전환 기간 안내 (Expo Go)
- 기본 템플릿 개편
- 레거시 아키텍처 지원 종료
- Hermes v1 옵트인 지원
- Hermes 바이트코드 diff 업데이트
- AI 도구 확장
- Brownfield 지원 개선
- Expo Router 네이티브 기능
- Expo UI (Jetpack Compose / SwiftUI)
- 패키지 버전 체계 변경
- Expo Modules Core
- Expo CLI
- expo-widgets (iOS, Alpha)
- expo-blur Android 안정화
- expo-sharing 수신 기능
- 기타 주요 업데이트
- Deprecations (지원 중단 예정)
- 주요 Breaking Changes
- 도구 버전 변경
- 업그레이드 가이드
전환 기간 안내 (Expo Go)
이번 릴리즈 직후 잠시 동안, App Store / Play Store의 Expo Go는 SDK 54 버전을 유지합니다. 또한 npx create-expo-app으로 생성되는 기본 프로젝트도 일관성을 위해 잠시 SDK 54를 사용합니다.
💡 이 전환 기간을 활용해 Development Build로 마이그레이션하는 것을 권장합니다. Development Build는 앱스토어에 배포할 앱을 만들기 위해 필요한 모든 것을 제공합니다.
SDK 55용 Expo Go 설치 방법:
- Android: Expo CLI를 통해 직접 디바이스에 설치 가능
- iOS: TestFlight External Beta 이용, 또는 새로운
eas go명령어로 본인 TestFlight 팀에 업로드
SDK 55 프로젝트를 새로 만들려면: npx create-expo-app --template default@sdk-55
기본 프로젝트 템플릿 개편
기본 템플릿이 네이티브 플랫폼 관행과 개선된 폴더 구조에 초점을 맞춰 새롭게 디자인되었습니다.
iOS/Android에서 플랫폼 네이티브 탭 경험 제공, 브라우저에서는 반응형 웹 최적화 레이아웃 사용
기본 제공 경험(out-of-the-box) 향상을 위한 전면 디자인 리프레시
앱 코드가 이제 /app 대신 /src/app에 위치하여 프로젝트 설정 파일과 앱 코드가 명확히 분리됩니다.
새 템플릿으로 프로젝트 생성하기
# npm
npx create-expo-app@latest --template default@sdk-55
# bun
bun create expo-app --template default@sdk-55
# pnpm
pnpm create expo-app --template default@sdk-55
# yarn
yarn create expo-app --template default@sdk-55
레거시 아키텍처 지원 종료
SDK 54에서 예고된 대로, SDK 55부터 레거시 아키텍처(Legacy Architecture)를 더 이상 사용할 수 없습니다. app.json의 newArchEnabled 설정 옵션도 제거되었습니다. 자세한 내용은 "React Native's New Architecture" 가이드를 참고하세요.
Hermes v1 옵트인 지원
Hermes v1은 JS 엔진의 큰 도약으로, 다양한 시나리오에서 성능 개선이 초기 지표에서 확인되었습니다. 또한 모던 JavaScript 기능 (ES6 클래스, const/let, async/await) 지원이 크게 향상됩니다.
주의: SDK 55 / React Native 0.83에서 Hermes v1을 사용하려면 React Native를 소스에서 빌드해야 하므로 네이티브 빌드 시간이 크게 증가합니다. 또한 Android 모노레포 프로젝트에서는 아직 권장하지 않습니다.
expo-build-properties의 useHermesV1 필드로 활성화할 수 있습니다:
{
"expo": {
"plugins": [
[
"expo-build-properties",
{
"buildReactNativeFromSource": true,
"useHermesV1": true
}
]
]
}
}
또한 package.json의 overrides에 hermes-compiler 버전을 지정해야 합니다:
{
"overrides": {
"hermes-compiler": "250829098.0.4"
}
}
Hermes 바이트코드 Diff 업데이트 (EAS Update)
expo-updates와 EAS Update에 Hermes 바이트코드 diff 기능이 추가되었습니다. 업데이트 전체 파일을 다운로드하는 대신, 이전 버전에 대한 바이너리 패치(diff)만 다운로드하여 적용합니다.
SDK 55에서는 옵트인 방식이며, SDK 56에서 기본 활성화 예정입니다. 활성화 방법:
{
"expo": {
"updates": {
"url": "https://u.expo.dev/[your-project-id]",
"enableBsdiffPatchSupport": true
}
}
}
EAS 대시보드 → Update Details → Update Group에서 diff가 적용되고 있는지 확인할 수 있습니다.
Expo 개발자를 위한 AI 도구 확장
MCP: CLI 액션 및 EAS 서비스 연동
Expo 모듈이 Expo CLI에 플러그인과 명령어를 노출하면, [SHIFT] + M 메뉴에서 이 액션들을 Expo MCP 서버에 자동으로 설치할 수 있게 되었습니다.
- MCP를 통해 EAS에 질의 가능 — "최근 빌드가 왜 실패했나요?" 같은 질문을 AI에게 직접 물어볼 수 있습니다.
- TestFlight 크래시 리포트와 피드백도 조회 가능 (ASC 키가 Expo 계정에 연결된 경우).
- 예: "TestFlight에서 최근 크래시 리포트와 피드백을 분석해줘" → AI가 자동으로 조사.
Agent Skills
expo/skills 저장소는 Expo 앱 빌드·배포·디버깅을 위한 공식 AI 에이전트 스킬 컬렉션입니다. 주로 Claude Code와 함께 사용하며, Opus 모델에 최적화되어 있지만 모든 AI 에이전트에서 사용 가능합니다.
✅ 업그레이드 스킬도 포함되어 있어 SDK 55로 업그레이드할 때 도움이 됩니다. 커뮤니티에서 만든 유사 스킬들이 많지만, Expo 팀이 공식적으로 관리하는 스킬은 expo/skills 저장소의 것뿐임을 주의하세요.
"Brownfield" — 기존 네이티브 앱에 Expo 추가
SDK 55는 Brownfield 앱 지원을 개선하고, 새로운 expo-brownfield 패키지를 통해 격리된(isolated) 방식의 통합을 도입합니다.
React Native 코드가 기존 네이티브 프로젝트 내부에 위치. 양쪽을 함께 개발하는 팀에 적합.
React Native 앱을 네이티브 라이브러리(AAR/XCFramework)로 패키징. Node.js 환경 없이 네이티브 개발자가 사용 가능.
config 플러그인, 아티팩트 빌드용 CLI, 네이티브 ↔ Expo 앱 간 양방향 메시징 API가 포함됩니다.
Expo Router 네이티브 기능 강화
Android에 동적 Material 3 스타일, iOS에 적응형 색상을 적용. 앱 색상이 OS 테마에 자동으로 맞춰집니다.
iOS에서 네이티브 줌 트랜지션과 제스처를 사용한 인터랙티브 공유 요소 전환 지원. 현재 iOS 전용이며 기본 활성화.
iOS 앱을 위한 UIToolbar API. 화면 하단 버튼으로 메뉴/액션을 수행할 때 탭 대안으로 유용. 현재 iOS 전용.
React Native에서 오랫동안 기다려온 SplitView 레이아웃 지원. 현재 실험적 단계.
Android 모달 시트에 액션 버튼이나 확인 프롬프트를 위한 푸터 추가 가능.
- iOS/Android native-tabs 레이아웃에서 safe area 자동 처리 — 더 이상 수동 inset 처리 불필요
- 화면 동기 레이아웃 업데이트 기본 활성화 — 네비게이션 전환 시 레이아웃 점프 감소
- iOS 26+: Form Sheet 헤더가 자동으로 Liquid Glass 디자인 언어 채택
- Native tabs 및 헤더에서 Xcasset 아이콘 지원
react-native-screens4.23.0으로 업그레이드
Expo UI (2026년 중반 안정화 목표)
2026년 중반 안정 버전 출시를 목표로, SDK 55에서 기능이 크게 개선되었습니다. SwiftUI와 Jetpack Compose를 위한 스킬도 expo/skills에 추가되었습니다.
Jetpack Compose Beta
Alpha에서 Beta로 승격되었습니다. 테스트 케이스로 WikiReader 클론 앱(expo/wiki-reader)이 제작되었습니다.
- 함수형 DSL 패턴으로 전환: 클래스 기반에서
View("MyView") { props -> }형태로 변경 - 새 Material3 컴포넌트 다수 추가:
Card,LazyColumn,ListItem,PullToRefreshBox,FlowRow,Surface,Icon,DockedSearchBar,FilterChip,ToggleButton,RadioButton,ModalBottomSheet,Carousel,IconButton, 웨이브 프로그레스 인디케이터 - Modifier 지원: SwiftUI 스타일 modifier를 Compose 컴포넌트에 적용 가능. 예:
<Box modifiers={[size(100,100), background(...)]} /> <Icon>컴포넌트: Material Symbols XML 벡터 드로어블을 네이티브로 렌더링Host.colorScheme으로 동적 테마 지원
SwiftUI Beta
SwiftUI 관행에 더 가깝게 API가 업데이트되었습니다. Breaking Changes 포함:
- API 이름 변경:
DateTimePicker→DatePicker,Switch→Toggle,CircularProgress/LinearProgress→ProgressView - 새 컴포넌트:
ConfirmationDialog,ScrollView - 새 Modifier:
contentShape(),monospacedDigit,scaleEffect(축별),ignoreSafeArea Text컴포넌트에서 Markdown 지원- 커스텀 SwiftUI 뷰·modifier 지원 — 직접 컴포넌트와 modifier를 확장 가능
새로운 Expo SDK 패키지 버전 체계
SDK 55부터, 모든 Expo SDK 패키지의 메이저 버전이 SDK 버전과 동일하게 맞춰집니다.
예: SDK 55와 호환되는 expo-camera의 버전은 ^55.0.0입니다. 패키지 버전만 봐도 어떤 SDK 버전용인지 한눈에 알 수 있습니다.
Expo Modules Core
iOS와 Android 모두를 위한 통합 네이티브 모듈 빌드 기반입니다. SDK 55에서의 개선 사항:
네이티브 모듈 유지 관리자라면, 이제 코드의 데이터 레이스가 컴파일 타임에 검사되어 스레드 안전성 보장이 강화됩니다.
JavaScript와 네이티브 코드 간에 바이너리 데이터(오디오, 이미지, 파일 등)를 효율적으로 전송할 수 있게 됩니다.
모듈 API의 Class에서 인스턴스 생성 없이 함수를 직접 호출할 수 있습니다.
Expo CLI 개선 사항
- 개발 서버 시작 화면 개선: 작은 터미널에서 QR 코드가 잘리지 않도록 최적화. Alacritty, Ghostty, Kitty, Windows Terminal에서 소형 QR 코드 지원.
- 환경 파일 지원(@expo/env): Node.js의 빌트인
parseEnv를 사용하도록 업데이트. - 개발 빌드에서 첫 로컬 네트워크 접근 안정화: iOS + expo-dev-client에 Apple Bonjour 지원 추가. iOS 첫 실행 시 개발 서버 연결 실패 문제 해결.
- 동적 앱 설정 로딩 개선:
app.config.js등 동적 설정 파일 로딩이 Node.js 모듈 로딩과 맞춰졌습니다..mjs,.cjs,.cts,.mts확장자 실험적 지원. - 새 Log Box 실험적 지원: 웹에서는 기본 활성화. 모바일 개발 시
EXPO_UNSTABLE_LOG_BOX=1설정 후 네이티브 재빌드하면 사용 가능 (Expo Go 미지원).
expo-widgets iOS 알파 릴리즈
Alpha expo-widgets를 사용하면 네이티브 코드 없이 Expo UI 컴포넌트만으로 iOS 홈 화면 위젯과 Live Activities를 만들을 수 있습니다.
- 위젯 타임라인 생성·업데이트 API
- Live Activities 시작·관리
- Push-to-start 토큰 수신 대기
- 레이아웃은
@expo/uiSwiftUI 컴포넌트와 modifier로 구성
expo-blur Android 안정화
Android 개발자들의 오랜 고민이었던 배경 블러가 드디어 안정화되었습니다. SDK 55부터 expo-blur는 Android 12 이상에서 훨씬 효율적인 RenderNode API를 사용하여 낮은 성능 비용으로 배경 블러를 적용합니다.
마이그레이션 필요: 블러 가능한 배경 콘텐츠를 <BlurTargetView> 래퍼로 감싸야 합니다. 기존 API는 하위 호환을 유지하므로 즉시 마이그레이션이 필요하지는 않습니다.
기타 주요 업데이트
expo-media-library/next
expo-calendar/next
shouldRouteThroughEarpiece, 웹 지원 확대 (미터링, 녹음 입력 선택, 미디어 컨트롤).await db.sql`SELECT * FROM users WHERE age > ${age}`.seekTolerance, scrubbingModeOptions 추가로 스크러빙 성능 향상. Android Picture-in-Picture 개선 (다중 VideoView 지원). 오디오·자막 트랙에 name, isDefault, autoSelect 필드 추가.@expo/server를 대체하는 새 패키지. 다양한 서버 환경과 호스팅 제공자용 어댑터 제공.최소 iOS 버전 예고: SDK 56에서 최소 iOS 버전이 15.1 → 16.4로 상향 예정. SDK 55의 최소 iOS 버전은 여전히 15.1입니다.
Deprecations (지원 중단 예정)
- 여러 Expo 모듈의
removeSubscription함수 deprecated —subscription.remove()사용으로 전환. expo-video-thumbnailsdeprecated —expo-video의generateThumbnailsAsync로 대체. SDK 56에서 삭제 예정, 패치 미제공.expo-video의bitrate필드 deprecated —averageBitrate,peakBitrate사용.expo-navigation-bar대부분 메서드 deprecated — Android 엣지-투-엣지 의무화로 배경색, 테두리색, 동작, 위치, 버튼 스타일 API 모두 no-op. app.json의androidNavigationBar설정도 deprecated.expo-status-bar의backgroundColor,translucent,networkActivityIndicatorVisibledeprecated — 엣지-투-엣지 적용으로 no-op. app.json의androidStatusBar.backgroundColor,androidStatusBar.translucent도 deprecated.
주요 Breaking Changes
- app.json의
notification설정 필드 제거 —prebuild시 에러 발생.expo-notificationsconfig 플러그인으로 마이그레이션 필요. - Expo Go Android에서 푸시 알림 사용 시 에러 발생 (이전: 경고). 푸시 알림 사용을 위해서는 Development Build로 마이그레이션 필요.
- 앱 설정 평가 툴체인 변경 —
app.config.ts가 이제 내부 도구 대신 설치된 TypeScript로 트랜스파일됨. eas update에--environment플래그 필수 — CI에서 사용 시 반드시 플래그 추가.expo-avExpo Go에서 제거 —expo-video,expo-audio로 대체되었으며, 더 이상 패치를 받지 않음.expo-video:allowsFullscreenprop 제거 —fullscreenOptions.enable사용.expo-clipboard: 이벤트 리스너의content프로퍼티 제거 —getStringAsync()사용.expo-cellular: 사업자 관련 상수 제거 — iOS 메서드는 이제null반환.expo-router:ExpoRequest,ExpoResponse타입 제거 — 표준Request/Response사용.- app.json에서
edgeToEdgeEnabled제거 — Android 16+ 타겟 시 엣지-투-엣지 의무화. expo-router: headless tabs의resetprop →resetOnFocus로 이름 변경.expo-blur:experimentalBlurMethod→blurMethod로 이름 변경.- 모노레포에서
expo.experiments.autolinkingModuleResolution기본 활성화. - 빠른 리졸버와
EXPO_USE_FAST_RESOLVER환경 변수 제거 — 이제 리졸버 구현이 하나뿐이며 별도 설정 불필요. experiments.reactCanary플래그 제거 — React 19가 기본값이 되어 플래그 불필요.
도구 버전 변경
EAS Build는 SDK 55의 경우 기본적으로 Xcode 26.2를 사용합니다.
SDK 55에서 지원되는 Node.js 버전: ^20.19.4, ^22.13.0, ^24.3.0, ^25.0.0
SDK 55 업그레이드 가이드
Claude Code 또는 업그레이드 스킬을 활용하는 것을 권장합니다.
npx expo install expo@^55.0.0 --fix
npx expo-doctor@latest
중복 네이티브 모듈 경고가 보이면 가이드를 따라 해결하세요.
위의 두 섹션을 반드시 확인하고, 전체 목록은 CHANGELOG를 참고하세요.
iOS 네이티브 프로젝트 컴파일에 Xcode 26이 필요합니다.
이전 SDK 버전으로 생성된 android, ios 디렉터리를 삭제하세요. 다음 빌드 시 자동으로 재생성됩니다.
업그레이드 후 새 Development Build를 생성하세요.
문제가 있으면 업그레이드 트러블슈팅 가이드를 참고하거나, 매주 수요일 오후 12시(태평양 시간) Discord 오피스 아워에 참여하세요.
'REACT & NODE' 카테고리의 다른 글
| React Native에서 Cheerio 사용하기: TypeScript 타입 선언 완벽 가이드 (0) | 2025.09.21 |
|---|---|
| 안드로이드에서는 실제 배포된 앱이 아니면 결제가 실제로 이루어지지 않습니다. (0) | 2025.09.18 |
| directly 'pod install' deprecated, rosetta2, intell x86 vs arm64 (0) | 2025.09.17 |
| .env (0) | 2025.09.17 |
| React Native 0.81 and Expo 54 (0) | 2025.09.16 |