React Native 0.83 and Expo 55

반응형

 

 

Release Notes

Expo SDK 55 릴리즈 노트

2026년 2월 25일 · React Native 0.83 · React 19.2

Expo SDK 55가 출시되었습니다. 이번 릴리즈에는 React Native 0.83과 React 19.2가 포함되어 있으며, 레거시 아키텍처 지원 종료, AI 도구 확장, 네이티브 UI 개선 등 굵직한 변화가 가득합니다.

🔄

전환 기간 안내 (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

🎨

기본 프로젝트 템플릿 개편

기본 템플릿이 네이티브 플랫폼 관행과 개선된 폴더 구조에 초점을 맞춰 새롭게 디자인되었습니다.

🗂 Native Tabs API 기본 적용

iOS/Android에서 플랫폼 네이티브 탭 경험 제공, 브라우저에서는 반응형 웹 최적화 레이아웃 사용

✨ 새로운 디자인

기본 제공 경험(out-of-the-box) 향상을 위한 전면 디자인 리프레시

📁 새 /src 폴더 구조

앱 코드가 이제 /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.jsonnewArchEnabled 설정 옵션도 제거되었습니다. 자세한 내용은 "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-propertiesuseHermesV1 필드로 활성화할 수 있습니다:

{
  "expo": {
    "plugins": [
      [
        "expo-build-properties",
        {
          "buildReactNativeFromSource": true,
          "useHermesV1": true
        }
      ]
    ]
  }
}

또한 package.jsonoverrideshermes-compiler 버전을 지정해야 합니다:

{
  "overrides": {
    "hermes-compiler": "250829098.0.4"
  }
}
📦

Hermes 바이트코드 Diff 업데이트 (EAS Update)

expo-updates와 EAS Update에 Hermes 바이트코드 diff 기능이 추가되었습니다. 업데이트 전체 파일을 다운로드하는 대신, 이전 버전에 대한 바이너리 패치(diff)만 다운로드하여 적용합니다.

~75%
바이트코드 다운로드 시간 단축 (iOS/Android)
대역폭 사용량 절감
업데이트 채택률 향상

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) 방식의 통합을 도입합니다.

🔗 통합 방식 (Integrated)

React Native 코드가 기존 네이티브 프로젝트 내부에 위치. 양쪽을 함께 개발하는 팀에 적합.

📦 격리 방식 (Isolated)

React Native 앱을 네이티브 라이브러리(AAR/XCFramework)로 패키징. Node.js 환경 없이 네이티브 개발자가 사용 가능.

config 플러그인, 아티팩트 빌드용 CLI, 네이티브 ↔ Expo 앱 간 양방향 메시징 API가 포함됩니다.

🧭

Expo Router 네이티브 기능 강화

NEW Colors API

Android에 동적 Material 3 스타일, iOS에 적응형 색상을 적용. 앱 색상이 OS 테마에 자동으로 맞춰집니다.

NEW Apple Zoom 트랜지션

iOS에서 네이티브 줌 트랜지션과 제스처를 사용한 인터랙티브 공유 요소 전환 지원. 현재 iOS 전용이며 기본 활성화.

NEW Stack.Toolbar API

iOS 앱을 위한 UIToolbar API. 화면 하단 버튼으로 메뉴/액션을 수행할 때 탭 대안으로 유용. 현재 iOS 전용.

NEW SplitView 지원 (실험적)

React Native에서 오랫동안 기다려온 SplitView 레이아웃 지원. 현재 실험적 단계.

NEW Android Form Sheet 푸터 (실험적)

Android 모달 시트에 액션 버튼이나 확인 프롬프트를 위한 푸터 추가 가능.

✅ 기타 개선 사항
  • iOS/Android native-tabs 레이아웃에서 safe area 자동 처리 — 더 이상 수동 inset 처리 불필요
  • 화면 동기 레이아웃 업데이트 기본 활성화 — 네비게이션 전환 시 레이아웃 점프 감소
  • iOS 26+: Form Sheet 헤더가 자동으로 Liquid Glass 디자인 언어 채택
  • Native tabs 및 헤더에서 Xcasset 아이콘 지원
  • react-native-screens 4.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 이름 변경: DateTimePickerDatePicker, SwitchToggle, CircularProgress/LinearProgressProgressView
  • 새 컴포넌트: 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 버전용인지 한눈에 알 수 있습니다.

55
Modules
55
CLIs
55
Updates
55
Builds
🧱

Expo Modules Core

