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.
Nothing published for this version
Fix support for macOS. (#31307 by @gabrieldonadel)
_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.
[iOS] Fix getExternalPathPermissions returns no read/write permissions. (#30540 by @dispelpowerone)
Nothing published for this version
[iOS] Added customizeRootView: support to EXAppDelegateWrapper.createRCTRootViewFactory. (#30245 by @kudo)
Fixed RCTTriggerReloadCommandListeners not found build error on iOS. (#30014 by @kudo)
[Android] Reduce the number of global references to JSIContext. (#29936 by @lukmccall)
getPathPermissions permission error for local path with spaces on iOS 16 and older. (#29958 by @kudo)addUIBlock and executeUIBlock on New Architecture mode. (#30030 by @kudo)Fixed resource leakage from ExpoRequestInterceptorProtocol. (#29798 by @kudo)
Fixed reload crash on Android. (#29593 by @kudo)
null to Record sometimes didn't work as expected. (#29508 by @lukmccall)[Android] Fixed No implementation found for com.facebook.jni.HybridData expo.modules.kotlin.jni.JavaScriptModuleObject.initHybrid. (#29513 by @lukmcca
No implementation found for com.facebook.jni.HybridData expo.modules.kotlin.jni.JavaScriptModuleObject.initHybrid. (#29513 by @lukmccall)[iOS] Refactored ExpoFabricView and remove the view wrapper for each native component. (#28829 by @kudo)
_This version does not introduce any user-facing changes._
This version does not introduce any user-facing changes.
Fix expo-modules-core is broken on the server side. (#28764 by @alantoa)
Added onKeyDown and onKeyLongPress to ReactActivityHandler on Android. (#28684 by @lukmccall)
onKeyDown and onKeyLongPress to ReactActivityHandler on Android. (#28684 by @lukmccall)_This version does not introduce any user-facing changes._
This version does not introduce any user-facing changes.
Fixed building error when use_frameworks on new architecture. (#28451 by @kudo)
Introduced the reloadAppAsync to reload the app. (#28400 by @kudo)
[Android] Fix field operation on NULL object when reloading the app. (#28555 by @lukmccall)
field operation on NULL object when reloading the app. (#28555 by @lukmccall)_This version does not introduce any user-facing changes._
This version does not introduce any user-facing changes.
[Android] Fixed gziped payload does not correctly shown in network inspector. (#28486 by @kudo)
[Android] Fixes SEGFAULTs caused by std::shared_ptr ::__on_zero_shared. (#28483 by @lukmccall)
std::shared_ptr<JavaCalllback::CallbackContext>::__on_zero_shared. (#28483 by @lukmccall)_This version does not introduce any user-facing changes._
This version does not introduce any user-facing changes.
Fixed AppContext.onHostResume() sometimes getting null currentActivity on Android. (#28338 by @kudo)
Fixed breaking changes from React-Native 0.74. (#26357 by @kudo)
ReactNativeHostHandler.onRegisterJSIModules interface. (#26357 by @kudo)createWebModule function to wrap web functionality with the NativeModule class. (#27739 by @aleqsio)expo.SharedObject) with a simple mechanism to release native pointer from JS. (#27038 by @tsapeta & #27331 by @lukmccall)AnyExpoView (#27284 by @dominicstop)startObserving and stopObserving in the new EventEmitter class. (#27393 by @tsapeta)NativeModule class that inherits from EventEmitter. (#27510 by @tsapeta)OnStartObserving and OnStopObserving can now be attached to a specific event. (#27766 by @tsapeta)RCTHost is not retained on iOS bridgeless mode. (#27715 by @kudo)recreateRootViewWithBundleURL parameters. (#27989 by @gabrieldonadel)ExpoBridgeModule.installModules() is broken on Android and bridgeless mode. (#28065 by @kudo)expo::MethodMetadata::convertJSIArgsToJNI. (#28163 by @lukmccall)TypeError: Cannot read property 'NativeModule' of undefined exceptions on Android. (#28200 by @kudo)fallbackToCacheTimeout. (#28227 by @kudo)EXJavaScriptObject accesses to dangling pointers. (#28262 by @kudo)expo.modules.core.Promise. (#27471 by @aleqsio)global.ExpoModules. (#26027 by @tsapeta)ObjectDeallocator is now a native state instead of a host object. (#26906 by @tsapeta)SharedObjectRegistry being a singleton. (#27032 by @tsapeta)EXCreateReactBindingRootView to create correct React Native setup for New Architecture mode. (#27216 by @kudo)AppContext in ExpoBridgeModule. (#27378 by @alanjhughes)EXReactRootViewFactory.createDefaultReactRootView: to RCTAppDelegate.recreateRootViewWithBundleURL: category. (#27945 by @kudo)ReactNativeHostHandler.onReactInstanceException() for client to listen for exceptions on Android. (#27815 by @kudo)expo-font and nothing else depends on them. (#26380 by @tsapeta)onDidCreateDevSupportManager handler to support error recovery from expo-updates. (#28177 by @kudo)ExpoReactDelegateHandler.bundleURL for clients to override newer bundleURL. (#28256 by @kudo)Nothing published for this version
Nothing published for this version
Nothing published for this version
[Android] Ensured that onCreate before OnActivityEntersForeground event. (#26944 by @lukmccall)
onCreate before OnActivityEntersForeground event. (#26944 by @lukmccall)[Android] Thrown an exception when nested types can't be converted instead of crashing the app. (#27449 by @lukmccall)
Add timer capability to Logger. (#26454, #26477 by @wschurman)
PlatformColor and DynamicColorIOS color props. (#26724 by @dlindenkreuz)BarCodeScannerResult interface now declares an additional raw field corresponding to the barcode value as it was encoded in the barcode without parsing. Will always be undefined on iOS. (#25391 by @ajacquierbret)Fix proguard rules so Serializable types are not obfuscated. (#26545 by @alanjhughes)
Serializable types are not obfuscated. (#26545 by @alanjhughes)_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.
Replace deprecated com.facebook.react:react-native:+ Android dependency with com.facebook.react:react-android. (#26237 by @kudo)
Date type converter. (#26148 by @alanjhughes)Enumerable. (#26108 by @alanjhughes)_This version does not introduce any user-facing changes._
This version does not introduce any user-facing changes.
[iOS] Fixed SharedObjectRegistry crash for accessing internal data structures from multi-threads. (#25997 by @kudo)
[Android] Bump Kotlin version from 1.8.10 to 1.8.22. (#25945 by @lukmccall)
1.8.10 to 1.8.22. (#25945 by @lukmccall)[Android] Fixed OnCreate was called before the React instance was ready. (#25866 by @lukmccall)
OnCreate was called before the React instance was ready. (#25866 by @lukmccall)Marked NativeModulesProxy as deprecated in favor of requireNativeModule and requireOptionalNativeModule. (#25666 by @tsapeta)
Data <-> Uint8Array convertible on iOS. (#25726 by @kudo)ByteArray <-> Uint8Array convertible on Android. (#25727 by @kudo)JavaScriptFunction not working when the return type wasn't provided. (#25688 by @lukmccall)WRITE_SETTINGS rejecting promise even if the permission was granted. (#25732 by @lukmccall)FileSystemUtilities to replace legacy interfaces. (#25495 by @alanhughes)NativeModulesProxy as deprecated in favor of requireNativeModule and requireOptionalNativeModule. (#25666 by @tsapeta)Remove deprecated REACT_NATIVE_OVERRIDE_VERSION for React Native nightly testing. (#25151 by @kudo)
Android bump compileSdkVersion and targetSdkVersion to 34. (#24708 by @alanjhughes)preventModuleOverriding to ModuleRegistry.register method. (#24860 by @wschurman)CGFloat can now be used as an argument type. (#25140 by @tsapeta)Dropped support for Android SDK 21 and 22. (#24201 by @behenate)
CommonExceptions.ModuleNotFound. (#24898 by @lukmccall)Set<T> can now be passed as an argument to a module method. (#24897 by @lukmccall)null or undefined wasn't converted to JavaScriptValue. (#24899 by @lukmccall)Either converter not working with types that have common representation in JavaScript. (#24903 by @lukmccall)Any converter doesn't use ReadableMap or ReadableList anymore. Objects and arrays are converted to Kotlin's primitives. (#24963 by @lukmccall)Remove deprecated RCTDeviceEventEmitter. (#24298 by @EvanBacon)
RCTDeviceEventEmitter. (#24298 by @EvanBacon)deprecate utility function. (#24298 by @EvanBacon)SyntheticPlatformEmitter in favor of DeviceEventEmitter. (#24298 by @EvanBacon)NullPointerExceptions when calling Updates.reloadAsync on Android. (#24442 by @lukmccall)[Android] Surfaced errorManager to allow throwing errors and warnings from modules. (#23848 by @aleqsio)
Property component can now take the native shared object instance as the first argument. (#24206 by @lukmccall)requireOptionalNativeModule that returns null when the module cannot be found instead of throwing an error. (#24262 by @tsapeta)List and Map when converting from JS to native. (#23942 by @lukmccall)No space left on device when saving persistent log. (#24247 by @RodolfoGS)Android and iOS. (#24199 by @behenate)ReadableArguments class to allow backward compatibility with older modules. (#24137 by @lukmccall)SharedObjectTypeConverter now can work with the Dynamic class. (#24207 by @lukmccall)[iOS] Fixed custom fonts support on Fabric. (#23666 by @aleqsio)
getDelayLoadAppHandler() from expo-updates. (#23747 by @kudo)uuid@3.4.0 and move into expo-modules-core. Remove the original dependency. (#23249 by @alanhughes)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
Fixed the ErrorViewGroup cannot be cast to module view class exception on Android. (#23651 by @lukmccall)
ErrorViewGroup cannot be cast to module view class exception on Android. (#23651 by @lukmccall)Info.plist being ignored when no delegates requested a different orientation. (#23593 by @behenate)Fixed regressions and crashes in the dev client introduced by #23405. (#23491 by @kudo)
Fixed the Network Inspector cannot preview response body for response without the Content-Length header. (#23405 by @kudo)
Improved the OkHttp network inspector stability on Android. (#23350 by @kudo)
URL type that failed despite receiving a string that contained a valid URL. (#23331 by @alanhughes) (#23331 by @alanjhughes)Fix the View cannot be cast to ViewGroup exception on Android. (#23264 by @lukmccall)
View cannot be cast to ViewGroup exception on Android. (#23264 by @lukmccall)Supported other network CDP types like Image and Media rather than Fetch. (#23058 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.
[iOS] Added Interface Geometry Management section to ExpoAppDelegate. (#22599 by @behenate)
Your coding agent can read these notes before it upgrades. Set up the MCP server →