Skip to content

Latest commit

 

History

History
1375 lines (1328 loc) · 167 KB

CHANGELOG.md

File metadata and controls

1375 lines (1328 loc) · 167 KB

Changelog

This is the log of notable changes to the Expo client that are developer-facing. Package-specific changes not released in any SDK will be added here just before the release. Until then, you can find them in changelogs of the individual packages (see packages directory).

Unpublished

📚 3rd party library updates

🛠 Breaking changes

🎉 New features

🐛 Bug fixes

50.0.0 — 2023-12-12

📚 3rd party library updates

  • Updated react-native-maps from 1.3.2 to 1.7.1. (#28007 by @lukmccall)
  • expo-location
    • Updated com.google.android.gms:play-services-location to 21.0.1. (#25028 by @behenate)

🛠 Breaking changes

🎉 New features

  • expo-asset
  • expo-application
  • expo-barcode-scanner
    • Added support for React Native 0.73. (#24018 by @kudo)
  • expo-battery
    • Added support for React Native 0.73. (#24018 by @kudo)
  • expo-background-fetch
    • Added support for React Native 0.73. (#24018 by @kudo)
  • expo-av
    • Added support for React Native 0.73. (#24018 by @kudo)
  • expo-camera
    • Added support for React Native 0.73. (#24018 by @kudo)
    • [iOS] Rewrote Objective-C classes to Swift. (#22604 by @alanjhughes)
    • Methods stopRecording, pausePreview and resumePreview have been updated to return promises. (#25737 by @lukmccall)
  • expo-cellular
    • Added support for React Native 0.73. (#24018 by @kudo)
  • expo-calendar
    • Added support for React Native 0.73. (#24018 by @kudo)
  • expo-brightness
    • Added support for React Native 0.73. (#24018 by @kudo)
  • expo-blur
    • Added support for React Native 0.73. (#24018 by @kudo)
    • Support more blur effects. On iOS, using UIBlurEffect.Style. On Android, find the closest available color reference. (#24392 by @alanjhughes)
  • expo-constants
  • expo-crypto
    • Added support for React Native 0.73. (#24018 by @kudo)
  • expo-clipboard
    • Added support for React Native 0.73. (#24018 by @kudo)
  • expo-contacts
    • Added support for React Native 0.73. (#24018 by @kudo)
  • expo-file-system
  • expo-document-picker
    • Added support for React Native 0.73. (#24018 by @kudo)
  • expo-face-detector
    • Added support for React Native 0.73. (#24018 by @kudo)
  • expo-haptics
    • Added support for React Native 0.73. (#24018 by @kudo)
  • expo-image-loader
    • Added support for React Native 0.73. (#24018 by @kudo)
  • expo-font
  • expo-gl
    • Added support for React Native 0.73. (#24018 by @kudo)
  • expo-image-manipulator
  • expo-keep-awake
  • expo-image-picker
  • expo-intent-launcher
    • Added support for React Native 0.73. (#24018 by @kudo)
  • expo-linear-gradient
    • Added support for React Native 0.73. (#24018 by @kudo)
  • expo-mail-composer
    • Added support for React Native 0.73. (#24018 by @kudo)
  • expo-local-authentication
    • Added support for React Native 0.73. (#24018 by @kudo)
  • expo-location
    • Added support for React Native 0.73. (#24018 by @kudo)
  • expo-media-library
    • Added support for React Native 0.73. (#24018 by @kudo)
  • expo-localization
    • Added support for React Native 0.73. (#24018 by @kudo)
    • Added a temperatureUnit field, which contains the default temperature unit for the locale. (#24059 by @behenate)
  • expo-modules-core
    • [Android] Surfaced errorManager to allow throwing errors and warnings from modules. (#23848 by @aleqsio)
    • [Android] Enums can now be used to define events. (#23875 by @lukmccall)
    • [Android] Promises can now be resolved without arguments. (#23907 by @lukmccall)
    • Added support for React Native 0.73. (#24018, #24019 by @kudo)
    • [Android] Property component can now take the native shared object instance as the first argument. (#24206 by @lukmccall)
    • Introduced requireOptionalNativeModule that returns null when the module cannot be found instead of throwing an error. (#24262 by @tsapeta)
    • [Android] Introduced shared refs – a way to pass native objects among different independent modules. (#24446 by @lukmccall)
    • Added support for Apple tvOS. (#24329 by @douglowder)
    • Add CommonExceptions.ModuleNotFound. (#24898 by @lukmccall)
    • [Android] Set<T> can now be passed as an argument to a module method. (#24897 by @lukmccall)
    • Add preventModuleOverriding to ModuleRegistry.register method. (#24860 by @wschurman)
    • [iOS] CGFloat can now be used as an argument type. (#25140 by @tsapeta)
    • Added support for React Native 0.73.0. (#24971, #25453 by @gabrieldonadel)
    • Added Data <-> Uint8Array convertible on iOS. (#25726 by @kudo)
    • Added ByteArray <-> Uint8Array convertible on Android. (#25727 by @kudo)
  • expo-notifications
    • Added support for React Native 0.73. (#24018 by @kudo)
  • expo-print
    • Added support for React Native 0.73. (#24018 by @kudo)
  • expo-device
  • expo-screen-capture
    • Added support for React Native 0.73. (#24018 by @kudo)
  • expo-network
  • expo-sensors
    • Added support for React Native 0.73. (#24018 by @kudo)
  • expo-random
    • Added support for React Native 0.73. (#24018 by @kudo)
  • expo-secure-store
    • Added a config plugin to automatically set NSFaceIDUsageDescription on iOS. (#23268 by @aleqsio)
    • [Android] Migrated to Expo Modules API. (#23804 by @behenate)
    • [Android] It is now possible to store values that require authentication and ones that don't under the same keychainService. (#23804 by @behenate)
    • Added support for React Native 0.73. (#24018 by @kudo)
    • [iOS] Added possibility to store values that require authentication and ones that don't under the same keychainService. (#23841 by @behenate)
    • [iOS] Added synchronous functions for storing and retrieving values from the store. (#23841 by @behenate)
  • expo-screen-orientation
    • Added support for React Native 0.73. (#24018 by @kudo)
  • expo-sms
    • Added support for React Native 0.73. (#24018 by @kudo)
  • expo-store-review
    • Added support for React Native 0.73. (#24018 by @kudo)
  • expo-task-manager
    • Added support for React Native 0.73. (#24018 by @kudo)
  • expo-speech
    • Added support for React Native 0.73. (#24018 by @kudo)
  • expo-sharing
    • Added support for React Native 0.73. (#24018 by @kudo)
  • expo-video-thumbnails
    • Added support for React Native 0.73. (#24018 by @kudo)
  • expo-web-browser
    • Added support for React Native 0.73. (#24018 by @kudo)
  • expo-sqlite
    • Migrated Android codebase to Expo Modules API. (#23115 by @alanjhughes)
    • Added experimental Promise based execAsync and transactionAsync functions. (#23109 by @kudo)
    • Add support for running raw queries on Android. (#24320 by @alanjhughes)
    • On Android, add support for CRSQLite. (#24322 by @alanjhughes)
    • Add synchronous method closeSync. (#23757 by @alanjhughes)
    • Added support for React Native 0.73. (#24018 by @kudo)
    • [Android] Rewrite implementations from low-level SQLite bindings. (#24730 by @kudo)
    • Introduced expo-sqlite/next new APIs. (#24812 by @kudo)
    • Added Android implementation for sqlite/next APIs. (#25021 by @kudo)
    • Added the useSQLiteContext hook that can be used across components. (#25129 by @kudo)
    • Improved performance on the expo-sqlite/next API. (#25314 by @kudo)
    • Added binary data support to the expo-sqlite/next API through the Uint8Array. (#25787 by @kudo)
  • unimodules-app-loader
    • Added support for React Native 0.73. (#24018 by @kudo)

🐛 Bug fixes

  • expo-asset
  • expo-application
    • On iOS, fixed a regression that prevented expo go from determining the release type. (#25834 by @alanjhughes)
  • expo-barcode-scanner
  • expo-av
  • expo-camera
    • Resolved an issue on Android where recording a video, even with the mute: true option, would still result in an audio permission exception. Furthermore, the mute flag was incorrectly referred to as muteValue, causing it to be consistently ignored (#23145 by @hirbod)
    • Fix crash when onBarCodeScanned or onFacesDetected callback is removed. (#23223 by @thespacemanatee)
    • Remove @koale/useworker. (#23967 by @marklawlor)
    • Fixed issue with checking camera/microphone permissions in Firefox. (#22855 by @loganrosen)
    • Fixed flash is not enabled during recordings. (#23776 by @tszheichoi)
    • On iOS, fix dead frames when starting a video recording. (#22037 by @alanjhughes)
    • [iOS] Fix a regression from (#22604 that prevented the barcode scanner from starting.(#25053 by @alanjhughes) (#22604, #25053 by @alanjhughes)
  • expo-calendar
    • On iOS, fix permissions error on iOS 17. (#24545 by @alanjhughes)
    • Fix url parsing when adding url in calendar event and reminder on iOS. (#24102 by @Thomas-Mollard)
    • On iOS, fix check that determines if the version of Xcode supports iOS 17. (#24655 by @alanjhughes)
    • On iOS, validate calendars argument in getRemindersAsync before accessing count. (#24677 by @alanjhughes)
    • [iOS] Fix unnecessary permission check for calendars when calling saveCalendarAsync with entityType "reminder" (#24967 by @robertying)
  • expo-brightness
    • On Android, add event to prevent the new NativeEventEmitter() warning. (#24942 by @alanjhughes)
  • expo-constants
    • Fix task ':expo-constants:packageDebugAssets' uses this output of task ':expo-constants:copyReleaseExpoConfig' without declaring an explicit or implicit dependency when running gradlew test on Android. (#23511 by @lukmccall)
  • expo-clipboard
    • [Android] Fix path traversal vulnerability in getFileForUri function. (#25549 by @behenate)
  • expo-contacts
    • [Android] Fix addContactAsync failing when an e-mail or a phone number is provided with an id. (#23877 by @behenate)
  • expo-file-system
  • expo-document-picker
    • Fix type on DocumentPickerOptions on iOS. (#23497 by @aleqsio)
    • [web] Fix promise never resolving when user cancels the picker. (#24838 by @behenate)
    • Added default mimetype (application/octet-stream) to avoid quiet failure when mimetype is null on iOS (#24764 by @OzymandiasTheGreat)
  • expo-image-loader
  • expo-font
    • Gracefully catch exceptions during font loading on web with fontfaceobserver. (#22954 by @bradjones1)
    • Handle the case where no argument is passed to the plugin. (#25138 by @alanjhughes)
  • expo-image-manipulator
    • [iOS] Fix an issue where the image is manipulated on a background thread. (#25756 by @alanjhughes)
  • expo-image-picker
  • expo-intent-launcher
    • Fixed errors in debug and crashes in production when an intent is launched without found activities. (#24481 by @robertying)
  • expo-location
  • expo-linking
  • expo-media-library
    • Fix albumNeedsMigrationAsync crashing if called with invalid albumId on Android. (#23516 by @lukmccall)
    • Fix the bind value at index 1 is null exception thrown by ExpoMediaLibrary.migrateAlbumIfNeededAsync on Android. (#23515 by @lukmccall)
    • On iOS, fix issue where the wrong requester class was used if the user had requested writeOnly permissions. (#23780 by @alanjhughes)
    • On iOS, fix iOS 14 limited library picker presentation, using presentPermissionsPickerAsync, on nested views and reject Promise if state is not limited. (#25521 by @exodusanto)
    • Fix promises being resolved twice on Android. (#25763 by @lukmccall)
  • expo-localization
  • expo-modules-core
    • Fix the View cannot be cast to ViewGroup exception on Android. (#23264 by @lukmccall)
    • Improved the OkHttp network inspector stability on Android. (#23350 by @kudo)
    • [iOS] Fix conversion to URL type that failed despite receiving a string that contained a valid URL. (#23331 by @alanhughes) (#23331 by @alanjhughes) (#23331, #23331 by @alanjhughes, @alanjhughes)
    • Fixed the Network Inspector cannot preview response body for response without the Content-Length header. (#23405 by @kudo)
    • Fixed SoLoader does not work on Android. (#23415 by @kudo)
    • Fixed slower boot time on Android. (#23345 by @lukmccall)
    • Fixed regressions and crashes in the dev client introduced by #23405. (#23491 by @kudo) (#23405, #23491 by @kudo)
    • Fixed the ErrorViewGroup cannot be cast to module view class exception on Android. (#23651 by @lukmccall)
    • [iOS] Fix allowed orientations set in Info.plist being ignored when no delegates requested a different orientation. (#23593 by @behenate)
    • [iOS] Fixed custom fonts support on Fabric. (#23666 by @aleqsio)
    • [Android] Fixed splash screen is missing when using the getDelayLoadAppHandler() from expo-updates. (#23747 by @kudo)
    • [Android] Refresh NativeModulesProxy if app bundle is reloaded. (#23824 by @douglowder)
    • [Android] Fix nullability of parameter type in List and Map when converting from JS to native. (#23942 by @lukmccall)
    • Fixed Fabric setup error on iOS. (#24004 by @kudo)
    • Fixed uuid v4 generation. (#24123 by @tsapeta)
    • [Android] Fixed owner type of view functions. (#24135 by @lukmccall)
    • [Android] Fixed IOException No space left on device when saving persistent log. (#24247 by @RodolfoGS)
    • Fixed typed arrays couldn't be returned from synchronous functions. (#24744 by @lukmccall)
    • [iOS] Fixed exception when deallocating shared objects. (#24836 by @kudo)
    • [Android] Fixed null or undefined wasn't converted to JavaScriptValue. (#24899 by @lukmccall)
    • [Android] Fixed Either converter not working with types that have common representation in JavaScript. (#24903 by @lukmccall)
    • [Android] Any converter doesn't use ReadableMap or ReadableList anymore. Objects and arrays are converted to Kotlin's primitives. (#24963 by @lukmccall)
    • Mock native code on web platforms. (#25264 by @EvanBacon)
    • [iOS] Fixed the object identifier for shared object types. (#25060 by @tsapeta)
    • [iOS] Fixed concurrent functions (async/await) not converting results such as records and shared objects. (#25075 by @tsapeta)
    • [iOS] Fixed concurrent functions (async/await) not supporting an owner argument (view and class functions). (#25141 by @tsapeta)
    • Fixed UIView arguments not being resolved correctly when passed in with findNodeHandle (#24703 by @javache)
    • [Android] Improve boot time on low-end devices. (#25267 by @lukmccall)
    • [Android] Improve performance of enum and map converters. (#25272 by @lukmccall)
    • [Android] Improve logic responsible for obtaining converters that slow down the startup time. (#25273 by @lukmccall)
    • [Android] Improving the creation process of views for better performance. (#25274 by @lukmccall)
    • [Android] Prevent the app from crashing during reloading when an unfinished promise tries to execute.
    • [Android] Fix JavaScriptFunction not working when the return type wasn't provided. (#25688 by @lukmccall)
    • [Android] Fix requesting only WRITE_SETTINGS rejecting promise even if the permission was granted. (#25732 by @lukmccall)
    • [Android] Fix functions that are scheduled on the main thread weren't being called as soon as possible. (#25757 by @lukmccall)
  • expo-notifications
    • Fix server rendering with Metro web. (#24195 by @EvanBacon)
    • Send background notifications through when the app is in the foreground (#24684 by @kadikraman)
    • On Android, make tokenManager nullable to prevent crash if we can't find it. (#25860 by @alanjhughes)
  • expo-print
    • Fixed missing constants on iOS, restricted possibility of starting multiple print jobs at once, which would lead to crashes. (#23128 by @behenate)
  • expo-device
  • expo-sensors
  • expo-secure-store
    • Fixed the 'WHEN_UNLOCKED_THIS_DEVICE_ONLY' constraint being incorrectly mapped to wrong secure store accessible (#24831 by @mmmguitar)
  • expo-screen-orientation
    • [iOS] When config plugin is not configured the initial orientation is now based on values in Info.plist instead of being set to portrait. (#23456 by @behenate)
    • [iOS] Fix event emitter sending events with no registered listeners. (#23462 by @behenate)
    • [iOS] Fix config plugin deleting the orientations key from Info.plist when the initial orientation value is set to DEFAULT. (#23637 by @behenate)
    • Fix addOrientationChangeListener not working on iPadOS. (#23656 by @behenate)
    • On Android, add event to module definition to prevent new NativeEventEmitter() warning. (#24943 by @alanjhughes)
  • expo-speech
  • expo-video-thumbnails
    • [iOS] Fixed an issue where timeFrame exceeding video duration failed to generate a thumbnail. Implemented clamping. (#25681 by @hirbod)
  • expo-sqlite
    • Fixed the return type from executeSqlAsync to only successful ResultSet. (#24336 by @kudo)
    • Fixed missing transaction() and readTransaction() function types from SQLiteDatabase. (#23751 by @kudo)
    • [iOS] Fixed build error when mixing with iOS built-in SQLite3. (#23885 by @kudo)
    • [Android] Fixed select queries with CTEs crashing on Android. (#24132 by @derekstavis)
    • [iOS] Fixed an issue with CRSQLite missing a minimum OS version on iOS, causing rejections on AppStore Connect submission. (#24347 by @derekstavis)
    • Fix broken JS test. (#24498 by @alanjhughes)
    • [ios] Fix some issues for sqlite/next. (#25022 by @kudo)
    • Fix crash issues in sqlite/next. (#25295 by @kudo)
    • Fix executeSqlAsync to accept null properly as arguments. (#24761 by @spencerc99)
    • Fixed useSQLiteContext() and finalizeUnusedStatementsBeforeClosing issues in expo-sqlite/next API. (#25328 by @kudo)
    • Fixed the transactionExclusiveAsync does not support CRSQLite. (#25370 by @kudo)
    • Fixed expo-sqlite/next integer overflow crashes on iOS. (#25322 by @peterferguson)
    • Fixed expo-sqlite/next crashes when access to finalized statements. (#25623 by @kudo)
    • Fixed expo-sqlite/next UTF-8 text issue and :memory: database issue. (#25637 by @kudo)

💡 Others

  • expo-asset
    • Collapse re-export of react-native/Libraries/Image/AssetRegistry to @react-native/assets-registry/registry. (#25265 by @EvanBacon)
    • Migrate to new standard URL support on native. (#24941 by @EvanBacon)
    • Renamed unimodule.json to expo-module.config.json. (#25100 by @reichhartd)
    • Removed references to legacy bundledAssets constant from expo-file-system that was used only in standalone apps. (#25484 by @tsapeta)
  • expo-apple-authentication
    • Ship untranspiled JSX to support custom handling of jsx and createElement. (#24889 by @EvanBacon)
  • expo-application
    • Remove unimodule.json in favour of expo-module.config.json. (#25100 by @reichhartd)
  • expo-auth-session
  • expo-barcode-scanner
  • expo-battery
  • expo-background-fetch
  • expo-av
    • Migrated AVModule to use Expo modules API. (#23902 by @lukmccall)
    • Ship untranspiled JSX to support custom handling of jsx and createElement. (#24889 by @EvanBacon)
    • Use pointerEvent style instead of prop for video component on web. (#24931 by @EvanBacon)
    • Remove deprecated REACT_NATIVE_OVERRIDE_VERSION for React Native nightly testing. (#25151 by @kudo)
    • Removed backward compatible code for deprecated SDKs. (#25154 by @kudo)
    • Bump C++ compiler setting to C++20. (#25548 by @kudo)
  • expo-camera
  • expo-calendar
  • expo-blur
    • Ship untranspiled JSX to support custom handling of jsx and createElement. (#24889 by @EvanBacon)
  • expo-constants
  • expo-crypto
    • Change getRandomBytesAsync to use native getRandomValues when available. (#24716 by @aleqsio)
  • expo-clipboard
    • Ship untranspiled JSX to support custom handling of jsx and createElement. (#24889 by @EvanBacon)
  • expo-contacts
  • expo-file-system
  • expo-document-picker
  • expo-face-detector
  • expo-image-loader
  • expo-font
  • expo-gl
    • Migrated GLObjectManagerModule to use Expo Modules API. (#24017 by @lukmccall)
    • Ship untranspiled JSX to support custom handling of jsx and createElement. (#24889 by @EvanBacon)
    • Use pointerEvent style instead of prop for components on web. (#24931 by @EvanBacon)
    • Remove deprecated REACT_NATIVE_OVERRIDE_VERSION for React Native nightly testing. (#25151 by @kudo)
    • Removed backward compatible code for deprecated SDKs. (#25154 by @kudo)
    • Bump C++ compiler setting to C++20. (#25548 by @kudo)
  • expo-image-manipulator
  • expo-keep-awake
  • expo-image-picker
  • expo-linear-gradient
    • Ship untranspiled JSX to support custom handling of jsx and createElement. (#24889 by @EvanBacon)
  • expo-mail-composer
  • expo-local-authentication
  • expo-location
  • expo-linking
  • expo-localization
    • Change documentation to refer to a correct replacement method in a deprecated field. (#23811 by @aleqsio)
    • [iOS] Use newer, non-deprecated platform APIs in getLocales(). (#24884 by @aleqsio)
  • expo-modules-core
    • Changed Objective-C names for ExpoReactDelegate and ExpoReactDelegateHandler to fix issues with versioning in Expo Go. (#23229 by @tsapeta)
    • Fork uuid@3.4.0 and move into expo-modules-core. Remove the original dependency. (#23249 by @alanhughes) (#23249 by @alanjhughes)
    • Improved error handling when working with native promises on Android. (#23571 by @lukmccall)
    • Added tracing to avoid slow app startup on Android. (#23653 by @lukmccall)
    • Use native UUIDv4 generation on Android and iOS. (#24199 by @behenate)
    • [Android] Add type converter for the ReadableArguments class to allow backward compatibility with older modules. (#24137 by @lukmccall)
    • [Android] SharedObjectTypeConverter now can work with the Dynamic class. (#24207 by @lukmccall)
    • [Android] Expose a conversion between id and shared objects. (#24220 by @lukmccall)
    • Remove deprecated RCTDeviceEventEmitter. (#24298 by @EvanBacon)
    • Remove deprecate utility function. (#24298 by @EvanBacon)
    • Deprecate SyntheticPlatformEmitter in favor of DeviceEventEmitter. (#24298 by @EvanBacon)
    • Introduced an AppContext config to provide things like documents and caches directories for the modules. (#24292 by @tsapeta)
    • Fixed random NullPointerExceptions when calling Updates.reloadAsync on Android. (#24442 by @lukmccall)
    • Converting shared object id passed as a prop to the associated native object. (#24431 by @tsapeta)
    • Added a convenient method to get the app delegate subscriber of the given type. (#23943 by @tsapeta)
    • Improve tracking on Android. (#24625 by @lukmccall)
    • Use native UUIDv5 generation on Android and iOS. (#24200 by @behenate)
    • Ensure native modules are installed before required. (#24746 by @tsapeta)
    • Clean up and restructure the modules core package directory. (#24816 by @tsapeta)
    • Remove unimodule.json in favour of expo-module.config.json. (#25100 by @reichhartd)
    • Remove deprecated REACT_NATIVE_OVERRIDE_VERSION for React Native nightly testing. (#25151 by @kudo)
    • Removed backward compatible code for deprecated SDKs. (#25154 by @kudo)
    • [iOS] Made dynamic types creation faster. (#25390 by @tsapeta)
    • [iOS] Add FileSystemUtilities to replace legacy interfaces. (#25495 by @alanhughes) (#25495 by @alanjhughes)
    • Bump C++ compiler setting to C++20. (#25548 by @kudo)
    • Marked NativeModulesProxy as deprecated in favor of requireNativeModule and requireOptionalNativeModule. (#25666 by @tsapeta)
  • expo-notifications
  • expo-print
    • Remove unimodule.json in favour of expo-module.config.json. (#25100 by @reichhartd)
  • expo-network
  • expo-sensors
    • Use absolute motion reference frame to calculate device rotation if available on iOS. (#23738 by @jkaufman)
    • Migrated Android codebase to use Expo modules API. (#23906 by @lukmccall)
    • Migrated to Swift and Expo Modules API on iOS. (#24133 by @tsapeta)
  • expo-secure-store
    • Added a check for the NSFaceIDUsageDescription key in the set function. (#23275 by @alanjhughes)
    • [Android] Enforce minimum authentication tag length for the AESEncryptor for improved security. (#25294 by @behenate)
  • expo-screen-orientation
    • [iOS] Refactor the singleton class to work properly in versioned code in Expo Go. (#23228 by @tsapeta)
  • expo-task-manager
  • expo-speech
  • expo-sharing
  • expo-video-thumbnails
  • expo-sqlite
  • unimodules-app-loader

⚠️ Notices

49.0.0 — 2023-06-27

📚 3rd party library updates

🛠 Breaking changes

🎉 New features

🐛 Bug fixes

  • expo-application
  • expo-asset
    • Fixed @react-native/assets-registry module not found issue on Web. (#21469 by @kudo)
    • Fixed monorepo asset resolution in production for Metro web. (#22094 by @EvanBacon)
  • expo-background-fetch
  • expo-barcode-scanner
    • Fixed Android property name of BarCodeScannedEvent from boundingBox to bounds to match TypeScript definitions (#21384 by @frw)
    • Fixed Android build warnings for Gradle version 8. (#22537, #22609 by @kudo)
    • On Android, fixed an issue where certain text characters would not be recognised. (#23094 by @alanhughes) (#23094 by @alanjhughes)
  • expo-av
  • expo-battery
  • expo-blur
    • Add WebkitBackdropFilter to support react-native-web styling. (#21146 by @EvanBacon)
    • [iOS] Fixed Detox tests hanging when BlurView is present (#22439 by @behenate)
    • Fixed Android build warnings for Gradle version 8. (#22537, #22609 by @kudo)
  • expo-brightness
  • expo-branch
  • expo-calendar
  • expo-cellular
  • expo-clipboard
    • Fixed crash in clipboard listener on Android SDK <26 (#21383 by @frw)
    • Fixed Android build warnings for Gradle version 8. (#22537, #22609 by @kudo)
  • expo-device
    • Fixed Device.getDeviceTypeAsync() returning TABLET on some devices. (#21325 by @behenate)
    • Fixed Android build warnings for Gradle version 8. (#22537, #22609 by @kudo)
  • expo-document-picker
  • expo-camera
  • expo-contacts
  • expo-face-detector
  • expo-gl
  • expo-file-system
  • expo-haptics
  • expo-image-loader
  • expo-crypto
  • expo-intent-launcher
  • expo-image-picker
    • Fix images unexpectedly being converted to .png when opening .bmp files and selecting any quality in ImagePickerOptions. (#21361 by @behenate)
    • Fix issue where the array of permissions could end up empty causing an exception. (#21589 by @alanhughes) (#21589 by @alanjhughes)
    • Fix rotated videos returning incorrect width/height. #12573 (#21758 by @mmmulani)
    • Fix NullPointerException for launchCameraAsync on Android 13. (#22123 by @witheroux)
    • [Android] Fix image picker returning inverted dimensions when selecting vertical images without editing. (#22383 by @behenate)
    • Fixed Android build warnings for Gradle version 8. (#22537, #22609 by @kudo)
    • Fixed an issue that allowed picking non-image/video files when passing MediaTypeOptions.All (#22606 by @fobos531)
    • Fix manifest merger build fail on Android. (#23191 by @alexandrius)
    • [Android] Fix backported photo picker crashing with null intent. (#23224 by @thespacemanatee)
  • expo-constants
  • expo-keep-awake
  • expo-font
  • expo-mail-composer
  • expo-location
  • expo-local-authentication
    • On iOS, fix incorrect nil check when checking for NSFaceIDUsageDescription in the Info.plist. (#21500 by @alanjhughes)
    • [Android] Fixed device credentials fallback when biometric sensors are unavailable (#22388 by @hubastard)
    • Fixed Android build warnings for Gradle version 8. (#22537, #22609 by @kudo)
  • expo-localization
    • Fixed invalid timezone returned for getCalendars on Web. (#22003 by @aleqsio)
    • Fixed errors thrown on Play Console pre-launch report. (#22003 by @aleqsio)
    • User settings for delimiters and other locale preferences now override default locale settings for each locale in the list. (#22763 by @aleqsio)
    • Fixed Android build warnings for Gradle version 8. (#22537, #22609 by @kudo)
  • expo-linear-gradient
    • Fixed crashes when R8 or Proguard is enabled. (#21580 by @kudo)
    • Fixed Android build warnings for Gradle version 8. (#22537, #22609 by @kudo)
  • expo-media-library
  • expo-random
  • expo-notifications
  • expo-screen-capture
  • expo-sharing
  • expo-modules-core
    • [iOS] Fixed convertible implementation for URL type to support unencoded UTF8 urls and file paths. (#21139 by @tsapeta)
    • Fixed AppDelegateSubscriber broken when running on iOS dynamic framework or static framework mode. (#21206 by @kudo)
    • [iOS] Fixed URI with encoded # getting cut off. (#21326 by @lukmccall)
    • [Android] Fail gracefully when the view cannot be constructed due to the missing activity. (#21328 by @lukmccall)
    • [iOS] Fixed jsc import when using use_frameworks (#21479 by @gabrieldonadel)
    • [Android] Fixed coroutine functions crashing when invoked with more than 1 argument. (#21635 by @lukmccall)
    • [iOS] Fix automatic percent-encoding when converting to the URL object. (#21569 by @tsapeta)
    • [Android] Fixed ReadableNativeMap cannot be cast to the Record. (#21773 by @lukmccall)
    • [Android] Improve the initial loading speed of the native view. (#22153 by @lukmccall)
    • Fixed build errors on React Native 0.72.x. (#22170, #22189 by @kudo)
    • [Android] Fixed argument trailing not working correctly when all parameters are optional. (#22293 by @lukmccall)
    • Fixed passing JavaScriptObject argument and view props. (#22427 by @lukmccall)
    • Fix failing instrumentation tests in JavaScriptViewModule. (#22518 by @aleqsio)
    • Fixed Android build warnings for Gradle version 8. (#22537, #22609 by @kudo)
    • [Android] Fix the Color converter doesn't work on devices with SDK version below 26. (#22191 by @lukmccall)
    • Refactored network inspector code and add unit tests. (#22669, #22693 by @kudo)
    • Fix the View cannot be cast to ViewGroup exception on Android. (#23264 by @lukmccall)
    • Improved the OkHttp network inspector stability on Android. (#23350 by @kudo)
    • [iOS] Fix conversion to URL type that failed despite receiving a string that contained a valid URL. (#23331 by @alanhughes) (#23331 by @alanjhughes)
    • Fixed the Network Inspector cannot preview response body for response without the Content-Length header. (#23405 by @kudo)
    • Fixed SoLoader does not work on Android. (#23415 by @kudo)
    • Fixed slower boot time on Android. (#23345 by @lukmccall)
    • Fixed regressions and crashes in the dev client introduced by #23405. (#23491 by @kudo) (#23405, #23491 by @kudo)
  • expo-network
  • expo-sensors
  • expo-speech
  • expo-permissions
  • expo-print
  • expo-screen-orientation
    • Fixed Android build warnings for Gradle version 8. (#22537, #22609 by @kudo)
    • [iOS] Fixed screen orientation on iOS 16. (#22152 by @behenate)
    • [iOS] Fixed status bar and navigation bar following the device's orientation regardless of applied orientation lock. (#22152 by @behenate)
    • [iOS] Fixed SafeAreaViews failing after pulling down quick settings when the device is in a different orientation than the current orientation lock allows. (#22152 by @behenate)
    • [iOS] Fix crash when reading rootViewController value. (#23039 by @gabrieldonadel)
    • [iOS] When config plugin is not configured the initial orientation is now based on values in Info.plist instead of being set to portrait. (#23456 by @behenate)
  • expo-image-manipulator
  • expo-secure-store
  • expo-store-review
  • expo-sms
  • expo-sqlite
  • expo-task-manager
  • expo-video-thumbnails
  • unimodules-app-loader
  • expo-web-browser
  • expo-camera
    • Resolved an issue on Android where recording a video, even with the mute: true option, would still result in an audio permission exception. Furthermore, the mute flag was incorrectly referred to as muteValue, causing it to be consistently ignored (#23145 by @hirbod)
    • Fix crash when onBarCodeScanned or onFacesDetected callback is removed. (#23223 by @thespacemanatee)

⚠️ Notices

  • Removed the Remote JS debugger option from Expo Go menu when using SDK 49 or above. (#22027 by @gabrieldonadel)

💡 Others

  • expo-barcode-scanner
  • expo-auth-session
  • expo-calendar
    • Android: Switch from deprecated toLowerCase to lowercase function (#22225 by @hbiede)
  • expo-document-picker
  • expo-gl
  • expo-file-system
    • Android: Switch from deprecated toLowerCase to lowercase function (#22225 by @hbiede)
  • expo-crypto
  • expo-constants
    • Warn on use of Constants.manifest. (#22247 by @wschurman)
    • Remove the long-deprecated Constants.deviceYearClass and Constants.platform.ios.model. These properties now live on expo-device. (#23068 by @brentvatne)
  • expo-linking
  • expo-mail-composer
  • expo-location
    • On Android, removed use of deprecated LocationRequest constructor and replaced with LocationRequest.Builder. (#22653 by @alanjhughes)
    • Removed the Geocoding API service. (#22830 by @alanjhughes)
  • expo-notifications
  • expo-screen-capture
    • Android: Switch from deprecated toLowerCase to lowercase function (#22225 by @hbiede)
  • expo-modules-core
    • [Android] Made fallbackCallback optional in the registerForActivityResult method. (#21661 by @lukmccall)
    • [iOS] Removed the legacy implementation of view managers. (#21760 by @tsapeta)
    • [iOS] Passed the app context instance down to dynamic types, object builders and convertibles. (#21819 by @tsapeta)
    • [iOS] Use jsi::WeakObject for weak objects on Hermes. (#21986 by @tsapeta)
    • [iOS] Removed legacyViewManager references from ExpoFabricView. (#22089 by @gabrieldonadel)
    • [iOS] Dropped proxiedProperties prop. (#22280 by @tsapeta)
    • Made JavaScriptValue.kind public. (#22386 by @lukmccall)
    • Updated androidx.activity:activity-ktx to 1.7.1 and androidx.fragment:fragment-ktx to 1.5.7 #22658 by @fobos531
    • [iOS] Added Interface Geometry Management section to ExpoAppDelegate. (#22599 by @behenate)
    • Changed Objective-C names for ExpoReactDelegate and ExpoReactDelegateHandler to fix issues with versioning in Expo Go. (#23229 by @tsapeta)
  • expo-screen-orientation
    • [iOS] Migrated to new modules API. (#22152 by @behenate)
    • [iOS] Refactor the singleton class to work properly in versioned code in Expo Go. (#23228 by @tsapeta)
  • expo-secure-store
    • Added automatic invalidated key handling on Android. (#22716 by @behenate)
    • Added a check for the NSFaceIDUsageDescription key in the set function. (#23275 by @alanjhughes)
  • expo-task-manager

48.0.0 — 2023-02-09

📚 3rd party library updates

🛠 Breaking changes

  • expo-contacts
    • Remove deprecated and legacy contact fields constants. (#20269 by @Simek)
  • expo-keep-awake
    • KeepAwake.activateKeepAwake has been deprecated in favor of KeepAwake.activateKeepAwakeAsync. (#15826 by @EvanBacon)
  • expo-linking
    • Removed the deprecated Linking.removeEventListener. (#20832 by @kudo)

🎉 New features

🐛 Bug fixes

  • expo-asset
    • Fix loading Metro web assets from origins other than /. (#20258 by @EvanBacon)
  • expo-av
  • expo-barcode-scanner
    • Fix import issue on case-sensitive file systems (#20141 by @hirbod)
  • expo-blur
    • Add -webkit-backdrop-filter to support blurring on Safari. (#21003 by @EvanBacon)
  • expo-clipboard
    • Fixed clipboard listener is called twice on Android. (#19723 by @lukmccall)
    • Fixed clipboard listener can crash the application during initialization on Android. (#19723 by @lukmccall)
    • Fixed the ImageFormat or the StringFormat not working in the release builds on Android. (#20155 by @lukmccall)
  • expo-constants
  • expo-camera
    • Fix import issue on case-sensitive file systems (#20141 by @hirbod)
    • Fix path where simulator saves photos (#20872 by @pettomartino)
    • Fixed Cannot set prop 'barCodeScannerSettings' on view 'class expo.modules.camera.ExpoCameraView' on Android. (#21033 by @lukmccall)
  • expo-file-system
  • expo-gl
    • Fixed build errors when testing on React Native nightly builds. (#19805 by @kudo)
    • Fixed error for duplicated META-INF files when building on Android. (#20251 by @kudo)
    • Added React Native 0.71 support. (#20470 by @kudo)
  • expo-haptics
    • Fixed rare crash on iOS when using Feedback Generator's API not on the main thread. (#19819 by @AntonGolikov)
  • expo-image-picker
  • expo-mail-composer
    • Fix composeAsync not resolving promise after sending/ discarding email. (#20869 by @keith-kurak)
  • expo-media-library
  • expo-modules-core
    • Added a list of the acceptable enum values to the conversion error on Android. (#19895 by @lukmccall)
    • Fixed new NativeEventEmitter() was called with a non-null argument without the required addListener method. warnings on Android with JSC. (#19920 by @kudo)
    • Fixed views are not correctly initialized after reloading on Android. (#20063 by @lukmccall)
    • Fixed threading crash issue when running with Hermes on iOS. (#20506 by @kudo)
    • Fixed build errors when testing on React Native nightly builds. (#19805 by @kudo)
    • Fixed failed resolution of 'java.nio.file.Path' on Android. (#20037 by @lukmccall)
    • Fixed libraries using the ViewDefinitionBuilder crashes when ProGuard or R8 is enabled on Android. (#20197 by @lukmccall)
    • Fixed Either types not supporting non-primitive types on iOS. (#20247 by @tsapeta)
    • Fixed Function not supporting certain arities on Android. (#20419 by @motiz88)
    • Added React Native 0.71 support. (#20470 by @kudo)
    • Fixed the SharedObject initializer being inaccessible due to internal protection level. (#20588 by @tsapeta)
    • Fixed boost build error on Android. (#20719 by @kudo)
    • Fix view prop setter not being called when its new value is null or undefined. (#20755 & #20766 by @tsapeta & @lukmccall) (#20755, #20766 by @tsapeta, @lukmccall)
    • Fixed "Tried to register two views with the same name" error on fast refresh. (#20788 by @tsapeta)
    • Fix crash when reloading app while expo-av video is playing. (#21118 by @janicduplessis)
  • expo-location
  • expo-print
    • Fix printAsync not reflecting custom width/ height, useMarkupFormatter option preventing custom width/ height/ margin from being reflected. (#18873 by @keith-kurak) (#20046 by)
  • expo-sensors
  • expo-web-browser

💡 Others

  • expo-asset
  • expo-application
    • On Android bump compileSdkVersion and targetSdkVersion to 33. (#20721 by @lukmccall)
  • expo-auth-session
  • expo-background-fetch
    • On Android bump compileSdkVersion and targetSdkVersion to 33. (#20721 by @lukmccall)
  • expo-av
    • On Android bump compileSdkVersion and targetSdkVersion to 33. (#20721 by @lukmccall)
  • expo-barcode-scanner
    • On Android bump compileSdkVersion and targetSdkVersion to 33. (#20721 by @lukmccall)
  • expo-branch
    • On Android bump compileSdkVersion and targetSdkVersion to 33. (#20721 by @lukmccall)
  • expo-brightness
    • Deprecate useSystemBrightnessAsync and add it as renamed restoreSystemBrightnessAsync method to avoid violating Rules of Hooks. (#19701 by @Simek)
    • On Android bump compileSdkVersion and targetSdkVersion to 33. (#20721 by @lukmccall)
  • expo-cellular
    • On Android bump compileSdkVersion and targetSdkVersion to 33. (#20721 by @lukmccall)
  • expo-calendar
    • On Android bump compileSdkVersion and targetSdkVersion to 33. (#20721 by @lukmccall)
  • expo-clipboard
    • On Android bump compileSdkVersion and targetSdkVersion to 33. (#20721 by @lukmccall)
  • expo-constants
    • On Android bump compileSdkVersion and targetSdkVersion to 33. (#20721 by @lukmccall)
  • expo-contacts
  • expo-crypto
    • On Android bump compileSdkVersion and targetSdkVersion to 33. (#20721 by @lukmccall)
  • expo-battery
    • On Android bump compileSdkVersion and targetSdkVersion to 33. (#20721 by @lukmccall)
  • expo-device
    • On Android bump compileSdkVersion and targetSdkVersion to 33. (#20721 by @lukmccall)
  • expo-document-picker
  • expo-camera
    • Use correct type for videoStabilizationMode option. (#20130 by @simek)
    • On Android bump compileSdkVersion and targetSdkVersion to 33. (#20721 by @lukmccall)
  • expo-error-recovery
    • On Android bump compileSdkVersion and targetSdkVersion to 33. (#20721 by @lukmccall)
  • expo-file-system
    • Extract nested object definitions to the separate types, which adds: DeletingOptions, InfoOptions, RelocatingOptions and MakeDirectoryOptions types. (#20103 by @Simek)
    • Simplify the way in which types are exported from the package. (#20103 by @Simek)
    • Rename UploadProgressData totalByteSent field to totalBytesSent. (#20804 by @gabrieldonadel)
    • On Android bump compileSdkVersion and targetSdkVersion to 33. (#20721 by @lukmccall)
  • expo-font
    • On Android bump compileSdkVersion and targetSdkVersion to 33. (#20721 by @lukmccall)
  • expo-face-detector
    • On Android bump compileSdkVersion and targetSdkVersion to 33. (#20721 by @lukmccall)
  • expo-gl
    • On Android bump compileSdkVersion and targetSdkVersion to 33. (#20721 by @lukmccall)
  • expo-haptics
    • On Android bump compileSdkVersion and targetSdkVersion to 33. (#20721 by @lukmccall)
  • expo-image-manipulator
    • On Android bump compileSdkVersion and targetSdkVersion to 33. (#20721 by @lukmccall)
  • expo-image-loader
    • On Android bump compileSdkVersion and targetSdkVersion to 33. (#20721 by @lukmccall)
  • expo-keep-awake
    • Define KeepAwakeOptions type, update the doc comments. (#20489 by @Simek)
    • On Android bump compileSdkVersion and targetSdkVersion to 33. (#20721 by @lukmccall)
  • expo-linear-gradient
    • On Android bump compileSdkVersion and targetSdkVersion to 33. (#20721 by @lukmccall)
  • expo-intent-launcher
    • On Android bump compileSdkVersion and targetSdkVersion to 33. (#20721 by @lukmccall)
  • expo-local-authentication
    • On Android bump compileSdkVersion and targetSdkVersion to 33. (#20721 by @lukmccall)
  • expo-linking
  • expo-image-picker
  • expo-localization
    • On Android bump compileSdkVersion and targetSdkVersion to 33. (#20721 by @lukmccall)
  • expo-mail-composer
    • On Android bump compileSdkVersion and targetSdkVersion to 33. (#20721 by @lukmccall)
  • expo-media-library
    • On Android bump compileSdkVersion and targetSdkVersion to 33. (#20721 by @lukmccall)
  • expo-modules-core
    • Exposed coroutines related packages on Android. (#19896 by @lukmccall)
    • Rephrased the message of ArgumentCastException to use ordinal numbers. (#19912 by @tsapeta)
    • [iOS] Make Enumerable protocol implement CaseIterable to get rid of operating on unsafe pointers. (#20640 by @tsapeta)
    • On Android bump compileSdkVersion and targetSdkVersion to 33. (#20721 by @lukmccall)
  • expo-location
    • On Android bump compileSdkVersion and targetSdkVersion to 33. (#20721 by @lukmccall)
  • expo-network
    • On Android bump compileSdkVersion and targetSdkVersion to 33. (#20721 by @lukmccall)
  • expo-print
    • On Android bump compileSdkVersion and targetSdkVersion to 33. (#20721 by @lukmccall)
  • expo-random
    • On Android bump compileSdkVersion and targetSdkVersion to 33. (#20721 by @lukmccall)
  • expo-permissions
    • On Android bump compileSdkVersion and targetSdkVersion to 33. (#20721 by @lukmccall)
  • expo-screen-capture
    • On Android bump compileSdkVersion and targetSdkVersion to 33. (#20721 by @lukmccall)
  • expo-notifications
    • Update getExpoPushTokenAsync to make projectId required. (#20833 by @gabrieldonadel)
    • On Android bump compileSdkVersion and targetSdkVersion to 33. (#20721 by @lukmccall)
    • Add JSDoc comments, perform type changes related to documentation autogeneration. (#21002 by @Simek)
    • Export getExpoPushTokenAsync parameter type. (#21104 by @Simek)
  • expo-sharing
    • On Android bump compileSdkVersion and targetSdkVersion to 33. (#20721 by @lukmccall)
  • expo-screen-orientation
    • On Android bump compileSdkVersion and targetSdkVersion to 33. (#20721 by @lukmccall)
  • expo-sms
    • On Android bump compileSdkVersion and targetSdkVersion to 33. (#20721 by @lukmccall)
  • expo-sensors
    • On Android bump compileSdkVersion and targetSdkVersion to 33. (#20721 by @lukmccall)
  • expo-store-review
    • On Android bump compileSdkVersion and targetSdkVersion to 33. (#20721 by @lukmccall)
  • expo-secure-store
    • On Android bump compileSdkVersion and targetSdkVersion to 33. (#20721 by @lukmccall)
  • expo-speech
    • On Android bump compileSdkVersion and targetSdkVersion to 33. (#20721 by @lukmccall)
  • expo-sqlite
    • On Android bump compileSdkVersion and targetSdkVersion to 33. (#20721 by @lukmccall)
  • expo-task-manager
    • On Android bump compileSdkVersion and targetSdkVersion to 33. (#20721 by @lukmccall)
  • expo-video-thumbnails
    • On Android bump compileSdkVersion and targetSdkVersion to 33. (#20721 by @lukmccall)
  • expo-web-browser
    • On Android bump compileSdkVersion and targetSdkVersion to 33. (#20721 by @lukmccall)
  • unimodules-app-loader
    • On Android bump compileSdkVersion and targetSdkVersion to 33. (#20721 by @lukmccall)

⚠️ Notices

  • expo-image-picker
    • Removed deprecated fields from pick result type and deprecated UIImagePickerPresentationStyle enum values. (#21078 by @Simek)
  • expo-random

47.0.0 — 2022-10-28

For changelog entries prior to SDK 47, refer to:

## 47.0.0 — 2022-10-28