iOS와 Android 모두를 위한 통합 네이티브 모듈 빌드 기반입니다. SDK 55에서의 개선 사항:

Swift 6 언어 모드 채택

네이티브 모듈 유지 관리자라면, 이제 코드의 데이터 레이스가 컴파일 타임에 검사되어 스레드 안전성 보장이 강화됩니다.

ArrayBuffer 지원 추가

JavaScript와 네이티브 코드 간에 바이너리 데이터(오디오, 이미지, 파일 등)를 효율적으로 전송할 수 있게 됩니다.

StaticFunction / StaticAsyncFunction 추가

모듈 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/ui SwiftUI 컴포넌트와 modifier로 구성
🌫

expo-blur Android 안정화

Android 개발자들의 오랜 고민이었던 배경 블러가 드디어 안정화되었습니다. SDK 55부터 expo-blur는 Android 12 이상에서 훨씬 효율적인 RenderNode API를 사용하여 낮은 성능 비용으로 배경 블러를 적용합니다.

📌

마이그레이션 필요: 블러 가능한 배경 콘텐츠를 <BlurTargetView> 래퍼로 감싸야 합니다. 기존 API는 하위 호환을 유지하므로 즉시 마이그레이션이 필요하지는 않습니다.

📤

expo-sharing — 공유 데이터 수신 기능 (실험적)

NEW 오랫동안 요청되어온 기능: 다른 앱에서 Expo 앱으로 데이터를 공유받을 수 있는 기능이 추가되었습니다.

  • iOS: config 플러그인이 share-extension 앱 타겟 추가
  • Android: 적절한 intent-filter 추가
  • 공유 요청은 deep link를 통해 JavaScript에서 처리

SDK 55에서는 실험적(experimental) 단계로 표시됩니다.

기타 주요 업데이트

Expo Go
UI가 완전히 개선되어 SDK 54의 expo-dev-client 변경사항과 일치, Hermes 디버깅 경험 향상.
Expo Web
에러 오버레이 재작성, 서버 사이드 렌더링 알파 지원, 실험적 데이터 로더 출시.
expo-contacts/next
expo-media-library/next
expo-calendar/next
SharedObjects를 활용한 새 객체지향 API로 연락처, 이벤트, 미디어를 더 쉽게 관리. 더 강력한 쿼리 기능 추가.
expo-notifications
최신 Android Firebase 알림 의존성 업데이트. 백그라운드 작업 미실행, Android 11/12 크래시, FCM intent 검증, 커스텀 사운드 유효성 검사 등 주요 버그 수정.
expo-audio
잠금화면 컨트롤, 배경 녹음, 모든 플랫폼 플레이리스트 지원, 네이티브 프리로딩, Android 포그라운드 서비스 개선, iOS shouldRouteThroughEarpiece, 웹 지원 확대 (미터링, 녹음 입력 선택, 미디어 컨트롤).
expo-sqlite
새 SQLite Inspector DevTools 플러그인으로 실시간 DB 조회 가능. 타입 안전 파라미터 바인딩을 위한 태그드 템플릿 리터럴 API 추가: await db.sql`SELECT * FROM users WHERE age > ${age}`.
expo-crypto
AES-GCM 암호화 및 복호화 지원 추가.
expo-camera
녹화 시 영상 안정화 모드, Android 전면 카메라 스크린 플래시 추가. 앱 크기 절감을 위한 바코드 스캐너 API 제외 옵션 추가.
expo-web-browser
auth universal links 콜백 지원 추가. 앱이 백그라운드 전환 후 브라우저가 닫히는 Android 문제 수정.
expo-video
seekTolerance, scrubbingModeOptions 추가로 스크러빙 성능 향상. Android Picture-in-Picture 개선 (다중 VideoView 지원). 오디오·자막 트랙에 name, isDefault, autoSelect 필드 추가.
expo-image
iOS HDR 이미지 지원, SF Symbols 렌더링 가능, Android 쿠키 지원 (인증된 이미지 요청).
expo-server
SDK 54 주기에 @expo/server를 대체하는 새 패키지. 다양한 서버 환경과 호스팅 제공자용 어댑터 제공.
expo-file-system
파일에 데이터를 추가(append)하기 위한 쓰기 메서드에 append 옵션 추가.
expo-location
iOS 권한 응답에 정확도 인증(accuracy authorization) 포함 — 사용자가 전체 정확도 또는 제한 정확도를 허용했는지 확인 가능.
expo-maps
iOS Apple Maps에서 UI 스타일 옵션 추가 — 시스템 설정과 무관하게 라이트/다크 지도 모드 강제 설정 가능.
create-expo-module
비대화형 모드 지원 추가 — AI 에이전트 및 CI 파이프라인에서 인터랙티브 프롬프트 없이 모듈 스캐폴딩 가능.
📌

