NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #3778 most downloaded on npm
The core of Expo Modules architecture
Last release today
03 Oct 2026
Ships on a steady schedule
a new release about every 9 days
Most releases are documented
notes for 48 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
5 years old
456 releases · first in 2021
One column per quarter.
Fixed UnwrappedChildren not get the unwrapped content view for SwiftUI integration. (#36112 by @kudo)
_This version does not introduce any user-facing changes._
This version does not introduce any user-facing changes.
[Android] Migrate AppLoaderProvider to kotlin. (#36035 by @alanjhughes)
AppLoaderProvider to kotlin. (#36035 by @alanjhughes)_This version does not introduce any user-facing changes._
This version does not introduce any user-facing changes.
Nothing published for this version
Nothing published for this version
Deprecated EXAppDelegateWrapper in favor of ExpoAppDelegate. (#33348 by @tsapeta))
long values in arrays and maps (#35446 by @vonovak)UnwrappedChildren for nested SwiftUI views. (#34954 by @andrew-levy)SharedObjects from a Promise. (#34655 by @alanjhughes)AsyncFunction not working in the initial render of a View. (#35176 by @behenate)ConcurrentModificationException being thrown by JNIDeallocator.deallocate during the app reload. (#35322 by @lukmccall)overflow: hidden applied to each view by default. (#33261 by @lukmccall)UnimplementedExpoView in place of SwiftUI views when the New Architecture is not enabled. (#33901 by @tsapeta)BarCodeScannerInterface. (#34966 by @alanjhughes)RCTReactNativeFactory integration. (#35679 by @kudo)compileOnly to depend on the expo-modules-core when applying default dependencies. (#35822 by @lukmccall)UIView from SwiftUI integration. (#35553 by @kudo)Nothing published for this version
Nothing published for this version
Fixed kotlinx.coroutines.CancellableContinuationImpl.alreadyResumedError error on Android. (#35114 by @kudo)
[iOS] Support async functions by SwiftUI views (#34853 by @jakex7)
_This version does not introduce any user-facing changes._
This version does not introduce any user-facing changes.
[Android] Added support for Jetpack Compose views. (#33759 by @aleqsio)
AppContext is lost in nested converters. (#34373 by @lukmccall)Nothing published for this version
Nothing published for this version
Nothing published for this version
Allowed extending process.env types. (#34112 by @kudo)
_This version does not introduce any user-facing changes._
This version does not introduce any user-facing changes.
Ensure uuid.v4anduuid.v5 is available on old react native architecture. (#33621 by @andrejpavlovic)
uuid.v4anduuid.v5 is available on old react native architecture. (#33621 by @andrejpavlovic)import to import type for TS type declarations. (#33447 by @j-piasecki)_This version does not introduce any user-facing changes._
This version does not introduce any user-facing changes.
Added support for rendering children components in SwiftUI views. (#33271 by @tsapeta)
Nothing published for this version
[Android] Fixed issue with RNHeadlessAppLoader destroying the reactHost instance in the new architecture. (#33176 by @chrfalch)
[iOS] Fixed build error when using jsEngine=jsc. (#33130 by @kudo)
Introduced ReactNativeFeatureFlags compat to fix React Native 0.77 breaking changes. (#33077 by @kudo)
ts-jest. (#32954 by @kudo)findNodeHandle with a native ref instead of a class component instance to avoid expensive calls to findCurrentFiberUsingSlowPath. (#33016 by @tsapeta)ReactNativeFeatureFlags compat to fix React Native 0.77 breaking changes. (#33077 by @kudo)Fixed requests from expo/fetch being stuck on iOS. (#32894 by @kudo)
expo/fetch being stuck on iOS. (#32894 by @kudo)ByteArray from the Kotlin module results in string ID instead of Uint8Array. (#32945 by @lukmccall)[Android] Added executeTask method to TaskManagerUtilsInterface (#32849 by @chrfalch)
[Android] Added @DoNotStrip annotation to new Either types. (#32783 by @alanjhughes)
@DoNotStrip annotation to new Either types. (#32783 by @alanjhughes)[Android] Ensure that the headless app loader is started on the main thread. (#32705 by @chrfalch)
[iOS] Fixed broken self-signed connections from network inspector. (#32670 by @kudo)
[Android] Fix ClassCastException in headless app loader under the old architecture. (#32390 by @robertying)
ClassCastException in headless app loader under the old architecture. (#32390 by @robertying)Remove expo barcode scanner interface. (#32198 by @aleqsio)
[Android] Added shouldUseAndroidLayout flag to ExpoView. (#32446 by @lukmccall)
shouldUseAndroidLayout flag to ExpoView. (#32446 by @lukmccall)_This version does not introduce any user-facing changes._
This version does not introduce any user-facing changes.
Fixed updating props on SwiftUI views on the New Architecture. (#32381 by @tsapeta)
Added a new dynamic type dedicated for Either types. (#32328 by @tsapeta)
_This version does not introduce any user-facing changes._
This version does not introduce any user-facing changes.
[iOS] Fix optionals conversion. (#32239 by @aleqsio)
[iOS] Removed window synthesis in EXAppDelegateWrapper to fix crashes caused by deallocated RCTFabricSurface. (#32233 by @tsapeta)
Removed deprecated code for react-native 0.74.0. (#31740 by @kudo)
onUserLeaveHint. (#32033 by @behenate)startObserving and stopObserving on the web. (#28953 by @aleqsio)EventEmitter to the C++ implementation. (#28946 by @tsapeta)OnStartObserving and OnStopObserving can now be attached to a specific event. (#29012 by @lukmccall)SharedObject from functions. (#30426 by @lukmccall)customizeRootView in ExpoAppDelegateSubscriber. (#30550 by @alanjhughes)toJSON function on shared objects that includes dynamic properties defined in their prototype chain. (#30813 by @tsapeta)EitherTypeConverter now can work with the Dynamic class. (#31074 by @lukmccall)SharedRef converter now checks the inner ref type. (#31441 by @lukmccall)expo.SharedRef). (#31513 & #31706 by @lukmccall)onStartListeningToEvent and onStopListeningToEvent to the SharedObject. (#31385 by @lukmccall)nativeRefType to SharedRef. (#31776 by @lukmccall)kotlin.time.Duration support. (#31858 by @lukmccall)CMTime from CoreMedia a convertible type. (#31967 by @tsapeta)RNHeadlessAppLoader class for New Architecture support. (#32146 by @chrfalch)null to be null instead of undefined. (#31301 by @aleqsio)Enumerables did not correctly convert to JS values. (#30191 by @vonovak)uuid mock in jest-expo. (#29840 by @EvanBacon)getContext().getNativeModule(UIManagerModule.class) in Bridgeless. (#29203 by @arushikesarwani94)PersistentFileLogSpec.swift. (#28924 by @hakonk)Swift.Float. (#29053 by @behenate)getName of ModuleRegistryReadyNotifier.java (#30358 by @WoLewicki)SharedObject that was passed as an argument is returned, it no longer creates a new object. (#30231 by @lukmccall)expo.modules.kotlin.jni.tests.RuntimeHolder class not found crash when R8 is enabled. (#30572 by @kudo)Class declares 0 type parameters, but X were provided on Android when R8 is enabled. (#30659 by @lukmccall)CodedException.getCode() crash when R8 is enabled. (#31392 by @kudo)Either. (#31443 by @lukmccall)Missing class expo.modules.kotlin.types.ExperimentalJSTypeConverter$URIConverter. on macOS host. (#31452 by @kudo)No space left on device when saving persistent log. (#31583 by @RodolfoGS)AppContext instance. (#31897 by @lukmccall)registerAdditionalModuleClasses deadlock issue on old architecture mode. (#32209 by @kudo)Record and Field implementations (#31997 by @vonovak)process.env type. (#31267 by @EvanBacon)async extension for OkHttp requests. (#30841 by @aleqsio)sideEffects to use src folder. (#29964 by @EvanBacon)crypto object for UUID. (#29828 by @EvanBacon)process.env.EXPO_OS for Platform.OS and Platform.select, when available. (#29429 by @EvanBacon)EventEmitter) from expo-modules-core/types. (#28994 by @tsapeta)process object declaration to global declaration. (#29745 by @tsapeta)src folder as the Metro target. (#29702 by @tsapeta)pointer property in the SharedRef class to ref for parity with Android. (#30061 by @tsapeta)noexcept. (#30128 by @lukmccall)AppContext (#30098 by @lukmccall)URLSessionSessionDelegateProxy class. (#30173 by @kudo)Accept: text/event-stream header to bypass streaming requests from ExpoNetworkInspectOkHttpInterceptors. (#30219 by @kudo)@testing-library/react-hooks with @testing-library/react-native. (#30742 by @byCedric)RN_FABRIC_ENABLED flag with RCT_NEW_ARCH_ENABLED. (#31044 by @tsapeta)enumerated function. (#31226 by @tsapeta)func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) open. (#31398 by @abulenok)RuntimeContext.eval() as JavaScriptRuntime.eval() on iOS. (#31445 by @kudo)NativeModulesProxy occurrences. (#31496 by @reichhartd)@expo/dom-webview. (#31662 by @kudo)expo_patch_react_imports! and align more stardard react-native project layout. (#31700 by @kudo)Either type. (#31787 by @lukmccall)ExpoView recycling from the New Architecture. (#31841 by @tsapeta)SharedObject.deallocate to SharedObject.sharedObjectDidRelease. (#31921 by @lukmccall)SharedObject. (#31922 by @lukmccall)surfaceId. (#32227 by @lukmccall)Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →