# Expo SDK 58에서 달라진 동작 5가지

React Native 앱 개발 도구 Expo의 SDK 58이 나왔습니다. 올리기 전에 코드와 빌드가 어떻게 달라지는지 변경 노트에서 다섯 가지를 골랐습니다.

- Language: ko
- Published: 2026-10-29
- Tags: app, expo, react-native
- URL: https://devs7ud.io/blog/expo-sdk-58-upgrade-checklist
- Translation (en): https://devs7ud.io/en/blog/expo-sdk-58-upgrade-checklist-en.md

## Expo SDK 58, 올리기 전에 볼 것

Expo는 React Native로 iOS와 안드로이드 앱을 만드는 개발 도구입니다. 자바스크립트용 패키지 `expo`의 npm 주간 다운로드는 10,273,164회입니다.

10월 15일에 [Expo SDK 58](https://expo.dev/changelog/sdk-58)이 나왔습니다. React Native는 0.88로 올라갔고, iOS 27 지원과 Expo UI 확장 같은 새 기능이 많습니다. 다만 변경 노트에는 기존 앱이 그대로 돌아가지 않을 수 있는 항목이 길게 적혀 있습니다. 업그레이드 명령을 치기 전에 꼭 볼 만한 다섯 가지만 골랐습니다.

![Expo SDK 58 변경 노트의 대표 이미지](https://cdn.sanity.io/images/9r24npb8/production/ddd5bb6eddbd4b98cc546553c4aea8a8ad6be9ef-1800x1012.png?rect=1,0,1799,1012&w=1200&h=675&q=80&auto=format)

_그림: [Expo 변경 기록](https://expo.dev/changelog/sdk-58)_

## 1\. iOS 앱의 시작 코드가 바뀝니다

SDK 58은 UIKit의 scene 기반 생명주기를 씁니다. 그래서 프리빌드를 돌리면 `SceneDelegate.swift`가 새로 만들어집니다. `AppDelegate.swift`를 직접 고쳐 쓰는 팀이거나 `ios` 폴더를 손으로 관리한다면, 변경 노트의 scene 생명주기 마이그레이션 안내를 따라 코드를 옮겨야 합니다.

반대로 네이티브 폴더를 직접 만지지 않고 Continuous Native Generation으로 관리한다면, 노트의 안내는 이전 SDK에서 생긴 `android`와 `ios` 폴더를 지우고 다시 만드는 것입니다.

## 2\. 릴리스 빌드에서 R8이 기본으로 켜집니다

안드로이드 릴리스 빌드에 코드 축소 도구 R8이 기본으로 적용됩니다. 이전에는 켜지 않고도 잘 돌던 앱이 릴리스 빌드에서만 클래스를 찾지 못할 수 있다는 뜻입니다. 변경 노트는 이 항목을 호환성이 깨지는 변경으로 분류했습니다.

릴리스 빌드를 한 번도 시험하지 않고 스토어 제출 직전에 SDK를 올리는 일정이라면 가장 먼저 걸릴 수 있는 곳입니다.

## 3\. 파일 쓰기가 비동기로 바뀝니다

`expo-file-system`의 `File.write()`가 비동기로 바뀌었습니다. 예전처럼 바로 끝나길 기대하고 다음 줄에서 파일을 읽는 코드는 값이 비어 있을 수 있습니다. 예전 동작이 필요하면 `File.writeSync()`를 쓰라고 노트는 안내합니다.

같은 줄에서 `File.md5`는 `File.digest()`로 옮기라고 권고합니다. 아직 지원되지만 앞으로 사라질 이름입니다.

![Expo 로고](/blog-img/expo-sdk-58-upgrade-checklist/1.png)

_그림: [expo.dev](https://expo.dev)_

## 4\. libSQL 지원이 사라집니다

`expo-sqlite`에서 libSQL 지원이 빠졌습니다. `syncLibSQL()`과 `libSQLOptions`를 쓰던 앱이라면 SDK 58로 올리기 전에 다른 방법을 정해야 합니다.

**5\. 개발 환경에서 바뀌는 동작**

| 항목 | 바뀐 동작 |
| --- | --- |
| \`expo login\` | 기본이 브라우저 로그인 |
| \`NODE\_ENV\` | 명령에 따라 development 또는 production으로 설정, \`.env\` 읽는 방식이 달라짐 |
| Node.js | 홀수 버전\(23, 25 등\)은 지원하지 않음 |
| macOS | SDK 58에서 지원하지 않음 |

_출처: Expo SDK 58 변경 기록_

## 올리는 순서는 네 단계입니다

**변경 노트가 안내하는 업그레이드 순서**

- expo 설치 → 점검
- 점검 → 변경 항목 확인
- 변경 항목 확인 → 개발 빌드 새로 만들기

_출처: Expo SDK 58 변경 기록_

Expo Go 쪽은 따로 알아 둘 것이 있습니다. SDK 58용 Expo Go는 앱 스토어에 올라오기까지 몇 주가 걸리고, 새 Expo Go는 SDK 58만 지원한다고 노트는 적었습니다. 그동안은 개발 빌드로 확인해야 합니다.

## 의견

저라면 새 기능보다 R8과 scene 생명주기부터 시험하겠습니다. 둘 다 기능을 켜서 얻는 이득이 아니라 앱이 깨질 수 있는 쪽이기 때문입니다. 반대로 Expo UI나 App Intents는 알파나 베타로 적혀 있는 것이 있어서, 이번에는 구경만 해도 됩니다.

개발 빌드를 새로 만드는 일이 의외로 오래 걸립니다. 이 변경 노트를 기준으로 하루쯤 따로 잡아 두는 편이 안전해 보입니다. 단, 노트는 앱마다 어떤 항목이 실제로 걸리는지까지는 알려 주지 않으므로 직접 확인해야 합니다.

![새 버전으로 이어지는 점들](/blog-img/expo-sdk-58-upgrade-checklist/2.png)

## 이번 주에 다루지 못한 소식도 있습니다

- Tauri는 v2.12.5로 설치 프로그램 문제를 손봤습니다. 지난 글에서 다뤘습니다
- Android 에이전트 스킬 저장소 [android/skills](https://github.com/android/skills)는 주간 873 스타를 받았습니다
- `react-native`의 npm 주간 다운로드는 13,054,365회입니다

### 출처

- [expo](https://www.npmjs.com/package/expo), npm 주간 다운로드
- [Expo SDK 58](https://expo.dev/changelog/sdk-58)
- [Expo SDK 58 Beta](https://expo.dev/changelog/sdk-58-beta)
- [react-native](https://www.npmjs.com/package/react-native), npm 주간 다운로드