최소 iOS 버전 예고: SDK 56에서 최소 iOS 버전이 15.1 → 16.4로 상향 예정. SDK 55의 최소 iOS 버전은 여전히 15.1입니다.

⚠️

Deprecations (지원 중단 예정)

  • 여러 Expo 모듈의 removeSubscription 함수 deprecatedsubscription.remove() 사용으로 전환.
  • expo-video-thumbnails deprecatedexpo-videogenerateThumbnailsAsync로 대체. SDK 56에서 삭제 예정, 패치 미제공.
  • expo-videobitrate 필드 deprecatedaverageBitrate, peakBitrate 사용.
  • expo-navigation-bar 대부분 메서드 deprecated — Android 엣지-투-엣지 의무화로 배경색, 테두리색, 동작, 위치, 버튼 스타일 API 모두 no-op. app.json의 androidNavigationBar 설정도 deprecated.
  • expo-status-barbackgroundColor, translucent, networkActivityIndicatorVisible deprecated — 엣지-투-엣지 적용으로 no-op. app.json의 androidStatusBar.backgroundColor, androidStatusBar.translucent도 deprecated.
💥

주요 Breaking Changes

  • app.json의 notification 설정 필드 제거prebuild 시 에러 발생. expo-notifications config 플러그인으로 마이그레이션 필요.
  • Expo Go Android에서 푸시 알림 사용 시 에러 발생 (이전: 경고). 푸시 알림 사용을 위해서는 Development Build로 마이그레이션 필요.
  • 앱 설정 평가 툴체인 변경app.config.ts가 이제 내부 도구 대신 설치된 TypeScript로 트랜스파일됨.
  • eas update--environment 플래그 필수 — CI에서 사용 시 반드시 플래그 추가.
  • expo-av Expo Go에서 제거expo-video, expo-audio로 대체되었으며, 더 이상 패치를 받지 않음.
  • expo-video: allowsFullscreen prop 제거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의 reset prop → resetOnFocus로 이름 변경.
  • expo-blur: experimentalBlurMethodblurMethod로 이름 변경.
  • 모노레포에서 expo.experiments.autolinkingModuleResolution 기본 활성화.
  • 빠른 리졸버와 EXPO_USE_FAST_RESOLVER 환경 변수 제거 — 이제 리졸버 구현이 하나뿐이며 별도 설정 불필요.
  • experiments.reactCanary 플래그 제거 — React 19가 기본값이 되어 플래그 불필요.
🔧

도구 버전 변경

최소 Xcode 버전: 26

EAS Build는 SDK 55의 경우 기본적으로 Xcode 26.2를 사용합니다.

최소 Node.js 버전 상향

SDK 55에서 지원되는 Node.js 버전: ^20.19.4, ^22.13.0, ^24.3.0, ^25.0.0

🚀

SDK 55 업그레이드 가이드

Claude Code 또는 업그레이드 스킬을 활용하는 것을 권장합니다.

1
모든 의존성을 SDK 55에 맞게 업그레이드
npx expo install expo@^55.0.0 --fix
2
Expo Doctor로 알려진 문제 확인
npx expo-doctor@latest

중복 네이티브 모듈 경고가 보이면 가이드를 따라 해결하세요.

3
Deprecations 및 Breaking Changes 검토

위의 두 섹션을 반드시 확인하고, 전체 목록은 CHANGELOG를 참고하세요.

4
Xcode 26 업그레이드 확인

iOS 네이티브 프로젝트 컴파일에 Xcode 26이 필요합니다.

5
CNG(Continuous Native Generation) 사용자

이전 SDK 버전으로 생성된 android, ios 디렉터리를 삭제하세요. 다음 빌드 시 자동으로 재생성됩니다.

6
Development Build 사용자

업그레이드 후 새 Development Build를 생성하세요.

💬

문제가 있으면 업그레이드 트러블슈팅 가이드를 참고하거나, 매주 수요일 오후 12시(태평양 시간) Discord 오피스 아워에 참여하세요.

원문: expo.dev/changelog/sdk-55 · 번역: 블로그용 한국어 정리

Copyright © 2026 650 Industries, Inc. All rights reserved.

반응형

댓글

Designed by JB FACTORY