# What changed in expo

> 25 changes in expo 58 from its official release notes, upgrade guides and advisories: 3 breaking, 1 new APIs and options. Each one cited. Sources checked 2026-10-18. HTML: https://unstale.sh/npm/expo/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## expo 58

### Breaking changes

- Unsupported module setups now fail the sync with a specific error instead of producing a broken build. (58.0.2) — [release notes](https://github.com/expo/expo/releases/tag/expo%4058.0.2)
- Removes the Expo polyfill now that React Native supports AbortSignal.any. (58.0.1) — [release notes](https://github.com/expo/expo/releases/tag/expo%4058.0.1)
- Removes the Expo polyfill now that React Native supports AbortSignal.timeout. (58.0.1) — [release notes](https://github.com/expo/expo/releases/tag/expo%4058.0.1)

### New APIs and options

- Adds an overridable property to ExpoAppSceneDelegate for passing root properties to the app after React Native moved startup into scene(_:willConnectTo:). (58.0.4) — [release notes](https://github.com/expo/expo/releases/tag/expo%4058.0.4)

### Behavior and default changes

- @expo/metro was promoted to stable for SDK 58. (58.0.10) — [release notes](https://github.com/expo/expo/releases/tag/expo%4058.0.10)
- On iOS, native module classes annotated with @ExpoModule are automatically added to the generated modules provider without being listed in expo-module.config.json. (58.0.8) — [release notes](https://github.com/expo/expo/releases/tag/expo%4058.0.8)
- Experimental granular bundle splitting is available for production exports with async routes. (58.0.8) — [release notes](https://github.com/expo/expo/releases/tag/expo%4058.0.8)
- Debug builds on Android 17 request this permission before loading the app so the dev server can be reached without expo-dev-client. (58.0.0) — [release notes](https://github.com/expo/expo/releases/tag/expo%4058.0.0)
- R8 minification is enabled by default in the bare template. (58.0.0) — [release notes](https://github.com/expo/expo/releases/tag/expo%4058.0.0)
- Under the UIKit scene life cycle, Handoff preparation, update, and failure events are forwarded to app delegate subscribers. (58.0.0) — [release notes](https://github.com/expo/expo/releases/tag/expo%4058.0.0)
- The SwiftPM plugin now accepts prebuilt-framework tarballs that bundle SwiftPM dependency XCFrameworks alongside the product. (58.0.0) — [release notes](https://github.com/expo/expo/releases/tag/expo%4058.0.0)

### Tooling

- The iOS SwiftPM autolinking plugin now takes module identity, deployment target, and dependencies from prebuilt-metadata. (58.0.1) — [release notes](https://github.com/expo/expo/releases/tag/expo%4058.0.1)
- The SwiftPM plugin's generated manifest now includes module build settings, the declared iOS deployment floor, PrivacyInfo.xcprivacy, and RCT_NEW_ARCH_ENABLED for ExpoObjC. (58.0.0) — [release notes](https://github.com/expo/expo/releases/tag/expo%4058.0.0)
- A preview plugin lets Expo modules participate in the react-native spm autolinking graph, including precompiled xcframeworks, source packages, and the generated ExpoModulesProvider. (58.0.0) — [release notes](https://github.com/expo/expo/releases/tag/expo%4058.0.0)
- The plugin now contributes build-time script phases for Expo modules that need a build step under SwiftPM. (58.0.0) — [release notes](https://github.com/expo/expo/releases/tag/expo%4058.0.0)

### Fixes and other changes

- Added the missing exports entry for expo/build/winter. (58.0.10) — [release notes](https://github.com/expo/expo/releases/tag/expo%4058.0.10)
- Stops overriding web style types already declared by React Native, avoiding conflicting type definitions. (58.0.7) — [release notes](https://github.com/expo/expo/releases/tag/expo%4058.0.7)
- Restores resolution of the bundled template so expo prebuild can use it instead of falling back to downloading one from npm. (58.0.4) — [release notes](https://github.com/expo/expo/releases/tag/expo%4058.0.4)
- Fixes an assertion at launch with react-native-macos 0.83 caused by EXReactRootViewFactory not overriding the method called by RCTReactNativeFactory. (58.0.2) — [release notes](https://github.com/expo/expo/releases/tag/expo%4058.0.2)
- The SwiftPM autolinking plugin declares each module's package dependencies and honors autolinkWhen conditions. (58.0.2) — [release notes](https://github.com/expo/expo/releases/tag/expo%4058.0.2)
- Fixes animated GIF and WebP images showing only their first frame in Android release builds minified with R8. (58.0.1) — [release notes](https://github.com/expo/expo/releases/tag/expo%4058.0.1)
- Fixes modules using Expo Swift macros failing to build from source with the SwiftPM autolinking plugin. (58.0.1) — [release notes](https://github.com/expo/expo/releases/tag/expo%4058.0.1)
- The SwiftPM plugin now generates an ExpoModulesProvider that reports app groups and registers inline modules. (58.0.0) — [release notes](https://github.com/expo/expo/releases/tag/expo%4058.0.0)
- Server bundles stub requestAnimationFrame to prevent crashes during server rendering and expo export when Reanimated is imported. (58.0.0) — [release notes](https://github.com/expo/expo/releases/tag/expo%4058.0.0)
- Deep links delivered to a running iOS app now emit JavaScript url events under the UIKit scene life cycle. (58.0.0) — [release notes](https://github.com/expo/expo/releases/tag/expo%4058.0.0)
