- upgrade RN to 0.78 (#35050 by @vonovak)
- Remove a few long-deprecated typescript types. (#34215 by @wschurman)
- Add new state machine context about startup procedure. (#32433 by @wschurman)
- Support brownfield apps with EX_UPDATES_CUSTOM_INIT flag. (#35391 by @douglowder)
- [android] Use more robust mechanism for determining empty multipart bodies. (#33977 by @wschurman)
- fix E2E tests in Detox debug build (#32951 by @matejkriz)
- Fix runtime version validation warning (#35188 by @gabrieldonadel)
- [Android] Made ReactNativeFeatureFlags a parameter to the constructor of the ErrorRecovery class to be able to make tests pass (#34363 by @chrfalch)
- [iOS] Inject logger from controllers down to dependent objects. (#34035 by @wschurman)
- [apple] Migrate remaining
expo-module.config.json
to unified platform syntax. (#34445 by @reichhartd) - Fixed build error on iOS Expo Go. (#34485 by @kudo)
- Fixed Android unit test errors in BuilDataTest. (#34510 by @kudo)
- [Android] Started using expo modules gradle plugin. (#34806 by @lukmccall)
- Drop
fs-extra
in favor offs
. (#35036 by @kitten) - Drop
fast-glob
in favor ofglob
. (#35082 by @kitten) - Drop
fbemitter
in favor of custom emitter. (#35317 by @kitten)
- Pass through the package version to config plugin sync utilities (#35372 by @brentvatne)
- Add update id headers to asset requests (#34453 by @gabrieldonadel)
- Add
Updates.setUpdateURLAndRequestHeadersOverride()
to allow overriding update URL configuration from the JS API. (#34422, #34423, #34425, #34426, #34454, #34455, #34428, #34404 by @kudo, @wschurman)
- [Android] Fix
bytesToHex
ArrayIndexOutOfBoundsException
during conversion. (#34855 by @gabrieldonadel)
This version does not introduce any user-facing changes.
- Fix issue where syncing codesigning config for bare projects would clobber existing Expo.plist config (#34597 by @brentvatne)
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 an issue where
launchFallbackUpdateFromDisk
is called from a foreground thread leading to ANRs. (#33693 by @alanjhughes)
- Fix black screen appearing instead of the splashscreen on launch. (#33432 by @alanjhughes)
- Introduced
ReactNativeFeatureFlags
compat to fix React Native 0.77 breaking changes. (#33077 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.
- Improve web native module interface completeness (#32512 by @wschurman)
This version does not introduce any user-facing changes.
- Move event emitting responsibility to module. (#32248 by @wschurman)
- Use enum event in OnStartObserving and OnStopObserving. (#32252 by @wschurman)
- Automatically write an
app.json
when attempting to modify a config and no file exists. (#30026 by @EvanBacon) - Add launchDuration constant (#31805 by @wschurman)
- Fix expo update getting disabled in custom debug configurations. (#30159 by @matinzd)
- Fix data race in
AppLauncherWithDatabaseMock.swift
. (#28924 by @hakonk) - Add missing
react
peer dependencies for isolated modules. (#30488 by @byCedric) - Use relative entry point from
@expo/config/paths
with support for server root. (#30633 by @byCedric) - [iOS] Rollback to system SQLite3 and fix incompatible issue when any third-party library uses iOS system SQLite3. (#30826 by @kudo)
- Use expo-updates as source of truth for runtime version in dev client (#31453 by @wschurman)
- Fixed iOS reload crash on New Architecture mode. (#31789 by @kudo)
- [cli] Disable console during runtime and fingeprint evaluation (#31874 by @wschurman)
- Refactor state machine event emitting and initial state (#31819 by @wschurman)
- Re-emit state on every observer observe event (#32103 by @wschurman)
- Removed redundant usage of
EventEmitter
instance. (#28946 by @tsapeta) - [Android] Change from kapt to ksp for room. (#29055 by @wschurman)
- [Android] Upgrade dependencies and remove unused ones. Change multipart parser to okhttp. (#29060 by @wschurman)
- [Android] Use protected methods in room dao now that ksp allows it. (#29080 by @wschurman)
- Bumped Kotlin version to 1.9.24. (#30199 by @gabrieldonadel)
- Move location of assetPatternsToBeBundled config key (#31584 by @wschurman)
- Refactor JS event queueing and emitting ([#31818](#31818, #31854 by @wschurman)
- Remove clearUpdateCacheExperimentalAsync (#31871 by @wschurman)
- Refactor errors, context injection, and error logs (#31929, #31951, #31953, #32009, #32159 by @wschurman)
- Added support for React Native 0.75.x. (#30034, #30828 by @gabrieldonadel)
- [ios] Store strong references to long-lived objects created in procedures (#31599 by @wschurman)
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.
This version does not introduce any user-facing changes.
- Improved stability of E2E testing. (#29402 by @kudo)
- Improved JS event performance on Android and stability of E2E testing. (#29593 by @kudo)
This version does not introduce any user-facing changes.
- Fixed launch crash when using fingerprint runtime version policy on Android with expo-dev-client. (#28912 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.
- Fixed loading error when both
expo-dev-client
andexpo-updates
installed but noruntimeVersion
configured. (#28662 by @kudo)
This version does not introduce any user-facing changes.
- Suppressed
Error: Cannot find module 'expo-dev-client/package.json'
frompod install
on iOS. (#28611 by @kudo)
- Fixed Gradle Plugin build error when no specified
entryFile
in android/app/build.gradle. (#28546 by @kudo)
- Android: Fix hard crash due to missing asset edge row. (#28264 by @douglowder)
This version does not introduce any user-facing changes.
- Fix CLI VCS detection in CLI and add workflow override ability. (#28403 by @wschurman)
This version does not introduce any user-facing changes.
This version does not introduce any user-facing changes.
- Add --debug option to fingerprint:generate command. (#28311 by @wschurman)
- Bumped the underlying SQLite version to 3.45.3 on iOS. (#28358 by @kudo)
- Fixed error recovery E2E test on iOS. (#28372 by @kudo)
- Deprecated
UpdatesController.initialize(Context, Map)
and replaced withUpdatesController.overrideConfiguration()
method to prevent ANR when overriding theUpdatesConfiguration
on Android. #26093 by @kudo) - Remove deprecated APIs: useUpdateEvents(), addListener(), and UpdateEvent type. (#27882 by @douglowder)
- Remove the support for configurable
expo.modules.updates.AUTO_SETUP
in AndroidManifest.xml andEXUpdatesAutoSetup
in Expo.plist. (#27996 by @kudo) - Update fingerprintExperimental -> fingerprint runtime version policy. (#28220 by @wschurman)
- Add more failure logs in asset download. (#26268 by @wschurman)
- Add timer capability to Logger. (#26454, #26477 by @wschurman)
- Fix fingerprint runtime version policy. Calculate fingerprint at build time. (#26901 by @wschurman)
- Add expo-updates cli fingerprint:generate command. (#27119 by @wschurman)
- Add expo-updates cli runtimeversion:resolve command. (#27263 by @wschurman)
- Add expo-updates cli configuration:syncnative command. (#27511 by @wschurman)
- Add --version top-level flag and also add handler for missing command in expo-update cli. (#27296 by @wschurman)
- Add more debug information to runtimeversion:resolve CLI output. (#27323, #27387 by @wschurman)
- Added React Native New Architecture support. (#27216 by @kudo)
- Add ability to override build-time fingerprint. (#27597 by @wschurman)
- Expose emergency launch reason on constants. (#27714 by @wschurman)
- Add header to manifest request containing recently-errored update IDs. (#27991 by @wschurman)
- Fix development status for modern updates. (#26042 by @wschurman)
- [Android] Fix case where launch wait ms timeout is greater than okhttp default timeout. (#26731 by @wschurman)
- Make error messages consistent across platforms for dev client and disabled controllers. (#26988 by @wschurman)
- Fixed ANR issue from Detox testing on Android. (#27031 by @kudo)
- Fix inconsistent hashes for autolinking for fingerprint policy. (#27390 by @wschurman)
- Fixed launch crash when running on a project without expo-dev-client and debug build. (#27780 by @kudo)
- Fixed bridgeless error recovery support for launch errors on Android. (#27815 by @kudo)
- Fixed error recovery on Android. (#28177 by @kudo)
- Fixed
Updates.reloadAsync()
not working on iOS. (#28256 by @kudo)
- drop unused web
name
property. (#27437 by @EvanBacon) - [ios] Remove unnecessary delegate from FileDownloader. (#25783 by @wschurman)
- Migrate to requireNativeModule/requireOptionalNativeModule. (#25648 by @wschurman)
- Remove classic updates. (#26036, #26037, #26048, #26059, #26061, #26065, #26080, #26230 by @wschurman)
- [Android] Remove try/catch in expo-updates module constants block. (#26228 by @wschurman)
- Rename native classes. (#26234, #26235 by @wschurman)
- Remove support for multiple runtime versions. (#26258 by @wschurman)
- Improve updates types and clarity in expo-asset. (#26337 by @wschurman)
- Convert manifest creation scripts to typescript. (#27082 by @wschurman)
- Move cli and utils subpackages to new expo-module-scripts system. (#27083 by @wschurman)
- Remove legacy expo bundle-assets utilities. (#27123 by @wschurman)
- [iOS] Added bridgeless support on ExpoReactDelegate. (#27601, #27689 by @kudo)
- [Android] Added bridgeless support on ReactNativeHostHandler. (#27629 by @kudo)
- Refactored out
EXReactRootViewFactory.createDefaultReactRootView:
toRCTAppDelegate.recreateRootViewWithBundleURL:
category. (#27945 by @kudo) - Migrated expo-updates-interface to Kotlin. (#28033 by @kudo)
- Removed deprecated backward compatible Gradle settings. (#28083 by @kudo)
- Bumped Kotlin version to 1.9.23. (#28088 by @kudo)
- Always initialize UpdatesController to prevent accidentally accessing the singleton instance. (#27996 by @kudo)
- Improve error printing in CLI. (#28188 by @wschurman)
- [iOS] Moved expo-dev-client + expo-updates interop setup out from
application:willFinishLaunchingWithOptions:
. (#27477 by @kudo)
This version does not introduce any user-facing changes.
- Add assets:verify command to CLI. (#26756 by @douglowder)
- Fix assets:verify command for images with multiple scales. (#26940 by @douglowder)
- [Android] correct drawable types in updates embedded manifest. (#26676 by @douglowder)
This version does not introduce any user-facing changes.
- Fix metro asset call in embedded manifest creation step. (#26307 by @wschurman)
- [expo-updates] dev launcher updates controller should not read embedded manifest. (#26336 by @douglowder)
- Replace deprecated
com.facebook.react:react-native:+
Android dependency withcom.facebook.react:react-android
. (#26237 by @kudo)
This version does not introduce any user-facing changes.
- Add relaunch to disabled and dev client controllers. (#25973 by @wschurman)
This version does not introduce any user-facing changes.
- [Android] overwrite duplicates when copying assets. (#25898 by @douglowder)
- [Android] overwrite duplicates when copying assets. (#25898 by @douglowder)
This version does not introduce any user-facing changes.
- Add state machine procedure serial runner. (#25386, #25431 by @wschurman)
- [Android] Asset exclusion on Android part 2. (#25504 by @douglowder)
- Added support for React Native 0.73.0. (#24971, #25453 by @gabrieldonadel)
- [Android] Fix interaction between reload JS API and ErrorRecovery. (#25651 by @wschurman)
- [Android] Fix wait notify bug in launch asset when enabled. (#25676 by @wschurman)
- Update E2E tests to use local copies of
@expo/metro-config
,@expo/env
,@expo/config
. (#25430 by @EvanBacon) - Add e2e tests for disabled mode. (#25301 by @wschurman)
- Modify E2E manual test for asset exclusion. (#25406 by @douglowder)
- Move tvOS compile test out of updates E2E test matrix. (#25438 by @douglowder)
- Assert valid state transitions in debug. (#25474 by @wschurman)
- Improve JS API error messages and documentation for Expo Go and Dev Client. (#25751 by @wschurman)
- Warn when expo-updates starts in disabled mode. (#25793 by @wschurman)
- Bumped iOS deployment target to 13.4. (#25063 by @gabrieldonadel)
- Split updates controllers depending on configuration, changing native public API. (#25085, #25192 by @wschurman)
- On
Android
bumpcompileSdkVersion
andtargetSdkVersion
to34
. (#24708 by @alanjhughes)
- [iOS] Make asset exclusion work. (#25216 by @douglowder)
- [Android] Asset exclusion on Android part 1. (#25277 by @douglowder)
- [iOS] Fix the E2E tests. (#24865 by @douglowder)
- [Android] Simplify UpdatesUtils.parseDateString, fix UpdatesLoggingTest. (#24951 by @douglowder)
- [iOS] Fix expo-localization tvOS compile, add CI. (#25082 by @douglowder)
- Fix instrumentation tests. (#25367 by @wschurman)
- Android: Stub expo-updates in Expo Go and remove service pattern. (#24890 by @wschurman)
- iOS: Refactor responsibility of app controller. (#24934, #24949 by @wschurman)
- Android: Refactor responsibility of app controller. (#24954, #24975, #25043 by @wschurman)
- Android: Backport ExpoGoUpdatesModule to SDK 49. (#24974 by @wschurman)
- Remove unused
storedUpdateIdsWithConfiguration
method. (#25194 by @wschurman) - Remove ability for embedded manifests to be legacy manifests. (#25195 by @wschurman)
- Convert e2e setup scripts to typescript. (#25271 by @wschurman)
- Deprecated
useUpdateEvents()
andaddListener()
in favor of the newuseUpdates()
API. (#25345 by @douglowder)
- [Android] Simplify UpdatesUtils.parseDateString, fix UpdatesLoggingTest. (#24951 by @douglowder)
- Add missing export in checkForUpdateAsync result. (by @douglowder) (#24503 by @douglowder)
- [Android] embedded loader should load images at all scales. (#24549 by @douglowder)
- Transpile for Node 18 (LTS). (#24471 by @EvanBacon)
- iOS: Stub expo-updates in Expo Go and remove service pattern. (#24860 by @wschurman)
- Add missing export in checkForUpdateAsync result. (by @douglowder) (#24503 by @douglowder)
- [Android] embedded loader should load images at all scales. (#24549 by @douglowder)
This version does not introduce any user-facing changes.
This version does not introduce any user-facing changes.
- [iOS] remove force unwrap in download handler. (#24299 by @douglowder)
- Fix updates enabled defaulting on iOS. (#24327 by @wschurman)
- [Android] Make scopekey only required when getting database entity. (#24466 by @wschurman)
- Added support for Apple tvOS. (#24329 by @douglowder)
- Fix updates enabled defaulting on iOS. (#24327 by @wschurman)
- [Android] Make scopekey only required when getting database entity. (#24466 by @wschurman)
- Update E2E test. (#24272 by @EvanBacon)
- [iOS] Disable packager and bundle JS when
EX_UPDATES_NATIVE_DEBUG
set. (#24366 by @douglowder) - Add Apple TV to Updates E2E (build only). (#24411 by @douglowder)
- Add
sqlite3
to the podspec to use newer version that the built in. (#24375 by @alanjhughes)
- Change source of truth for constants types. (#24049 by @wschurman)
- Remove classic manifest types and classic updates. (#24053, #24066 by @wschurman)
- Dropped support for Android SDK 21 and 22. (#24201 by @behenate)
- Added support for React Native 0.73. (#24018 by @kudo)
- Add rollback support to useUpdates(). (#24071 by @douglowder)
- [Android] completely fix
node
execution on Windows (#24116 by @weykon) - [Android] Fixed the
node
execution on Windows. (#23983 by @kudo) - Bare update manifest non-nullability parity. (#23166 by @wschurman)
- Support importing assets from out of the project root when working in monorepos. (#24090 by @EvanBacon)
- Prevent failed updates from passing checkForUpdateAsync(). (#24112 by @douglowder)
- Update API documentation to clarify
channel
behavior in Expo Go/ development builds. (#23783 by @keith-kurak)
- New useUpdates() JS API. (#23532 by @douglowder)
- [Android] Fix rollback embedded update logic. (#23244 by @wschurman)
- Correctly handle roll backs in JS module methods. (#23356, #23377 by @wschurman)
- [iOS] Fix unmatched selection policy. (#23535 by @chochihim)
- Handle initialization errors in useUpdates(). (#23640 by @douglowder)
- [iOS] Fix error handling on iOS during startup check for updates. (#23663 by @douglowder)
- Last check dateTime should come from native. (#23692 by @douglowder)
- Native getter for state machine context. (#23428 by @douglowder)
- [iOS] Fix template for EX_UPDATES_NATIVE_DEBUG. (#23602 by @douglowder)
- [Android] EX_UPDATES_ANDROID_DELAY_LOAD_APP settable by env. (#23479 by @douglowder)
- [CLI] Add missing chalk dependency for the
expo-updates
cli. (#23429 by @byCedric) - [CLI] Drop
fs-extra
in favor offs
. (#23431 by @byCedric)
- [ios] Allow nil scopeKey for bare/embedded updates. (#23385 by @wschurman)
This version does not introduce any user-facing changes.
- Fix expo-extra-params header. (#23206 by @wschurman)
- [iOS] Fix response header casing bug. (#23234 by @wschurman)
- Fix tsconfig paths and other SDK 49 Metro features. (#23276 by @EvanBacon)
- Support discriminated unions for JS API method result types. (#23173 by @wschurman)
- README.md changes. (#23142 by @douglowder)
- [iOS] Use weak delegate for state machine. (#23060 by @wschurman)
- [Android] Convert LoaderTask.RemoteCheckResult to sealed class. (#23061 by @wschurman)
- [iOS] Use swift enum for AppLoaderTask delegate. (#23064 by @wschurman)
- [Android] fix instrumentation tests. (#23037 by @douglowder)
- [iOS] Fix crash when dev-client and updates used together. (#23070 by @douglowder)
- [Android] Use sealed class for UpdatesStateEvent. (#23038 by @wschurman)
- [Android] fix instrumentation tests. (#23037 by @douglowder)
This version does not introduce any user-facing changes.
This version does not introduce any user-facing changes.
- Updated
junit
to4.13.2
. (#22395 by @josephyanks)
- [Android] Load updates in background thread and prevent ANR from initial launch. (#20273 by @kudo)
- Added support for React Native 0.72. (#22588 by @kudo)
- Added the Brotli compression support for EAS Update on Android. (#22982 by @kudo)
- [Android][ios] State machine implementation. (#22845 by @douglowder)
- [Android] Resolve up the project root when creating production manifest. (#22044 by @EvanBacon)
- Fixed Android build warnings for Gradle version 8. (#22537, #22609 by @kudo)
- Fixed broken
create-manifest-android.gradle
on Android Gradle version 8. (#22538 by @kudo)
- Updated setup documentation to reflect that setup should include changing the entry from
index
to.expo/.virtual-metro-entry
which is only available in SDK 49@expo/metro-config
. (#21643 by @EvanBacon) - [android] Add support for version 1 of the protocol. (#20275 by @wschurman)
- Add support for version 1 of the protocol. (#20275, #21652 by @wschurman)
- Add rollback to embedded update directive. (#21007, #21652 by @wschurman)
- Add support for extra params. (#21837 by @wschurman)
- New checkAutomatically constant. (#22137 by @douglowder)
- Support 204 status for no-op responses. (#22348 by @wschurman)
- Support new SDK version field in new manifests. (#22356 by @wschurman)
- iOS: Fix odd nullability issue in expo module. (#21655 by @wschurman)
- iOS: Fix legacy update bundled asset parsing. (#21691 by @wschurman)
- iOS: Fix config plist overriding. (#21702 by @wschurman)
- Align properties for different UpdateEvent types. (#21818 by @douglowder)
- Improvement in stability of useUpdateEvents() hook. (#21880 by @douglowder)
- Copy native events before transforming them. (#22162 by @douglowder)
- Fix empty body no-op multipart response. (#22227 by @wschurman)
- Put extra data mutation in transaction. (#22252 by @wschurman)
- [iOS] fix bizarre bug when downloading update twice. (#22355 by @douglowder)
- Fix rollback to embedded logic. (#22433, #22434 by @wschurman)
- Improved README and other chagnes for E2E tests. (#21331 by @douglowder)
- Protocol 1 support and rollback test in E2E tests. (#21197 by @wschurman, @douglowder)
- Convert EXManifests iOS implementation to Swift. (#21298 by @wschurman)
- Convert to Swift. (#21320, #21329, #21332, #21391, #21394, #21450, #21451, #21467, #21471, #21478, #21493, #21495, #21512, #21535, #21536, #21570, #21591, #21596, #21599, #21649 by @wschurman)
- Convert iOS EXUpdatesCrypto to swift. (#21524 by @wschurman)
- iOS: Decrease access control on classes and remove unnecessary objc attributes. (#21597 by @wschurman)
- iOS: Replace reachability code with library for wifi detection. (#21598 by @wschurman)
- iOS: Clean up and rename code signing classes. (#21600 by @wschurman)
- iOS: Rename classes to be more swifty. (#21620, #21622 by @wschurman)
- Fix E2E rollback test and other improvements. (#21389 by @douglowder)
- Consolidate E2E tests. (#21458 by @douglowder)
- E2E tests: graceful Detox failures. (#21520 by @douglowder)
- Fix E2E after Swift conversion. (#21592 by @douglowder)
- Fix iOS native debug after Swift conversion. (#21602 by @douglowder)
- Fix compilation errors and enable modules after Swift conversion. (#21621 by @wschurman, @douglowder)
- E2E tests for JS API. (#22167 by @douglowder)
- Android: Switch from deprecated
toLowerCase
tolowercase
function (#22225 by @hbiede)
- Change arg in gradle
.execute()
call to null to inherit env variables from user's env (#21712 by @phoenixiguess) - [Android] Fix missing manifest for build flavor variants. (#21813 by @douglowder)
- New
useUpdateEvents
hook. (#21258 by @douglowder)
- Make Updates API work with native debug. (#21253 by @douglowder)
- Break up E2E tests for reliability. (#21223 by @douglowder)
- Convert E2E tests to TypeScript. (#21278 by @douglowder)
This version does not introduce any user-facing changes.
- Convert E2E tests to Hermes. (#21065 by @douglowder)
- [Android] Fix runtime version parsing. (#19821 by @douglowder)
- Added support for React Native 0.71.x. (#20799 #20832 by @kudo)
- Bump
@expo/metro-config
. (#20720 by @EvanBacon) - Improvements to setup for Updates E2E tests. (#20120 by @douglowder)
- Convert updates E2E workflow to use EAS. (#20399 by @douglowder)
- Avoid dependency on
uuid
. (#20475 by @LinusU) - On Android bump
compileSdkVersion
andtargetSdkVersion
to33
. (#20721 by @lukmccall)
- New API Updates.isEmbeddedLaunch. (#20014 by @douglowder)
This version does not introduce any user-facing changes.
This version does not introduce any user-facing changes.
- Drop support for
logUrl
which sent console logs to the legacyexpo-cli
. (#18596 by @EvanBacon) - [plugin] Upgrade minimum runtime requirement to Node 14 (LTS). (#18204 by @EvanBacon)
- Bumped iOS deployment target to 13.0 and deprecated support for iOS 12. (#18873 by @tsapeta)
- [iOS] New logger and log reader for unifying logging support in expo-updates. (#18284 by @douglowder)
- [Android] New logger and log reader for unifying logging support in expo-updates. (#18318 by @douglowder)
- Add JS methods to read and clear client logs. (#18390 by @douglowder)
- Add Logger support for writing logs to a file; add Logger and associated classes to Android. (#18513 by @douglowder)
- Make extra header processing code consistent between manifests and assets. (#18564 by @wschurman)
- Type
UpdateCheckResult
andUpdateFetchResult
to reflect whenmanifest
is defined or not. (#18577 by @SimenB)
- Fix small race condition in recovery code on Android where in very rare scenarios, a bundle could be downloaded twice. (#18377 by @esamelson)
- Fixed with-node.sh doesn't keep quotes when passing arguments to Node.js and caused build errors when there are spaces in target name. (#18741 by @kudo)
- [plugin] Migrate import from @expo/config-plugins to expo/config-plugins and @expo/config-types to expo/config. (#18855 by @brentvatne)
- Update doc block link for manifests. (#18981 by @EvanBacon)
- Drop
@expo/config-plugins
dependency in favor of peer dependency onexpo
. (#18595 by @EvanBacon) - Log various errors with the new Updates logger; add E2E tests for the logger. (#18810 by @douglowder)
- [iOS] Flag to enable native debugging of updates. (#19292 by @douglowder)
- [Android] Flag to enable native debugging of updates. (#19441 by @douglowder)
- Deprecated the unreliable
source-login-scripts.sh
and sourcing the Node.js binary path from.xcode.env
and.xcode.env.local
. (#18330 by @kudo)
This version does not introduce any user-facing changes.
This version does not introduce any user-facing changes.
- Improved support of nvm sourcing in iOS shell scripts. (#17109 by @liamronancb)
- Android: Allow null asset hash in new manifests. (#17466 by @wschurman)
- Fixed
source-login-scripts.sh
~/zlogin typo. (#17622 by @vrgimael) - Android: Fix asset hash storage. (#17732 by @wschurman)
- Validate asset hash against expected hash before writing file to disk. (#17745 by @wschurman)
- Fixed missing
app.manifest
on react-native 0.69 or Android Gradle Plugin 7.1+. (#18034 by @kudo) - Suppress EXUpdatesService load in Expo Go to prevent crash. (#18056 by @douglowder)
- Fix proguard support in Android builds. (#18035 by @esamelson)
- (cli) Fix help command parsing. (#17293 by @wschurman)
- [iOS] Get downloaded update IDs. (#17817 by @douglowder)
- [Android] Get downloaded update IDs. (#17933 by @douglowder)
- Fix asset hash validation. (#17152 by @wschurman)
- Add current and embedded update headers to manifest requests. (#17033 by @esamelson)
- Fix return value in AppDelegateSubscriber (used with expo-dev-client). (#17111 by @esamelson)
- Remove okhttp and okio backward compatible workaround and drop react-native 0.64 support. (#16446 by @kudo)
- Add iOS support for code signing. (#15682 by @wschurman)
- Add CLI. (#16216 by @wschurman)
- Add support for dev client auto-setup with updates integration on iOS. (#16230 by @esamelson)
- Fix codesigning header name. (#16480 by @wschurman)
- Support certificate chains (Android). (#16375 by @wschurman)
- Support certificate chains (iOS). (#16634 by @wschurman)
- Add support for expo project information certificate extension (Android). (#16607 by @wschurman)
- Add support for expo project information certificate extension (iOS). (#16726 by @wschurman)
- Pass EAS-Client-ID in header for asset and manifest requests. (#16729 by @wschurman)
- Validate expo project information up the certificate chain. (#16800 by @wschurman)
- Update CLI to separate private keys from code signing certificate. (#16979 by @wschurman)
- Update
fbemitter
to v3. (#16245 by @SimenB) - Allow non-codesigned manifests for Expo Go (Android). (#16649 by @wschurman)
- Allow non-codesigned manifests for Expo Go (iOS). (#16682 by @wschurman)
- Fix issue where default values for primitive-typed configuration values were not correctly set. (#16644 by @esamelson)
- Fixed iOS script phase build error when
extendedglob
is enabled in zsh config. (#17024 by @kudo)
- Updated
@expo/config-plugins
from4.0.2
to4.0.14
,@expo/config
from^6.0.6
to^6.0.14
and@expo/metro-config
from~0.2.6
to~0.3.7
(#15621 by @EvanBacon) - Swap out Cloudfront CDN for
classic-assets.eascdn.net
. (#15781) by @quinlanj - Add ability for expo-dev-launcher to launch a specific update through UpdatesDevLauncherController. (#16865 by @esamelson)
- On Android bump
compileSdkVersion
to31
,targetSdkVersion
to31
andJava
version to11
. (#16941 by @bbarthec)
- Fix iOS issue where splash screen wouldn't show when using expo-updates and expo-splash-screen (#16163) by @hannojg
- Fix iOS launch crash when app.json
expo.updates.enabled
is false. (#15997 by @kudo) - Fix
Plugin with id 'maven' not found
build error from Android Gradle 7. (#16080 by @kudo)
- Fix build errors on React Native 0.66 caused by
okio
andokhttp
. (#15632 by @kudo) - Fix the
PhaseScriptExecution
build errors when thesource_login_scripts.sh
failed to load. (#15890 by @kudo)
- Fix
IllegalThreadStateException
that occurred when creating an event to send to React Native early in the app lifecycle. (#15880 by @esamelson) - Ensure we return early when updates are disabled on Android. (#15882 by @esamelson)
- Fix the view does not update from screen rotation on iOS devices. (#15608 by @kudo)
- Fix building error on AArch64 JDK. (#15669 by @kudo)
- Add missing @JvmStatic annotation to
UpdatesDevLauncherController.initialize
. (#15561 by @esamelson)
- Add error recovery manager on Android. (#15220 by @esamelson)
- Hook up error recovery manager to rest of module on Android. (#15222 by @esamelson)
- Add local SQLite fields for error recovery manager on iOS. (#14610 by @esamelson)
- Add DB migration for above. (#14718 by @esamelson)
- Add local SQLite fields and DB migration for error recovery manager on Android. (#15218 by @esamelson)
- Add DEFAULT 0 to new error recovery DB columns. (#15360 by @esamelson)
- Add error recovery manager on iOS. (#14397 by @esamelson)
- Hook up error recovery manager to rest of module on iOS. (#14398 by @esamelson)
- Move persisted error log to EXUpdatesErrorRecovery on iOS. (#14399 by @esamelson)
- Add native EXUpdatesCheckOnLaunch: ERROR_RECOVERY_ONLY setting on iOS. (#14673 by @esamelson)
- Small fixes for error recovery manager on iOS. (#15223 by @esamelson)
- Add native checkOnLaunch: ERROR_RECOVERY_ONLY setting on Android. (#15219 by @esamelson)
- Enhance node binary resolution for Xcode build phases scripts by the vendoring source-login-scripts.sh. (#15336 by @kudo)
- Add android support for multipart manifest responses. (#15401 by @wschurman)
- Add iOS support for multipart manifest responses. (#15426 by @wschurman)
- Add android support for code signing. (#15514 by @wschurman)
- Fix auto setup
EXUpdatesAppDelegate
breaking reanimated installation. (#14755 by @kudo) - Fix support for
react.entryFile
gradle config. (#14934 by @EvanBacon) - Fix Android app.manifest not generated when in OneSignal gradle plugin integration. (#14938 by @kudo)
- Fix Android app.manifest not generated from #14938 regression. (#14953 by @kudo)
- Fix iOS app.manifest generation error in
eas build --local
mode. (#14956 by @kudo) - Fix handling of unexpectedly missing assets on iOS. (#15008 by @esamelson)
- Fix issue with assets that are duplicated in the local SQLite db being reaped when they are still in use. (#15049 by @esamelson)
- Retain embedded asset fields when merging existing asset entities on Android. (#15123 by @esamelson)
- Fix
RCTBridge
initialized twice on startup. (#15142 by @kudo)
- Add error when entryfile is not found in expo-updates scripts. (#15234 by @AamuLumi)
- Update
@expo/config
and@expo/metro-config
dependencies. (#14801 by @Simek) - Refactor and unify Loader classes on Android. (#14334 by @esamelson)
- Kotlinize expo-updates. (#14818 by @wschurman)
This version does not introduce any user-facing changes.
- Fix Android app.manifest not generated from #14938 regression. (#14953 by @kudo)
- Fix iOS app.manifest generation error in
eas build --local
mode. (#14956 by @kudo)
This version does not introduce any user-facing changes.
- Fix Android app.manifest not generated when in OneSignal gradle plugin integration. (#14938 by @kudo)
This version does not introduce any user-facing changes.
- Fix
Updates.reloadAsync
behavior in bare apps when a new update is available (downloaded). (#14706 by @esamelson)
- Fix expo-screen-orientation breaking for expo-updates + expo-splash-screen integration. (#14519 by @kudo)
- Updated
@expo/config
,@expo/webpack-config
,@expo/metro-config
(#14443 by @EvanBacon)
This version does not introduce any user-facing changes.
This version does not introduce any user-facing changes.
- Updated
@expo/config-plugins
from3.1.0
to4.0.2
(#14788 by @jkhales) - Version expo-updates plugin by importing from @expo/config-plugins@3.0.7. This allows the update url to be defined in app.confg (#13981 by @jkhales)
- Store assets with filename = key.fileExtension. (#13801 by @jkhales)
- Use stable manifest ID where applicable. (#12964 by @wschurman)
- Update NewManifest field paths for new extra field format. (#13398 by @wschurman)
- Update location of EAS projectId in new manifest. (#13739 by @wschurman)
- Update location of scopeKey in new manifest. (#13817 by @wschurman)
- Introduce automatically setup where iOS AppDelegate or Android MainApplication customization is not necessary. (#14198 by @kudo)
- Fix
PROJECT_ROOT
path resolution increate-manifest-ios.sh
and increateManifest.js
(#13439 by @ajsmth) - Fix erroneous manifest JSON direct access. (#13906 by @wschurman)
- Fixed
userInterfaceStyle
not being applied when only set in rootexpo
options and not inexpo.android
options. (#13959 by @mrousavy)
- Skip running build scripts during iOS debug builds and add support for
SKIP_BUNDLING
/FORCE_BUNDLING
environment variables. (#14116 by @fson)
- Fix config plugin to properly set the updates URL based on
getAccountUsername
from@expo/config
. (#13909 by @brentvatne) - Fixed issue with dev-launcher integration where configuration was not set at the correct time, which caused issues when trying to open multiple different published apps. (#13926 by @esamelson)
- Revert #12734. expo-asset@8.3.3 or above requires expo-updates to specify assets with file extensions. (#13733 by @jkhales)
- Remove usage of deprecated
[RCTBridge reload]
method. (#13501 by @esamelson) - Remove side effects from UpdatesDevLauncherController.initialize() method. (#13555 by @esamelson)
This version does not introduce any user-facing changes.
- Added reset method to UpdatesDevLauncherController. (#13346 by @esamelson)
This version does not introduce any user-facing changes.
This version does not introduce any user-facing changes.
- Improve behavior of dev client (with updates integration) when developer is logged out of expo-cli. (#13310 by @esamelson)
- Renamed the iOS protocol in expo-updates-interface to EXUpdatesExternalInterface. (#13214 by @esamelson)
- Fixed prebuild issues with missing imports.
- Rename new manifest field updateMetadata to metadata (#12831 by @jkhales)
- Save asset with a key that does not include an extension. This introduces an implicit dependency on expo-asset@8.3.2 or above. (#12734 by @jkhales)
- Add last_accessed column to updates table schema, and rename metadata -> manifest. (#12768 by @esamelson)
- Add non-destructive database migration for the above change. (#12820 by @esamelson)
- Add new manifest2 field and make existing field optional. (#12817 by @wschurman)
- Convert manifest definitions and tests to kotlin. (#12479 by @wschurman)
- Start converting untyped manifest JSON objects into well-specified classes. (#12506 by @wschurman)
- Finish conversion to an interface for raw manifests. (#12509 by @wschurman)
- Add support for loading new manifests in Expo Go. (#12521 by @wschurman)
- Split SelectionPolicy into 3 separate interfaces. (Android: #12606 and iOS: #12682 by @esamelson)
- Add DatabaseIntegrityCheck and tests. (Android: #12607 and #12754, and iOS: #12683 by @esamelson)
- Add onAssetLoaded progress callback to remote loader. (Android: #12608 and iOS: #12684 by @esamelson)
- Add setter and resetter for SelectionPolicy. (Android: #12609 and iOS: #12685 by @esamelson)
- Convert most remaining usages of JSON manifest to RawManifest. (#12600 by @wschurman)
- Factor out raw manifest into wrapper class. (#12631 by @wschurman)
- Remove code to handle nested root level manifest key. (#12736 by @wschurman)
- Move scope check from reaper to selection policy. (#12769 by @esamelson)
- Add ReaperSelectionPolicyDevelopmentClient, implement in Expo Go. (#12770 by @esamelson)
- Add UpdatesDevLauncherController for development client integration. (Android: #13032 and iOS: (#13112) by @esamelson)
- Enable kotlin in all modules. (#12716 by @wschurman)
- Rename Update.metadata -> manifest in internal module classes. (#12818 by @esamelson)
- Reset selection policy in UpdatesDevLauncherController (#13113 by @esamelson)
- UpdatesDevLauncherController: make Update nullable in onSuccess callback (#13136 by @esamelson)
- (android) remove UPDATES_CONFIGURATION_USES_LEGACY_MANIFEST_KEY constant and start respecting cache-control headers for all manifest responses. Please ensure your server defined cache-control headers are configured correctly if you are self-hosted to avoid issues such as #13872 (#12181 by @jkhales)
- (ios) remove EXUpdatesUsesLegacyManifest Plist constant and start respecting cache-control headers for all manifest responses Please ensure your server defined cache-control headers are configured correctly if you are self-hosted to avoid issues such as #13872 (#12249 by @jkhales)
- crash if EXUpdatesRequestHeaders is not a dictionary (ios). (#12457 by @jkhales)
- Fixed Updates module methods in Android Expo Go by refactoring FileDownloader to have mostly instance methods rather than static methods.
- Fixed local assets URIs on Android to be compliant with File URI specification. Now file URI takes the form of
file:///*
instead offile:/*
. (#12428 by @tsapeta) - Fixed Updates module methods not rejecting properly in iOS managed workflow apps where updates are disabled.
- Fixed uncaught exception in parseDateString on Android API 21-23. (#12492 by mrs2296)
- Improved error message in createManifest script when there is an error getting the project's metro config.
This version does not introduce any user-facing changes.
- Updated
@expo/metro-config
with deprecated.expo.*
extension support and improved error stack traces. (#12252 by @EvanBacon) - Wrap native bundle script error in regex. (#12185 by @EvanBacon)
- Add prebuilt xcframework
- The package is now shipped with prebuilt binaries on iOS. You can read more about it on expo.fyi/prebuilt-modules. (#11224 by @tsapeta)
- Created config plugin. (#11981 by @EvanBacon)
- Updated Android build configuration to target Android 11 (added support for Android SDK 30). (#11647 by @bbarthec)
- Added alpha support for EAS update manifest format (#11050 by @esamelson)
- add ability for android clients to handle header signatures. (#11897 by @jkhales)
- Added
SelectionPolicyFilterAware
to support EAS Update's manifest filters feature (#11748 by @esamelson) - Parse & persist data from EAS Update manifest headers (#11961, #11967, and #12026 by @esamelson)
- Accept signature in header (iOS). (#11930 by @jkhales)
- Switch to SelectionPolicyFilterAware and use persisted manifest filters (#11993 by @esamelson)
- Make manifest filters key search case-insensitive (#12015 by @esamelson)
- Send persisted serverDefinedHeaders in manifest requests (#11994 by @esamelson)
- Only require signatures with expo go (android). (#12027 by @jkhales)
- Only require signatures with expo go (iOS). (#12072 by @jkhales)
- Make asset keys nullable (#12110 and #12111 by @esamelson)
- Removed
fbjs
dependency (#11396 by @cruzach) - On iOS, use default NSURLCache for manifest public key rather than caching it manually.
- Use
console.warn
message rather than hard crashing if neither runtime nor SDK version are configured (requires a corresponding update to theexpo
package) (#11367 by @esamelson) - Fixed discrepancies across platforms regarding required fields in manifests (#11562 by @esamelson)
- Improved support for
assetUrlOverride
in legacy self-hosted apps (#11601) - Stop expecting data and publicManifest root level keys for EAS manifests (#11613 by @esamelson)
- Stop overriding cache-control headers for non-legacy manifests (#11875 by @esamelson)
- Remove peerDependencies and unimodulePeerDependencies from Expo modules. (#11980 by @brentvatne)
- Keep current update and one older update, for safety and to make rollbacks faster (#11449 by @esamelson)
- Improved thread safety around reaping (#11447 by @esamelson)
- Fixed support for Android Gradle plugin 4.1+ (#11926 by @esamelson)
- This version adds an internal database migration, which means that when a user's device upgrades from an app with
expo-updates@0.3.x
to an app withexpo-updates@0.4.x
, any updates they had previously downloaded will no longer be accessible.- For managed workflow apps, this is inconsequential as this upgrade will be part of a major SDK version upgrade. You do not need to do anything if your app is made using the managed workflow.
- For bare workflow apps, this means updates downloaded on clients running
expo-updates@0.3.x
will need to be redownloaded in order to run after those clients are upgraded toexpo-updates@0.4.x
. We recommend incrementing your runtime/SDK version after updating toexpo-updates@0.4.x
, and republishing any OTA updates that you do not intend to distribute embedded in your application binary.
- On iOS enabled
use_frameworks!
usage by replacingReact
dependency withReact-Core
. (#11057 by @bbarthec)
- Fixed issue in managed workflow where
reloadAsync
doesn't reload the app if called immediately after the app starts. (#10917 and #10918 by @esamelson)
This version does not introduce any user-facing changes.
- Fixed
NSInvalidArgumentException
being thrown in bare applications on iOS (unrecognized selectorappLoaderTask:didFinishBackgroundUpdateWithStatus:update:error:
sent to instance ofEXUpdatesAppController
). (#10289 by @sjchmiela)
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.
- Easier to follow installation instructions by moving them to the Expo documentation (#9145).
- Fetch asset manifest through programmatic CLI interface instead of depending on a running React Native CLI server, so
./gradlew :app:assembleRelease
works as expected without needing to runreact-native start
beforehand. (#9372).
- Fixed an issue where the publish workflow was broken on Android. Note that the publish workflow will not be supported in a future version of expo-updates, so we recommend switching to the no-publish workflow.
- Fixed reading the
expo.modules.updates.ENABLED
setting from AndroidManifest.xml. - Improved the error message logged when an embedded manifest cannot be found.
- Fixed issue where launch screen on iOS doesn't show whilst updates are being retrieved if it is contained within a storyboard instead of a nib. (#8750 by @MattsTheChief)
- Fixed an issue where the REACT_NATIVE_PACKAGER_HOSTNAME env var was not respected in the build scripts for iOS or Android.
This version does not introduce any user-facing changes.
- Added a better error message to the
create-manifest-ios.sh
script in case the Xcode shell cannot find the node binary. - Added an optional
bundleIn${targetName}
field to Gradle build script config. (#8464 by @rickysullivan) - Fixed a bug on iOS with bundling assets from outside the project root.
This version does not introduce any user-facing changes.
- Fixed broken Android builds on Windows.
- Support monorepos (#8419 by @janicduplessis)
- Support entry file configuration in Xcode/gradle build scripts (#8415 and #8418 by @janicduplessis)
- Added a more helpful error message when trying to run a build without the packager server running.
- Temporarily vendor
filterPlatformAssetScales
method from@react-native-community/cli
in order to fix builds whennpm
was used to install dependencies (rather thanyarn
). - Fixed an issue on iOS where calling the JS module methods in development mode, after publishing at least one update, would crash the app.
- Fixed an issue on iOS where expo-updates expected more assets to be embedded than actually are by the React Native CLI.
- Added a better error message on iOS when embedded assets are missing.
- Added a better error message to the
createManifest
script when project does not have thehashAssetFiles
plugin configured.
- Added support for the no-publish workflow. In this workflow, release builds of both iOS and Android apps will create and embed a new update at build-time from the JS code currently on disk, rather than embedding a copy of the most recently published update. For more information, along with upgrade instructions if you're upgrading from 0.1.x and would like to use the no-publish workflow, read this blog post.
- Added
Updates.updateId
andUpdates.releaseChannel
constant exports
- Fixed an issue with recovering from an unexpectedly deleted asset on iOS.
- Fixed handling of invalid EXPO_UDPATE_URL values on Android.
- Updates Configuration Conditional From Equal To Prefix Check. (#8225 by @thorbenprimke)
- Fixed some issues with
runtimeVersion
on Android for apps usingexpo export
.
- Fixed SSR support on Web. (#7625 by @EvanBacon)
- Fixed 'unable to resolve class GradleVersion' when using Gradle 5. (#7577 by @IjzerenHein)
Initial public beta 🎉