Skip to content

Blog

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.

Published

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 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

Image: Expo changelog

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.

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.

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

Image: expo.dev

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

5. Behaviors that change in the dev environment
`expo login`Browser login is the default
`NODE_ENV`Set to development or production by command, so `.env` loading changes
Node.jsOdd-numbered releases (such as 23 and 25) are not supported
macOSNot supported in SDK 58

Source: Expo SDK 58 changelog

^58.0.0 --fix

Install exponpx expo install expo→ Check (latest)

latest

Checknpx expo-doctor→ Review changes
Review changesBreaking changes and deprecations
Rebuild the dev buildWhen you use expo-dev-client
  • 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.

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

  • Tauri fixed its installer in v2.12.5, covered in an earlier post
  • The Android agent skills repository android/skills gained 873 stars this week
  • react-native has 13,054,365 weekly downloads on npm

Sources