NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #3720 most downloaded on npm
The Expo CLI
Last release today
17 Sep 2026
Ships on a steady schedule
a new release about every 9 days
Some releases are documented
notes for 26 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
4 years old
515 releases · first in 2022
One column per quarter.
_This version does not introduce any user-facing changes._
This version does not introduce any user-facing changes.
Alias transformer.asyncRequireModulePath via Node resolution, when provided (#40584 by @kitten)
_This version does not introduce any user-facing changes._
This version does not introduce any user-facing changes.
Bump to @expo/metro@54.1.0 and metro@0.83.2 (#39826 by @kitten)
Allow specifying user-defined headers for all routes (#40173 by @hassankhan)
Update usage of @expo/server API (#39894 by @kitten)
Nothing published for this version
Nothing published for this version
Nothing published for this version
fix typo in CLI error message when expo-router is not installed. (#36608 by @abraj)
Added MCP tunnel integration. (#39392 by @kudo)
fix undefined logs being printed. (#39645 by @EvanBacon)
_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.
Nothing published for this version
Fix fallback resolution for modules that failed to hoist (inside expo or expo-router's child node_modules folder) (#39581 by @kitten)
_This version does not introduce any user-facing changes._
This version does not introduce any user-facing changes.
…to load full EXIF data for images. This is a breaking change for Android apps, as it might break the orientation of images in some cases. (#37957 by @…
expo-sqlite
expo-camera
expo-notifications
expo-media-library
expo-intent-launcher
expo-image-picker
uri to use blob URLs instead of base64 data URLs for better performance. The uri property will now be a blob URL instead of a base64 data URL, while the base64 property behavior remains unchanged. (#37447 by @hirbod)preferredAssetRepresentationMode is now .current instead of .automatic. This keeps the asset in its original container/codec (e.g. HEIC instead of JPEG) and is required for the new fast-path. Apps that relied on .automatic re-encoded output can pass preferredAssetRepresentationMode: '.automatic' to restore the old behaviour. (#37569 by @hirbod)expo-font
expo-file-system
expo-document-picker
unimodules-app-loader
expo-web-browser
expo-video-thumbnails
expo-task-manager
expo-sqlite
loadExtensionAsync / loadExtensionSync APIs and pre-bundled sqlite-vec extension. (#38693 by @kudo)expo-sqlite/localStorage/install for localStorage drop-in replacement API. (#38699 by @kudo)expo-speech
expo-screen-capture
useScreenshotListener hook. (#37411 by @hryhoriiK97)expo-modules-core
rgb color conversions. (#36914 by @alanjhughes)testID support to ExpoComposeView. (#38005 by @mateoguzmana)ValueOrUndefined. (#38620 by @lukmccall)ValueOrUndefined. (#39116 by @lukmccall)disableForceFlatten prop to control flattening of display contents views. (#39262 by @nishan) (#39262 by @intergalacticspacehighway)appContext.jsLogger. (#39159 by @behenate)expo-media-library
expo-localization
supportedLocales option to set app language from settings (#37232 by @alextoudic)expo-local-authentication
promptSubtitle and promptDescription parameters to authenticateAsync. (#35335 by @filipejuan)expo-image-manipulator
expo-intent-launcher
expo-image-picker
shape option to customize the shape of the crop zone (#38148) by @janicduplessis (#38148 by @janicduplessis)expo-font
expo-image-loader
expo-file-system
rename method for files and directories (#39138 by @kosmydel)idempotent option for creating directories (#39121 by @kosmydel)pickFileAsync support (#39173 by @kosmydel)pickDirectoryAsync support (#39210 by @kosmydel)expo-document-picker
expo-contacts
addContactsChangeListener() to detect contact changes with platform-specific behavior. . (#39434 by @hryhoriiK97)expo-calendar
expo-camera
expo-auth-session
rawResponse to TokenResponse, allows reading fields that are not part of RFC 6749. (#20284 by @stefan-schweiger)expo-asset
expo-task-manager
expo-sqlite
Statement.executeAsync. (#36674 by @kudo)SQLiteProvider with same options. (#37872 by @kudo):memory: path issue when building on Xcode 26. (#39511 by @kudo)expo-speech
expo-secure-store
expo-screen-orientation
Split View on iPad. (#36667 by @alanjhughes)createRootViewController from the ExpoReactNativeFactoryDelegate. (#36787 by @alanjhughes)expo-screen-capture
expo-print
expo-notifications
getLastNotificationResponseAsync does not return null when no response listener added (#36930 by @jmysliv)expo-notifications (#37833 by @chrfalch)setBadgeCountAsync(0) also cleared notifications (#39009 by @vonovak)TextInputNotificationResponse events (#39356 by @vonovak)setNotificationCategoryAsync (#39306 by @vonovak)expo-modules-core
extraMavenRepos not applied on Gradle subprojects. (#36500 by @lukmccall)getSharedObjectId for devices running android 7 and below. (#36698 by @lukmccall)XMLHttpRequest when network inspector is enabled. (#36715 by @kudo)createRootViewController from the ExpoReactNativeFactoryDelegate. (#36787 by @alanjhughes)Value is undefined, expected an Object in the JNIUtils::emitEventOnJSIObject. (#37778 by @lukmccall)ExpoRequestInterceptorProtocol to properly notify client about HTTP redirects. (#38078 by @kudo)RuntimeHolder bindings. (#38345 by @alanjhughes)SharedRef converter. (#39446 by @lukmccall)JNI detected error in application: obj == null in ExpoModulesHostObject::get. (#39523 by @lukmccall)expo-media-library
deleteAssetsAsync not working on android 11 or above (#33211 by @Zeeshan404)expo-location
shouldUseForegroundService being always true. (#35875 by @filipef101)expo-linking
createURL double-encodes URI parameters. (#36704 by @lukmccall)expo-mail-composer
expo-image-manipulator
expo-image-picker
expo-font
getLoadedFonts returns an empty array. (#36586 by @brentvatne)expo-gl
expo-file-system
UploadTask.uploadAsync method's return type did not indicate that the method could resolve to null. (#36476 by @DoctorJohn)textSync() to return string instead of Promise<string> (#38898 by @LeonDvlpmnt)expo-document-picker
expo-contacts
Contact.id required for updateContactAsync (#36603 by @NorseGaud)updateContactAsync() removing contact rawDates / birthday (#37054 by @NorseGaudCNContactViewController presentation (#39004 by @vonovak)instantMessageAddresses on iOS (#38985 by @hryhoriiK97)expo-constants
expo-calendar
expo-camera
PictureRef objects.(#37393 by @alanjhughes)launchScanner. (#38322 by @alanjhughes)videoQuality and pictureSize affecting modes they don't apply too. (#38757 by @alanjhughes)onDetachedFromWindow. (#39119 by @alanjhughes)expo-blur
expo-background-fetch
expo-av
expo-auth-session
expo-asset
expo-video-thumbnails
expo-task-manager
expo-sqlite
kv-store. (#36669 by @kudo)maybeFinalizeAllStatements throwing exceptions. (#36843 by @kudo)loadExtensionAsync() and loadExtensionSync(). (#38905 by @kudo)expo-speech
expo-sharing
expo-secure-store
expo-sensors
expo-screen-capture
expo-print
expo-notifications
typescript@5.9 (#38833 by @kitten)expo-modules-core
@expo/ui/swift-ui-primitives integrations. (#36937 by @kudo)ExpoComposeView to support virtual view. (#36255 by @kudo)react and react-native (#38528 by @kitten)Constants in favor of Constant and Property. (#38748 by @jakex7)ExpoGlobal with namespace and to preserve type+value overlay on re-exported core globals (#38649 by @kitten)JavaScriptValue and added props.globalEventDispatcher for expo-ui. (#38542 by @kudo)appContext to ExpoSwiftUI.ViewProps. (#39231 by @kudo)requireOptionalNativeModule will now catch errors which occur while requiring a module. (#39290 by @behenate)Color convertible support without passing AppContext. (#39183 by @aleqsio)FileSystemUtilities (#39210 by @kosmydel)kotlin.reflect.full.*. (#39385 by @lukmccall)expo-media-library
expo-local-authentication
expo-keep-awake
expo-location
expo-linking
useURL in favor of useLinkingURL. (#37005 by @aleqsio)expo-image-manipulator
expo-image-picker
quality: 1, allowsEditing: false and preferredAssetRepresentationMode: .current (new default) (#37569 by @hirbod)VideoExportPreset.Passthrough are no longer transcoded and are copied only once. (#37569 by @hirbod)expo-font
expo-gl
react-dom and react-native-reanimated peer dependencies (#38569 by @kitten)findDOMNode usage. (#38800 by @alanjhughes)expo-file-system
expo-document-picker
expo-device
expo-clipboard
expo-contacts
FileSystemUtilities (#39210 by @kosmydel)expo-cellular
expo-constants
expo-camera
createCamera a suspend function. (#37038 by @alanjhughes)typescript@5.9 (#38833 by @kitten)expo-battery
expo-background-fetch
expo-av
expo-auth-session
expo-asset
expo-application
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
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
Fix Expo Go docs link in ExpoGoInstaller (#39394 by @amandeepmittal)
setHeader error in Metro middleware (#39285 by @HMYang33)[web] add matcher support for server middleware (#39225 by @hassankhan)
Fix unnecessary version warning when running prebuild for prerelease versions. (#39298 by @behenate)
_This version does not introduce any user-facing changes._
This version does not introduce any user-facing changes.
Nothing published for this version
Bump to @react-native/dev-middleware@0.81.1 (#39206 by @kitten)
Remove unused @babel/runtime dependency from CLI (#39040 by @kitten)
Nothing published for this version
Prevent EXPO_USE_FAST_RESOLVER from being force enabled for other experiments (#39073 by @kitten)
Replace EXPO_USE_STICKY_RESOLVER with experiments.autolinkingModuleResolution in app config (#39044 by @kitten)
Apply supervisor transformer that wraps a user-configured custom transformer. This annotates initialization errors and enforces a single Metro version
Your coding agent can read these notes before it upgrades. Set up the MCP server →