# Five behaviors that changed in Expo SDK 58

Expo SDK 58, the toolkit for building iOS and Android apps with React Native, is out. These are five changes from its release notes to check before you upgrade.

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

## Expo SDK 58: check these first

Expo is a toolkit for building iOS and Android apps with React Native. The `expo` package on npm has 10,273,164 weekly downloads.

[Expo SDK 58](https://expo.dev/changelog/sdk-58) came out on October 15. It moves React Native to 0.88 and brings new features such as iOS 27 support and a wider Expo UI. The release notes also list a long set of changes that can stop an existing app from running as before. Here are five worth reading before you type the upgrade command.

![The cover image of the Expo SDK 58 changelog](https://cdn.sanity.io/images/9r24npb8/production/ddd5bb6eddbd4b98cc546553c4aea8a8ad6be9ef-1800x1012.png?rect=1,0,1799,1012&w=1200&h=675&q=80&auto=format)

_Image: [Expo changelog](https://expo.dev/changelog/sdk-58)_

## 1\. The iOS app's startup code changes

SDK 58 uses the UIKit scene-based life cycle, so running prebuild now generates a `SceneDelegate.swift`. If your team edits `AppDelegate.swift` by hand or manages the `ios` folder manually, you need to move that code by following the scene life cycle migration guide in the notes.

If you do not touch the native folders and use Continuous Native Generation instead, the notes say to delete the `android` and `ios` folders left over from an earlier SDK and let them be generated again.

## 2\. R8 is on by default in release builds

R8, the tool that shrinks code, now applies to Android release builds by default. An app that ran fine without it may fail to find a class only in the release build. The release notes list this as a breaking change.

If your schedule is to bump the SDK right before a store submission and you have never tested a release build, this is the first place you may get caught.

## 3\. Writing a file is now asynchronous

`File.write()` in `expo-file-system` is now asynchronous. Code that expects it to finish at once and reads the file on the next line may find it empty. If you need the old behavior, the notes say to use `File.writeSync()`.

The same notes recommend moving from `File.md5` to `File.digest()`. The old name still works, but it is going away.

![The Expo logo](/blog-img/expo-sdk-58-upgrade-checklist-en/1.png)

_Image: [expo.dev](https://expo.dev)_

## 4\. libSQL support is removed

`expo-sqlite` no longer supports libSQL. An app that uses `syncLibSQL()` or `libSQLOptions` has to settle on another approach before moving to SDK 58.

**5\. Behaviors that change in the dev environment**

| Item | What changed |
| --- | --- |
| \`expo login\` | Browser login is the default |
| \`NODE\_ENV\` | Set to development or production by command, so \`.env\` loading changes |
| Node.js | Odd-numbered releases \(such as 23 and 25\) are not supported |
| macOS | Not supported in SDK 58 |

_Source: Expo SDK 58 changelog_

## The upgrade takes four steps

**Upgrade order from the release notes**

- Install expo → Check
- Check → Review changes
- Review changes → Rebuild the dev build

_Source: Expo SDK 58 changelog_

Expo Go needs a note of its own. The SDK 58 version of Expo Go takes a few weeks to reach the app stores, and the new Expo Go supports only SDK 58, according to the notes. Until then, check with a development build.

## View

I would test R8 and the scene life cycle before any new feature. Neither is a gain you switch on; both can break your app. Expo UI and App Intents, on the other hand, include parts marked alpha or beta, so looking this time is enough.

Creating a new development build takes longer than people expect. Setting a day aside for it, using these release notes as the guide, looks safer. The notes do not say which items will actually catch your app, so you have to check that yourself.

![Dots leading to a new version](/blog-img/expo-sdk-58-upgrade-checklist-en/2.png)

## Other news from this week

- Tauri fixed its installer in v2.12.5, covered in an earlier post
- The Android agent skills repository [android/skills](https://github.com/android/skills) gained 873 stars this week
- `react-native` has 13,054,365 weekly downloads on npm

### Sources

- [expo](https://www.npmjs.com/package/expo), weekly downloads on 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), weekly downloads on npm
