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.
Updated robolectric to 4.10 and junit to 4.13.2. (#22395 by @josephyanks)
robolectric to 4.10 and junit to 4.13.2. (#22395 by @josephyanks)ReactActivityHandler.getDelayLoadAppHandler interface on Android. (#20273 by @kudo)Color converter doesn't work on devices with SDK version below 26. (#22191 by @lukmccall)Fixed passing JavaScriptObject argument and view props. (#22427 by @lukmccall)
JavaScriptObject argument and view props. (#22427 by @lukmccall)Made JavaScriptValue.kind public. (#22386 by @lukmccall)
JavaScriptValue.kind public. (#22386 by @lukmccall)[iOS] Introduced native functions on the native component instances. (#21746 by @tsapeta)
fallbackCallback optional in the registerForActivityResult method. (#21661 by @lukmccall)jsi::WeakObject for weak objects on Hermes. (#21986 by @tsapeta)proxiedProperties prop. (#22280 by @tsapeta)[Android] Improve the initial loading speed of the native view. (#22153 by @lukmccall)
[Android] Fixed ReadableNativeMap cannot be cast to the Record. (#21773 by @lukmccall)
ReadableNativeMap cannot be cast to the Record. (#21773 by @lukmccall)[Android] Fixed coroutine functions crashing when invoked with more than 1 argument. (#21635 by @lukmccall)
URL object. (#21569 by @tsapeta)[iOS] Fixed jsc import when using use_frameworks (#21479 by @gabrieldonadel)
[iOS] Fixed URI with encoded # getting cut off. (#21326 by @lukmccall)
# getting cut off. (#21326 by @lukmccall)[iOS] Fixed convertible implementation for URL type to support unencoded UTF8 urls and file paths. (#21139 by @tsapeta)
Fix crash when reloading app while expo-av video is playing. (#21118 by @janicduplessis)
View-related DSL functions do not require providing the view's type in function parameters on Android. (#20751 by @lukmccall)
Long type as function parameters on Android. (#20787 by @lukmccall)null or undefined. (#20755 & #20766 by @tsapeta & @lukmccall)compileSdkVersion and targetSdkVersion to 33. (#20721 by @lukmccall)Added support for concurrent (async/await) functions in Swift. (#20645 by @tsapeta)
Added TS definitions for TypedArray and additional union types for Int, Uint and Float TypedArrays. (#20257 by @aleqsio)
TypedArray and additional union types for Int, Uint and Float TypedArrays. (#20257 by @aleqsio)executeOnJavaScriptThread method to appContext to allow for running code blocks on the JS thread. (#20161 by @aleqsio)Exceptions.MissingActivity on Android. (#20174 by @lukmccall)Events component can now be initialized with an array of event names (not only variadic arguments). (#20590 by @tsapeta)Property component can now take the native shared object instance as the first argument. (#20608 by @tsapeta)Property's owner properties using Swift key paths. (#20610 by @tsapeta)ViewDefinitionBuilder crashes when ProGuard or R8 is enabled on Android. (#20197 by @lukmccall)SharedObject initializer being inaccessible due to internal protection level. (#20588 by @tsapeta)Fixed views are not correctly initialized after reloading on Android. (#20063 by @lukmccall)
Nothing published for this version
Rephrased the message of ArgumentCastException to use ordinal numbers. (#19912 by @tsapeta)
Added a list of the acceptable enum values to the conversion error on Android. (#19895 by @lukmccall)
new NativeEventEmitter() was called with a non-null argument without the required addListener method. warnings on Android with JSC. (#19920 by @kudo)_This version does not introduce any user-facing changes._
This version does not introduce any user-facing changes.
Fixed build errors when testing on React Native nightly builds. (#19369 by @kudo)
Added AppContext.hasActiveReactInstance on Android. (#19723 by @lukmccall)
AppContext.hasActiveReactInstance on Android. (#19723 by @lukmccall)Fixed new NativeEventEmitter() was called with a non-null argument without the required addListener method. warnings on Android. (#19704 by @kudo, @ku
Fixed ~CallbackWrapper() dangling pointer crashes when reloading the app on Android. (#19699 by @kudo, @kudo)
Deprecated ConvertibleArgument in favor of Convertible and EnumArgument in favor of Enumerable. (#19612 by @tsapeta)
expo.modules.kotlin.types.Enumerable on Android. (#19551 by @lukmccall)AppContext.currentActivity is not longer returning AppCompatActivity, but an instance of android.app.Activity class. (#19573 by @lukmccall)ConvertibleArgument in favor of Convertible and EnumArgument in favor of Enumerable. (#19612 by @tsapeta)OnViewDidUpdateProps definition component). (#19549 by @tsapeta)CodedError instead of a plain object. (#19605 by @tsapeta)Bumped iOS deployment target to 13.0 and deprecated support for iOS 12. (#18873 by @tsapeta)
coalescingKey in callback on Android. (#18774 by @lukmccall)self on iOS. (#18831 by @tsapeta)UIColor and CGColor convertibles on iOS. (#18845 by @tsapeta)Prop setter closure. (#19004 by @tsapeta)REACT_NATIVE_DOWNLOADS_DIR environment variable to specify custom third party libraries download location. (#19015 by @kudo)android.graphics.Color class as the function parameter. (#19054 by @lukmccall)android.net.Uri, java.io.File, java.net.URI and java.nio.file.Path classes as function parameters. (#19169 by @lukmccall)RegisterActivityContracts component to register all of activity result contracts on Android. (#19180 by @lukmccall)cacheDirectory and persistentFilesDirectory to AppContext on Android to fix cache directories being incorrect in new Sweet API modules. It uses a new AppDirectoriesModule to get correct scoped directories from old module API. (#19205 by @aleqsio)2 files found with path 'lib/arm64-v8a/libfbjni.so' error on Android. (#18607 by @lukmccall)JSCRuntime destroyed with a dangling API object on Android. (#19487 by @lukmccall)EmulatorUtilities. (#16177) by @kbrandwijk, @keith-kurak)global.expo.modules instead of global.ExpoModules. (#19273 & #19281 by @tsapeta, @lukmccall)Nothing published for this version
Nothing published for this version
Nothing published for this version
Fixed ModuleRegistry initialized twice when startup on Android. (#19384 by @kudo and @lukmccall)
ModuleRegistry initialized twice when startup on Android. (#19384 by @kudo and @lukmccall)AppContext.onHostDestroy call. (#19406 by @kudo)Give precedence to UIBackgroundFetchResult.newData over .failed in proxied ExpoAppDelegate.swift completion handlers. (#19311 by @ferologics)
UIBackgroundFetchResult.newData over .failed in proxied ExpoAppDelegate.swift completion handlers. (#19311 by @ferologics)Removed the hard dependency to Hermes or JSC in _libexpo-modules-core.so_ on Android and fixed the broken support for react-native-v8. (#18899 by @kud
Fix issue with Android builds when gradle clean and build were called concurrently. (#18518 by EdwardDrapkin)
FabricUIManager errors when turning on new architecture mode on Android. (#18472 by @kudo)Changed access levels in the Logger and fixed the timer to log milliseconds instead of seconds. (#18271 by @douglowder)
Fix dangling pointer in the fbjni from the MethodMetadata::createPromiseBody on Android. (#18206 by @lukmccall)
Fixed a crash when remote debugging is enabled on Android. (#18165 by @kudo)
Create AppContext.registerForActivityResult mechanism similar to `ComponentActivity.registerForActivityResult`). (#17572, (#17987 by @bbarthec)
Add proxy methods for Permissions module accepting expo.modules.kotlin.Promise on Android. (#17668 by @bbarthec)
Permissions module accepting expo.modules.kotlin.Promise on Android. (#17668 by @bbarthec)CurrentActivityProvider on Android. (#17571 by @bbarthec)AppContextProvider on Android. (#17546 by @bbarthec)Nothing published for this version
Nothing published for this version
Renamed all definition components to start with the uppercase letter. The old names will be removed in the next minor release. (#17153 by @lukmccall,
ReactNativeHostHandler.getUseDeveloperSupport() to allow expo-dev-launcher to override this value at runtime. (#17069 by @esamelson)Deprecated current behavior of function module definition component in favor of asyncFunction to emphasize that it's being executed asynchronously in…
function module definition component in favor of asyncFunction to emphasize that it's being executed asynchronously in JavaScript. In the future release function will become synchronous. (#16630 by @tsapeta, #16656 by @lukmccall)compileSdkVersion to 31, targetSdkVersion to 31 and Java version to 11. (#16941 by @bbarthec)getDevSupportManagerFactory support to ReactNativeHostHandler. (#16434 by @lukmccall)expo-dev-client on Android. (#16441 by @esamelson)ViewPropTypes from React Native. (#16207 by @tsapeta)ReactNativeHostHandler.getJavaScriptExecutorFactory() for a module to override the JavaScriptExecutorFactory. (#17005 by @kudo)Fatal error: Expo modules provider must implement "ModulesProviderProtocol" runtime error in XCTest targets and SwiftUI Preview. (#16733 by @kudo)Allow accessing RCTBridge from the modules on iOS. (#15816 by @tsapeta)
RCTBridge from the modules on iOS. (#15816 by @tsapeta)ModuleDefinition will use class name if the name component wasn't provided in Sweet API on Android. (#15738 by @lukmccall)onViewDestroys component to the ViewManager in Sweet API on Android. (#15740 by @lukmccall)constants component that takes vargs Pair<String, Any?> as an argument in Sweet API on Android. (#15742 by @lukmccall)requireNativeModule function to replace accessing native modules from NativeModulesProxy. (#15848 by @tsapeta)NativeModulesProxy on iOS. (#15847 by @tsapeta)Fix Plugin with id 'maven' not found build error from Android Gradle 7. (#16080 by @kudo)
Fix ReactInstanceManager.onHostPause exception from moving Android apps to background. (#15748 by @kudo)
Fixed the deep link wasn't passed to the application if the application wasn't running when the deep link was sent. (#15593 by @lukmccall)
Add onNewIntent and onBackPressed support to ReactActivityLifecycleListener. (#15550 by @Kudo)
_This version does not introduce any user-facing changes._
This version does not introduce any user-facing changes.
Made Foundation.URL a convertible type to consistently normalize file paths to file URLs. (#15278 by @tsapeta)
Foundation.URL a convertible type to consistently normalize file paths to file URLs. (#15278 by @tsapeta)ReactNativeHostHandler.onDidCreateReactInstanceManager on Android. (#15221 by @esamelson)onCreate definition component should be used instead. (#15262 by @tsapeta)Method calls on iOS now can go through the JSI instead of the bridge (opt-in feature). (#14626 by @tsapeta)
AppDelegateWrapper is now written in Swift and is independent of the singleton modules. (#14867 by @tsapeta)ReactActivityHandler and support createReactRootView hook. (#14883 by @kudo)Nothing published for this version
Nothing published for this version
Nothing published for this version
Fix iOS app freezing in remote debugging mode. (#14922 by @kudo)
_This version does not introduce any user-facing changes._
This version does not introduce any user-facing changes.
_This version does not introduce any user-facing changes._
This version does not introduce any user-facing changes.
Fix UIManager has not setter or ivar error when reloading app. (#14741 by @kudo)
_This version does not introduce any user-facing changes._
This version does not introduce any user-facing changes.
_This version does not introduce any user-facing changes._
This version does not introduce any user-facing changes.
Removed accidentally published prebuilt binaries on iOS.
Fix imports that affect versioned code inside of Expo Go. (#14436 by @cruzach)
Your coding agent can read these notes before it upgrades. Set up the MCP server →