npm / expo
expo
What changed in expo 58, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-18.
3 breaking1 new APIs and options7 behavior and defaults4 tooling10 fixes and other
See which of these apply to your code, ranked, in your agent:
npx @unstale/cli initexpo 5825 changes
Breaking changes 3
Unsupported module setups now fail the sync with a specific error instead of producing a broken build.
Removes the Expo polyfill now that React Native supports AbortSignal.any.
Removes the Expo polyfill now that React Native supports AbortSignal.timeout.
New APIs and options 1
Adds an overridable property to ExpoAppSceneDelegate for passing root properties to the app after React Native moved startup into scene(_:willConnectTo:).
Behavior and default changes 7
@expo/metro was promoted to stable for SDK 58.
On iOS, native module classes annotated with @ExpoModule are automatically added to the generated modules provider without being listed in expo-module.config.json.
Experimental granular bundle splitting is available for production exports with async routes.
Debug builds on Android 17 request this permission before loading the app so the dev server can be reached without expo-dev-client.
R8 minification is enabled by default in the bare template.
Under the UIKit scene life cycle, Handoff preparation, update, and failure events are forwarded to app delegate subscribers.
The SwiftPM plugin now accepts prebuilt-framework tarballs that bundle SwiftPM dependency XCFrameworks alongside the product.
Tooling 4
The iOS SwiftPM autolinking plugin now takes module identity, deployment target, and dependencies from prebuilt-metadata.
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.
A preview plugin lets Expo modules participate in the react-native spm autolinking graph, including precompiled xcframeworks, source packages, and the generated ExpoModulesProvider.
The plugin now contributes build-time script phases for Expo modules that need a build step under SwiftPM.
Fixes and other changes 10
Added the missing exports entry for expo/build/winter.
Stops overriding web style types already declared by React Native, avoiding conflicting type definitions.
Restores resolution of the bundled template so expo prebuild can use it instead of falling back to downloading one from npm.
Fixes an assertion at launch with react-native-macos 0.83 caused by EXReactRootViewFactory not overriding the method called by RCTReactNativeFactory.
The SwiftPM autolinking plugin declares each module's package dependencies and honors autolinkWhen conditions.
Fixes animated GIF and WebP images showing only their first frame in Android release builds minified with R8.
Fixes modules using Expo Swift macros failing to build from source with the SwiftPM autolinking plugin.
The SwiftPM plugin now generates an ExpoModulesProvider that reports app groups and registers inline modules.
Server bundles stub requestAnimationFrame to prevent crashes during server rendering and expo export when Reanimated is imported.
Deep links delivered to a running iOS app now emit JavaScript url events under the UIKit scene life cycle.