expo
58.0.16 · 19 Oct 2026MIT7.1M / weekRepositoryHomepagenpmAtom feed
546 stable releases, newest first, by release line. Notes are quoted as the maintainers published them.
- 58.x · latest line
58.0.16
19 Oct 2026Fix web
ViewStyleandTextStyletypes disagreeing oncursor,transitionDuration, anduserSelect.
Patch Changes
Fix web
ViewStyleandTextStyletypes disagreeing oncursor,transitionDuration, anduserSelect.
58.0.15
19 Oct 2026Add the
expo-modulescommand, which runsexpo-modules-cli. Modules that declareexpoas a dependency can run it without depending onexpo-modules-cli.
Patch Changes
Add the
expo-modulescommand, which runsexpo-modules-cli. Modules that declareexpoas a dependency can run it without depending onexpo-modules-cli.
58.0.12 – 58.0.143 releases that only update dependenciesexpo-modules-core 58.0.22@expo/cli 58.1.11babel-preset-expo 58.0.17Show each
58.0.11
15 Oct 2026Upgrade React Native to 0.88.0.
Upgrade
react-native-svgto 15.16.0.[Internal] Drop unused
EXPO_PROJECT_ROOTandEXPO_ROUTER_ABS_APP_ROOTvariables and corresponding invalidation.
Patch Changes
Upgrade React Native to 0.88.0.
Upgrade
react-native-svgto 15.16.0.[Internal] Drop unused
EXPO_PROJECT_ROOTandEXPO_ROUTER_ABS_APP_ROOTvariables and corresponding invalidation.
58.0.10
14 Oct 2026Upgrade
react-native-screensto 4.30.0.Update to
@expo/metro@~58.0.0(promoted to stable for SDK 58).Add missing
expo/build/winterexports entry.
Patch Changes
Upgrade
react-native-screensto 4.30.0.Update to
@expo/metro@~58.0.0(promoted to stable for SDK 58).Add missing
expo/build/winterexports entry.
58.0.9
13 Oct 2026Only updates a dependency:expo-modules-core 58.0.17
58.0.8
13 Oct 2026[iOS] Detect native module classes annotated with the
@ExpoModulemacro and add them to the generated modules provider automatically, without listing them inexpo-module.config.json. Generating the modules provider runs the scanner fromexpo-modules-macrosonce over all package sources and links only the classes that compile for the target platform. When the scan fails, packages that declare their modules still link them, and the build fails if a package relies on the scan for its module classes.[web] Add experimental granular bundle splitting for production exports with async routes.
Patch Changes
[iOS] Detect native module classes annotated with the
@ExpoModulemacro and add them to the generated modules provider automatically, without listing them inexpo-module.config.json. Generating the modules provider runs the scanner fromexpo-modules-macrosonce over all package sources and links only the classes that compile for the target platform. When the scan fails, packages that declare their modules still link them, and the build fails if a package relies on the scan for its module classes.[web] Add experimental granular bundle splitting for production exports with async routes.
58.0.7
9 Oct 2026Stop overriding web style types that React Native already declares.
Patch Changes
Stop overriding web style types that React Native already declares.
58.0.6
6 Oct 2026[Internal] Bootstrap React Native through
react-native/setup-envinstead ofInitializeCore.[Internal] Import
LogBox,DevSettings, andNativeComponentRegistryfrom thereact-nativepublic API.[Internal] Import React Native internals from
react-native/unstable-internals-do-not-use.
Patch Changes
[Internal] Bootstrap React Native through
react-native/setup-envinstead ofInitializeCore.[Internal] Import
LogBox,DevSettings, andNativeComponentRegistryfrom thereact-nativepublic API.[Internal] Import React Native internals from
react-native/unstable-internals-do-not-use.
58.0.5
5 Oct 2026Only updates dependencies:expo-file-system 58.0.6expo-font 58.0.7@expo/log-box 58.0.10@expo/cli 58.1.4
58.0.4
5 Oct 2026[iOS] Add an overridable
initialPropertiestoExpoAppSceneDelegate, restoring the root properties apps could pass throughRCTAppDelegate.initialPropsbefore React Native moved its startup intoscene(_:willConnectTo:).Add
./template.tgzto theexportsmap soexpo/template.tgzresolves again. Before, the./*wildcard mapped it to the nonexistenttemplate.tgz.js, soexpo prebuildcouldn't use the template bundled withexpoand fell back to downloading one from npm.
Patch Changes
[iOS] Add an overridable
initialPropertiestoExpoAppSceneDelegate, restoring the root properties apps could pass throughRCTAppDelegate.initialPropsbefore React Native moved its startup intoscene(_:willConnectTo:).Add
./template.tgzto theexportsmap soexpo/template.tgzresolves again. Before, the./*wildcard mapped it to the nonexistenttemplate.tgz.js, soexpo prebuildcouldn't use the template bundled withexpoand fell back to downloading one from npm.
58.0.3
3 Oct 2026[Internal] Bump
react-native-webto~0.21.3.Use the
TextDecoderimplementation provided by Hermes in React Native 0.88. In addition to UTF-8, this new implementation supports more character encodings including UTF-16 LE and BE, Latin-1, and Windows-1252. Custom JavaScript runtimes must provideTextDecoderbefore initializing Expo.
Patch Changes
[Internal] Bump
react-native-webto~0.21.3.Use the
TextDecoderimplementation provided by Hermes in React Native 0.88. In addition to UTF-8, this new implementation supports more character encodings including UTF-16 LE and BE, Latin-1, and Windows-1252. Custom JavaScript runtimes must provideTextDecoderbefore initializing Expo.
58.0.2
1 Oct 2026[macOS] Fix the
AppController.sharedInstace was called before the module was initializedassertion at launch withreact-native-macos0.83, whereEXReactRootViewFactorydid not override theviewWithModuleName:initialProperties:launchOptions:devMenuConfiguration:method thatRCTReactNativeFactorycalls.[iOS] Declare each module's SwiftPM package dependencies and honour
autolinkWhenconditions in the SwiftPM autolinking plugin.[iOS] Fail the SwiftPM autolinking sync with a specific error for module setups the plugin cannot link correctly, instead of producing a broken build.
Patch Changes
[macOS] Fix the
AppController.sharedInstace was called before the module was initializedassertion at launch withreact-native-macos0.83, whereEXReactRootViewFactorydid not override theviewWithModuleName:initialProperties:launchOptions:devMenuConfiguration:method thatRCTReactNativeFactorycalls.[iOS] Declare each module's SwiftPM package dependencies and honour
autolinkWhenconditions in the SwiftPM autolinking plugin.[iOS] Fail the SwiftPM autolinking sync with a specific error for module setups the plugin cannot link correctly, instead of producing a broken build.
58.0.1
1 Oct 2026[Android] Fix animated GIF and WebP images showing only their first frame in release builds minified with R8. Fresco 3.7.0 creates these decoders through reflection, and R8 removed their constructors.
Remove the
AbortSignal.timeoutandAbortSignal.anypolyfills now that React Native supports them.[Internal] [iOS] Simplify the SwiftPM autolinking plugin's internals. The generated packages are unchanged.
Patch Changes
Bump recommended
@shopify/flash-listto2.3.2and@shopify/react-native-skiato2.13.1.[Android] Fix animated GIF and WebP images showing only their first frame in release builds minified with R8. Fresco 3.7.0 creates these decoders through reflection, and R8 removed their constructors.
Remove the
AbortSignal.timeoutandAbortSignal.anypolyfills now that React Native supports them.[Internal] [iOS] Simplify the SwiftPM autolinking plugin's internals. The generated packages are unchanged.
[iOS] Take module identity, deployment target and dependencies from
expo-modules-autolinking prebuilt-metadatain the SwiftPM autolinking plugin.[iOS] Fix modules that use Expo Swift macros (
@Field,@Record) failing to build from source with the SwiftPM autolinking plugin.
58.0.0
29 Sep 2026Force-bump all packages, due to migration to changesets.
[iOS] Add a SwiftPM autolinking plugin (preview) so Expo modules can be consumed by
react-native spm, contributing precompiled xcframeworks, source packages and the generatedExpoModulesProviderinto the SwiftPM autolinking graph.[iOS] Bring the
Package.swiftthe SwiftPM autolinking plugin generates up to what CocoaPods already carries: a module's build settings, its declared iOS deployment floor and itsPrivacyInfo.xcprivacy, plusRCT_NEW_ARCH_ENABLEDfor theExpoObjCtarget. Modules the plugin cannot place are now reported with the reason and the fix, including one whosePackage.swiftdepends on a target the generated package cannot declare. The podspec reader no longer mistakes atest_spec's linkage for the module's own.
Patch Changes
Force-bump all packages, due to migration to changesets.
[iOS] Add a SwiftPM autolinking plugin (preview) so Expo modules can be consumed by
react-native spm, contributing precompiled xcframeworks, source packages and the generatedExpoModulesProviderinto the SwiftPM autolinking graph.[iOS] Bring the
Package.swiftthe SwiftPM autolinking plugin generates up to what CocoaPods already carries: a module's build settings, its declared iOS deployment floor and itsPrivacyInfo.xcprivacy, plusRCT_NEW_ARCH_ENABLEDfor theExpoObjCtarget. Modules the plugin cannot place are now reported with the reason and the fix, including one whosePackage.swiftdepends on a target the generated package cannot declare. The podspec reader no longer mistakes atest_spec's linkage for the module's own.Upgrade React Native to 0.88.0-rc.0.
[iOS] Forward Handoff preparation, update, and failure events to app delegate subscribers under the UIKit scene life cycle.
[Android] Request the
ACCESS_LOCAL_NETWORKpermission in debug builds on Android 17 before loading the app, so the dev server can be reached withoutexpo-dev-client.[iOS] Fix the SwiftPM autolinking plugin generating an
ExpoModulesProviderthat reports no app groups and registers no inline modules.[iOS] The SwiftPM autolinking plugin now contributes build-time script phases, so an Expo module that needs a build step under SwiftPM gets one — SwiftPM has no equivalent of CocoaPods'
script_phase. First consumer: expo-constants' embeddedapp.config.[Android] Enable R8 (
android.enableMinifyInReleaseBuilds=true) by default in the bare template.Bump to
@expo/metro@58.0.0-rc.0andmetro@0.87.1[iOS] Accept prebuilt-framework tarballs that bundle SwiftPM dependency XCFrameworks alongside the product in the SwiftPM plugin, instead of rejecting them.
[iOS] Emit JavaScript
urlevents for deep links delivered to a running app under the UIKit scene life cycle.[iOS] Import
FoundationinResponseSink, which relied on another file in the module importing it.[Web] Stub
requestAnimationFramein server bundles, wherereact-native-worklets0.12 calls it unguarded when Reanimated is imported, crashing server rendering andexpo export.[iOS] Include the SwiftPM manifest in the published npm package.
- 57.x
57.0.10 – 57.0.3021 releases without a noteShow each
- 57.0.3015 Oct 2026no note
- 57.0.2914 Oct 2026no note
- 57.0.2812 Oct 2026no note
- 57.0.276 Oct 2026no note
- 57.0.2629 Sep 2026no note
- 57.0.2524 Sep 2026no note
- 57.0.2418 Sep 2026no note
- 57.0.2315 Sep 2026no note
- 57.0.2211 Sep 2026no note
- 57.0.218 Sep 2026no note
- 57.0.204 Sep 2026no note
- 57.0.191 Sep 2026no note
- 57.0.1828 Aug 2026no note
- 57.0.1726 Aug 2026no note
- 57.0.1624 Aug 2026no note
- 57.0.1520 Aug 2026no note
- 57.0.1417 Aug 2026no note
- 57.0.1314 Aug 2026no note
- 57.0.1210 Aug 2026no note
- 57.0.116 Aug 2026no note
- 57.0.104 Aug 2026no note
57.0.9
29 Jul 2026This version does not introduce any user-facing changes.
57.0.8
22 Jul 2026[Android] Fixed expo-fetch race condition causing out-of-order delivery of initial chunks
57.0.0 – 57.0.78 releases without a noteShow each
- 57.0.717 Jul 2026no note
- 57.0.615 Jul 2026no note
- 57.0.515 Jul 2026no note
- 57.0.47 Jul 2026no note
- 57.0.37 Jul 2026no note
- 57.0.23 Jul 2026no note
- 57.0.130 Jun 2026no note
- 57.0.030 Jun 2026no note
- 56.x
56.0.22 – 56.0.232 releases without a noteShow each
- 56.0.2329 Sep 2026no note
- 56.0.2217 Sep 2026no note