Skip to content

Latest commit

 

History

History
2544 lines (2475 loc) · 318 KB

CHANGELOG.md

File metadata and controls

2544 lines (2475 loc) · 318 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

52.0.0 — 2024-11-08

📚 3rd party library updates

🛠 Breaking changes

  • unimodules-app-loader
  • expo-web-browser
  • expo-video-thumbnails
  • expo-task-manager
  • expo-store-review
  • expo-sqlite
  • expo-secure-store
  • expo-sms
  • expo-speech
  • expo-sensors
  • expo-screen-capture
  • expo-sharing
  • expo-print
  • expo-screen-orientation
  • expo-network
  • expo-notifications
  • expo-modules-core
  • expo-media-library
  • expo-mail-composer
  • expo-location
    • Remove deprecated code: geocoding using Google Maps API, old permission methods and related types. (#29961 by @Simek)
    • Bumped iOS deployment target to 15.1. (#30840, #30867 by @tsapeta)
  • expo-local-authentication
  • expo-localization
  • expo-linking
  • expo-keep-awake
  • expo-linear-gradient
    • stricter TS type of the colors prop. It now requires providing an array of least two values. Passing an empty array or an array with one value will fail to typecheck. (#27820 by @navignaw)
    • Bumped iOS and tvOS deployment target to 15.1. (#30840 by @tsapeta)
  • expo-image-manipulator
  • expo-image-picker
    • Remove READ_MEDIA_IMAGES and READ_MEDIA_VIDEO permissions. (#31902 by @aleqsio)
    • Bumped iOS deployment target to 15.1. (#30840 by @tsapeta)
    • The default value for quality option has been changed from 0.2 to 1.0 for better performance and to match the most common expectation. (#30896 by @tsapeta)
    • ImagePicker.MediaTypeOptions have been deprecated. Use a single MediaType or an array of MediaTypes instead. (#30957 by @behenate)
  • expo-gl
  • expo-face-detector
  • expo-image-loader
  • expo-haptics
  • expo-document-picker
  • expo-font
  • expo-device
  • expo-file-system
  • expo-contacts
  • expo-crypto
  • expo-constants
  • expo-clipboard
  • expo-cellular
  • expo-camera
  • expo-calendar
  • expo-brightness
  • expo-battery
  • expo-blur
  • expo-background-fetch
  • expo-av
  • expo-asset
  • expo-apple-authentication
  • expo-application

🎉 New features

  • expo-web-browser
  • expo-sqlite
  • expo-secure-store
  • expo-sensors
  • expo-network
  • expo-notifications
  • expo-modules-core
    • Added onKeyDown and onKeyLongPress to ReactActivityHandler on Android. (#28684 by @lukmccall)
    • [Android] Add support for onUserLeaveHint. (#32033 by @behenate)
    • [Web] Modules are now registered in global. (#29870 by @aleqsio)
    • [iOS] Add support for passing SharedObjects as a function parameter. (#30314 by @aleqsio)
    • Added support for startObserving and stopObserving on the web. (#28953 by @aleqsio)
    • Switched exported EventEmitter to the C++ implementation. (#28946 by @tsapeta)
    • [Android] OnStartObserving and OnStopObserving can now be attached to a specific event. (#29012 by @lukmccall)
    • [Android] Add the ability to change the name of the exported shared object. (#30040 by @lukmccall)
    • [Android] Supported returning of the SharedObject from functions. (#30426 by @lukmccall)
    • [iOS] Support implementing customizeRootView in ExpoAppDelegateSubscriber. (#30550 by @alanjhughes)
    • [Android] Added support for primitive arrays in functions. (#30657 by @lukmccall)
    • Implemented toJSON function on shared objects that includes dynamic properties defined in their prototype chain. (#30813 by @tsapeta)
    • [iOS] Added experimental support for rendering SwiftUI views. (#19888 by @tsapeta)
    • [Android] Introduced experimental converter to support a broader range of types that can be passed to the JS. (#30944 by @lukmccall)
    • [iOS] Add functions that are called before and after a shared object is removed from the registry. (#30949 by @alanjhughes)
    • [Android] Rewrite map converter to support a broader range of types that can be passed to the JS. (#31016 by @lukmccall)
    • [Android] EitherTypeConverter now can work with the Dynamic class. (#31074 by @lukmccall)
    • [iOS] Added a way to provide shared objects memory pressure to improve garbage collection of native objects retaining some heavy data. (#31168 by @tsapeta)
    • [Android] The single parameter now can be auto-cast to the list. (#31290 by @lukmccall)
    • [Android] SharedRef converter now checks the inner ref type. (#31441 by @lukmccall)
    • [Android] Added support for changing if functions are enumerable. (#31495 by @lukmccall)
    • Introduced a base class for all shared refs (expo.SharedRef). (#31513 & #31706 by @lukmccall) (#31513, #31706 by @lukmccall)
    • [Android] Add support for react-native 0.76 (#31580 by @gabrieldonadel)
    • [Android] Added onStartListeningToEvent and onStopListeningToEvent to the SharedObject. (#31385 by @lukmccall)
    • Added Apple shared app groups support. (#31519 by @kudo)
    • [Android] Added a way to provide shared objects memory pressure to improve garbage collection of native objects retaining some heavy data. (#31784 by @lukmccall)
    • Added nativeRefType to SharedRef. (#31776 by @lukmccall)
    • [Android] Added kotlin.time.Duration support. (#31858 by @lukmccall)
    • Return duration from logger timer block methods. (#31805 by @wschurman)
    • [iOS] Made CMTime from CoreMedia a convertible type. (#31967 by @tsapeta)
  • expo-media-library
    • [iOS] include more error information in native rejections (#30504 by @vonovak)
    • On Android 14+, when user gave only partial asset access, presentPermissionsPickerAsync() presents the permissions dialog to allow the user to change the selected assets. (#29882 by @vonovak)
  • expo-location
  • expo-local-authentication
  • expo-linking
  • expo-linear-gradient
  • expo-image-manipulator
    • [iOS][Web] Introduce a new API for image manipulation. (#30135, #30194 by @tsapeta)
    • [Android] Introduce a new API for image manipulation. (#30232 by @lukmccall)
    • [iOS] Added support for image refs in ImageManipulator.manipulate and useImageManipulator. (#32346 by @tsapeta)
    • [iOS][Web] Added support for image refs in ImageManipulator.manipulate and useImageManipulator. (#32346, #32354 by @tsapeta)
    • [Android] Added support for image refs in ImageManipulator.manipulate and useImageManipulator. (#32398 by @lukmccall)
  • expo-image-picker
    • [web] Include file object from input for server uploads. (#31788 by @EvanBacon)
    • [iOS] Add support for picking live photos from the library. (#30957 by @behenate)
  • expo-haptics
  • expo-font
    • Allow woff and woff2 format on iOS with the config plugin. (#30220 by @titozzz)
    • More detailed error messages for FontLoader native module rejections (#31104 by @vonovak)
    • Add getLoadedFonts() function (#30431 by @vonovak)
  • expo-device
    • [iOS] Added some missing entries for 2024 Apple devices. (#31970 by @fobos531)
  • expo-file-system
    • [expo-file-system][next] Add file permissions for expo go (#31594 by @aleqsio)
    • [expo-file-system][next] Add better error handling to delete (#31683 by @aleqsio)
    • [expo-file-system][next] Adjust copy/move functions to allow renaming folders. (#31636 by @aleqsio)
    • [expo-file-system][next] Add name property to files and directories. (#31545 by @aleqsio)
    • Add path joining in File and Directory constructors. (#31467 by @aleqsio)
    • [expo-file-system][next] Make move operation change file url. (#31544 by @aleqsio)
    • Change exists() function to a property. (#31522 by @aleqsio)
    • Add path utilities and parentDirectory, extension fields to the new file system module. (#31333 by @aleqsio)
    • Add listing directory contents to the new file system module. (#31121 by @aleqsio)
    • Add base64() new file system module. (#31357 by @aleqsio)
    • Add size and md5 properties to the new file system module. (#31301 by @aleqsio)
    • Add downloading to the new file system module. (#30841 by @aleqsio)
    • Add copying and moving files to the new file system module. (#30314 by @aleqsio)
    • Add new file system module. (#29995 by @aleqsio)
    • [iOS] Added Paths.appleSharedContainers to get the paths to the Apple App Groups shared containers. (#31525 by @IgorKhramtsov and @kudo) (#31525 by @IgorKhramtsov, @kudo)
  • expo-constants
  • expo-camera
    • Add autoFocus prop to allow setting the device focus mode. (#28650 by @alanjhughes)
    • On Android, add support for setting the aspect ratio of the camera. (#29822 by @alanjhughes)
    • Support mirroring the output of the front facing camera. (#30430 by @alanjhughes)
    • On Android, support mirroring video when using front facing camera. Control mirroring with a prop. Deprecate mirror option on takePictureAsync and recordAsync. (#30548 by @alanjhughes)
    • Support pausing and resuming the preview. (#30666 by @alanjhughes)
    • Add active prop to stop and start the camera session. Useful with navigation where the camera is can still be active on a previous screen. (#30802 by @alanjhughes)
    • Add shutterSound key to CameraPictureOptions, allowing users to disable the camera shutter sound when invoking takePictureAsync. (#31038) by @yuna5566 (#31038 by @yuna5566)
  • expo-calendar
    • Add new methods for managing events using the system-provided calendar UI (#30102 by @vonovak)
  • expo-av

🐛 Bug fixes

  • expo-web-browser
    • Add missing react-native peer dependencies for isolated modules. (#30490 by @byCedric)
  • expo-video-thumbnails
  • expo-task-manager
  • expo-store-review
    • Add missing react-native peer dependencies for isolated modules. (#30484 by @byCedric)
  • expo-sqlite
    • [Android] Reduce the number of global references to NativeStatementBinding. (#29937 by @lukmccall)
    • [iOS] Fixed <SQLiteProvider assetSource={{ assetId: require(...) }}> database always being overwrite on iOS 16 and lower. (#29945 by @kudo)
    • Fixed invalid characters for prepared statements on iOS. (#30579 by @kudo)
    • Fixed the "disk I/O error" on older Android devices. (#30718 by @kudo)
    • Add missing react and react-native peer dependencies for isolated modules. (#30483 by @byCedric)
    • Fixed build errors on iOS if other third-party libraries building with iOS system SQLite. (#30824 by @kudo)
    • Fixed build error when using incremental_installation mode in CocoaPods. (#30918 by @kudo)
    • Fixed prebuild error when app.json doesn't specify any plugin properties for expo-sqlite. (#31672 by @kudo)
    • Fixed SQLiteDatabase -> pathUtils -> SQLiteDatabase require cycle warning from metro. (#31956 by @kudo)
  • expo-secure-store
    • [iOS] Improve error message for unhandled errors (#29394 by @hassankhan)
    • [Android] Fix decryption errors after Android Auto Backup has restored expo-secure-store data. (#29943 by @behenate)
  • expo-speech
  • expo-sensors
    • [Android] Fix crash when using DeviceMotion module. (#28839 by @behenate)
    • [Android] Fixed NPE in DeviceMotionListener. (#29022 by @lukmccall)
    • Add missing react-native peer dependencies for isolated modules. (#30482 by @byCedric)
  • expo-screen-capture
    • [Android] Fix ScreenCaptureModule was crashing in the dev-client when going back to the home screen. (#29694 by @lukmccall)
    • Add missing react peer dependencies for isolated modules. (#30480 by @byCedric)
    • [Android] Fix Screen capture callback was not called on Android 14 when API methods was not being called. (#31702 by @chrfalch)
  • expo-print
    • Add missing react-native peer dependencies for isolated modules. (#30479 by @byCedric)
  • expo-screen-orientation
    • Fix bug with weak var type causing dropped events. (#28677 by @aleqsio)
    • [Android] Fixed screen orientation change listener not firing. (#28832 by @lukmccall)
    • Add missing react-native peer dependencies for isolated modules. (#30481 by @byCedric)
  • expo-network
    • [Android] Fix java.lang.IllegalArgumentException: NetworkCallback was not registered. (#30185 by @lukmccall)
    • [iOS] Fix wired ethernet connection being reported as unknown type. (#30169 by @Simek)
    • [iOS] Fix getting IP address from wired ethernet connection interfaces. (#31223 by @matt-oakes)
    • Add missing react peer dependencies for isolated modules. (#30477 by @byCedric)
  • expo-notifications
    • [Android] fix response handling when app in background or not running. (#28883 by @douglowder)
    • [Android] Correctly map response in useLastNotificationResponse hook. (#28938 by @douglowder)
    • [Android] Fix FCMv1 icons and NPE. (#29204 by @douglowder)
    • [Android] Remove unneeded logging. (#29370 by @douglowder)
    • Remove console.log line. (#29443 by @douglowder)
    • [Android] Add default channel plugin prop, restore legacy icon and color. (#29491 by @douglowder)
    • [Android] fix getLastNotificationResponseAsync. (#30301 by @douglowder)
    • [Android] Fix serialization of vibration pattern. (#30495 by @douglowder)
    • [Android] Android 11 crash when click foreground notifications. (#30207 by @GrinZero)
    • Notification's textInput content would contain placeholder instead of the actual user input (#27479 by @Victor-FT)
    • [Android] map Expo and Firebase notifications correctly. (#30615 by @douglowder)
    • useLastNotificationResponse should have only one effect. (#30653 by @douglowder)
    • [Android] Eliminate unsupported types when processing notification intents from onCreate/onNewIntent. (#30750 by @douglowder)
    • [Android] Fix content.data in scheduled notifications surfaced to JS. (#31048 by @douglowder)
    • [Android] image was missing on android when in foreground (#31405 by @vonovak)
    • [Android] fix local notifications with null trigger. (#31157 by @douglowder)
    • [Android] Take channelId into account when presenting notifications. (#31201 by @vonovak)
    • [android] fix: allow data message to control notification appearance (#32162 by @vonovak)
    • [ios] fix crash if expo-update reload happens while Notifications.requestPermissionsAsync() is showing native dialog (#32096 by @mfazekas)
    • [android] createNotificationChannel could return incorrect channel information (#32000 by @vonovak)
    • [android] fix notifications with ChannelAwareTrigger not being presented (#31999 by @vonovak)
    • export PermissionStatus as value, not as type (#31968 by @vonovak)
    • throw improved error on invalid subscription in removeNotificationSubscription (#31842 by @vonovak)
    • [android] fix notifications actions not being presented (#31795 by @vonovak)
    • Add missing react and react-native peer dependencies for isolated modules. (#30478 by @byCedric)
    • [iOS] do not overwrite existing aps entitlement. (#31892 by @douglowder)
    • fix NotificationTrigger type (#32659 by @vonovak)
  • expo-modules-core
    • Fix expo-modules-core is broken on the server side. (#28764 by @alantoa)
    • [Android] Fixed No implementation found for com.facebook.jni.HybridData expo.modules.kotlin.jni.JavaScriptModuleObject.initHybrid. (#29513 by @lukmccall)
    • Fixed reload crash on Android. (#29593 by @kudo)
    • [Android] Fixed converting from null to Record sometimes didn't work as expected. (#29508 by @lukmccall)
    • Fixed resource leakage from ExpoRequestInterceptorProtocol. (#29798 by @kudo)
    • [Android] Reduce the number of global references to JSIContext. (#29936 by @lukmccall)
    • Fixed getPathPermissions permission error for local path with spaces on iOS 16 and older. (#29958 by @kudo)
    • [iOS] Fixed broken addUIBlock and executeUIBlock on New Architecture mode. (#30030 by @kudo)
    • Fixed RCTTriggerReloadCommandListeners not found build error on iOS. (#30014 by @kudo)
    • Fixed blocking SSE responses from network interceptor on Android. (#30062 by @kudo)
    • [iOS] Fix getExternalPathPermissions returns no read/write permissions. (#30540 by @dispelpowerone)
    • Fix support for macOS. (#31307 by @gabrieldonadel)
    • [Android] Fixed RNHeadlessAppLoader class for New Architecture support. (#32146 by @chrfalch)
    • [iOS] Fix using enums as optional arguments. (#32147 by @aleqsio)
    • [Android] Change JS return type for kotlin null to be null instead of undefined. (#31301 by @aleqsio)
    • [iOS] Swift Enumerables did not correctly convert to JS values. (#30191 by @vonovak)
    • [jest] Fix uuid mock in jest-expo. (#29840 by @EvanBacon)
    • [Android] Fix error: no viable constructor or deduction guide for deduction of template arguments of 'weak_ptr' (#29075 by @rafi16jan)
    • [Android] Fix getContext().getNativeModule(UIManagerModule.class) in Bridgeless. (#29203 by @arushikesarwani94)
    • [iOS] Fix data race in PersistentFileLogSpec.swift. (#28924 by @hakonk)
    • [Android] Fix the event emitter, which might crash during the reloads. (#29176 by @lukmccall)
    • [iOS] Fix random conversion errors when converting JavaScript floating point numbers to Swift.Float. (#29053 by @behenate)
    • Fixed a crash when the event listener throws an error. (#30065 by @tsapeta)
    • [Android] Fixed the record's constructor with default parameters were being ignored when converting from JavaScript to native. (#30217 by @lukmccall)
    • [iOS] Fixed returning already registered shared objects. (#30241 by @tsapeta)
    • [Android] Provide value in getName of ModuleRegistryReadyNotifier.java (#30358 by @WoLewicki)
    • [Android] When a SharedObject that was passed as an argument is returned, it no longer creates a new object. (#30231 by @lukmccall)
    • [Android] Fixed some types weren't correctly converted when using coroutines. (#30227 by @lukmccall)
    • [Android] Fixed not throwing when setting read-only properties. (#30428 by @lukmccall)
    • [Android] Fixed expo.modules.kotlin.jni.tests.RuntimeHolder class not found crash when R8 is enabled. (#30572 by @kudo)
    • [Android] Fixed Class declares 0 type parameters, but X were provided on Android when R8 is enabled. (#30659 by @lukmccall)
    • [Android] Fixed SharedObject class names are obfuscated when R8 is enabled. (#30948 by @lukmccall)
    • [Android] Fixed CodedException.getCode() crash when R8 is enabled. (#31392 by @kudo)
    • [Android] Fixed getter for the third parameter of Either. (#31443 by @lukmccall)
    • [Android] Fixed R8 build error Missing class expo.modules.kotlin.types.ExperimentalJSTypeConverter$URIConverter. on macOS host. (#31452 by @kudo)
    • [iOS] Fixed No space left on device when saving persistent log. (#31583 by @RodolfoGS)
    • Fixed iOS reload crash on New Architecture mode. (#31789 by @kudo)
    • [iOS] Fixed views using the incorrect AppContext instance. (#31897 by @lukmccall)
    • [iOS] Fixed crashes on the New Architecture when dispatching events during the props update. (#31971 by @tsapeta)
    • Fixed registerAdditionalModuleClasses deadlock issue on old architecture mode. (#32209 by @kudo)
    • [iOS] Removed window synthesis in EXAppDelegateWrapper to fix crashes caused by deallocated RCTFabricSurface. (#32233 by @tsapeta)
    • [iOS] Fix optionals conversion. (#32239 by @aleqsio)
    • Fixed retain cycle for ExpoRequestCdpInterceptor. (#32289 by @kudo)
    • Fixed updating props on SwiftUI views on the New Architecture. (#32381 by @tsapeta)
    • Fixed build error when use_frameworks!. (#32358 by @kudo)
    • [iOS] Fixed broken self-signed connections from network inspector. (#32670 by @kudo)
  • expo-media-library
    • On iOS, add back image loader to handle ph:// and assets-library:// schemes. (#29747 by @alanjhughes)
    • On iOS, getAssets crashed when result was is empty (#29969 by @vonovak)
    • On Android, throw an error when deleting an asset was unsuccessful. (#29777 by @mathieupost)
    • Add missing react-native peer dependencies for isolated modules. (#30476 by @byCedric)
    • On Android, adding an asset to an album containing another album would throw an exception. (#29777 by @nafeij) (#31027 by @Nafeij)
    • [Android] Fix exceptions when moving or deleting video assets. (#31424 by @behenate)
    • [iOS] Fixes asset types not returned correctly. (#32621 by @aleqsio)
  • expo-location
    • On iOS, fix an issue where if the user selects "Allow Once" for location permissions, we needed to request background permissions twice because the first time had effect. (#29272 by @alanjhughes)
  • expo-local-authentication
    • [iOS] isEnrolledAsync() returns correct value when biometry is locked out. (#30565 by @vonovak)
    • [Android] Fix authenticateAsync crash when disableDeviceFallback is true. (#32076 by @dcangulo)
  • expo-localization
    • Fix invalid regionCode response on iOS. (#32081 by @aleqsio)
    • Add missing react peer dependencies for isolated modules. (#30474 by @byCedric)
    • Only import from expo/config to follow proper dependency chains. (#30501 by @byCedric)
    • Only import from expo/config-plugins to follow proper dependency chains. (#30499 by @byCedric)
  • expo-linking
  • expo-keep-awake
    • Stop useKeepAwake calls deactivating each other by default. (#28884 by @macksal)
    • Add missing react peer dependencies for isolated modules. (#30470 by @byCedric)
  • expo-linear-gradient
    • Add missing react and react-native peer dependencies for isolated modules. (#30471 by @byCedric)
  • expo-image-manipulator
    • On iOS correctly handle urls coming from the users photo library. (#28777 by @alanjhughes)
  • expo-image-picker
    • [Android] Add support for granular permissions. (#28897 by @lukmccall)
    • Support removing microphone permissions through config plugin. (#29749 by @alanjhughes)
    • [iOS] Fix an issue where the app will crash when using the popover presentation style on iPad. (#29892 by @alanjhughes)
    • [iOS] Provide more image metadata in the result object. (#29648 by @vonovak)
    • Only import from expo/config-plugins to follow proper dependency chains. (#30499 by @byCedric)
    • [web] Return missing values from video selection. (#30966 by @entiendoNull)
    • [Android] Fix permissions on devices running Android 11 and 12. (#31396 by @alanjhughes)
    • Fix incorrect width/height reported with EXIF tags 5 and 7 (#32534 by @gaearon)
  • expo-gl
    • Add NULL check before releasing textureRef in EXGLCameraObject. (#29092 by @hakonk)
    • Add missing react and react-native peer dependencies for isolated modules. (#30468 by @byCedric)
    • Add missing react-native-web optional peer dependency for isolated modules. (#30689 by @byCedric)
    • Converted the native view from Objective-C to Swift to fix support for the New Architecture. (#32675 by @tsapeta)
  • expo-document-picker
  • expo-font
    • Fixed some vector icons not rendering correctly. (#28747 by @tsapeta)
    • [iOS] Fix font registration failing when font was in use. (#28989 by @aleqsio)
    • On iOS, store the font postscriptName instead of fullName which is what iOS will use to register the font. (#29502 by @alanjhughes)
    • On iOS, fix issues where fonts were removed when the app is backgrounded. (#30400 by @alanjhughes)
    • Fix support for macOS. (#31307 by @gabrieldonadel)
    • useFonts could previously attempt to set state on an unmounted component (#31143 by @vonovak)
    • On iOS loadAsync() will reject if font loading fails. (#31053 by @vonovak)
    • Add missing react peer dependencies for isolated modules. (#30467 by @byCedric)
    • Only import from expo/config to follow proper dependency chains. (#30501 by @byCedric)
  • expo-file-system
    • [iOS] fix: getFreeDiskStorageAsync returns result that's closer to the value reported by the system. (#29732 by @vonovak)
    • Add NULL check before dereferencing pointer to error pointer in EXFileSystemAssetLibraryHandler. (#29091 by @hakonk)
    • Add missing react-native peer dependencies for isolated modules. (#30466 by @byCedric)
    • [expo-file-system][next] Fix download function throwing an unexpected error if destination already exists. (#32626 by @aleqsio)
  • expo-contacts
    • Fixed an issue on iOS with presentFormAsync where dates were not displayed. (#31780 by @mlecoq)
    • Fixed an iOS issue where the contact's birthday isn't displayed when the year is set. (#31948 by @chrfalch)
    • Fixed an Android issue where creating a contact with a birthday was not saved. (#30131 by @Eric013)
    • Fixed an issue on android where phone number and email labels were ignored on contact creation. (#31309 by @mlecoq)
    • Fixed an issue where the requestPermissionsAsync promise throws when denying access to contacts on iOS. (#29529 by @jp1987)
    • Fixed an issue where the presentFormAsync promise doesn't resolve when the form is closed on Android. (#29201 by @jp1987)
    • Fixed an issue where the presentContactPickerAsync promise doesn't resolve when using the Android back button. (#29202 by @jp1987)
    • Fixed an issue where only paths of urls were stored in contacts and social profiles were only stored when all fields were filled. (#29199 by @mlecoq)
    • Fixed an iOS issue where the Cancel button is not visible on the unknown contact form. (#29555 by @Tug)
    • Add missing react-native peer dependencies for isolated modules. (#30465 by @byCedric)
    • [Android] Fix ContactQuery id field not accepting arrays. (#32651 by @behenate)
  • expo-constants
    • Source env when creating app config. (#29099 by @brentvatne)
    • Add missing react-native peer dependencies for isolated modules. (#30464 by @byCedric)
    • Only import from expo/config to follow proper dependency chains. (#30501 by @byCedric)
  • expo-clipboard
    • [iOS] fix ClipboardPasteButton asking for paste permission (#30623 by @vonovak)
    • Fixed issue when copying PNG images on Android. (#29629 by @weslley75)
    • Add missing react/react-native peer dependencies for isolated modules. (#30463 by @byCedric)
  • expo-cellular
  • expo-camera
  • expo-calendar
    • On iOS, workaround a bug in iOS 15 where an invalid EKCalendarType is returned in the calendar object when siri suggestions are enabled. (#28714 by @alanjhughes)
    • [iOS] Fix missing event info on update. (#28825 by @robertying)
    • Standardize getEventsAsync to return events sorted by start date (#28353 by @demfabris)
    • Add missing react-native peer dependencies for isolated modules. (#30461 by @byCedric)
    • Initialize EKEventStore as a singleton (#31847 by @JacquesLeupin)
  • expo-brightness
    • Add missing react-native peer dependencies for isolated modules. (#30460 by @byCedric)
  • expo-battery
    • Add missing react peer dependencies for isolated modules. (#30458 by @byCedric)
  • expo-blur
    • Add missing react and react-native peer dependencies for isolated modules. (#30459 by @byCedric)
  • expo-auth-session
  • expo-av
    • [Android] Fix events being sent using a wrong event emitter. (#28716 by @behenate)
    • [Web] Fix shouldCorrectPitch being ignored on web. (#28837 by @behenate)
    • [iOS] Fixed broken Video view on New Architecture mode. (#30030 by @kudo)
    • [iOS] loadAsync() promise never settled when given an invalid file uri (#30020 by @vonovak)
    • Fixed putting app to background stops non-mixable audio playback in other apps on iOS (#20380 by @de1acr0ix)
    • Fix unhandled promise rejection when start recording fails #29826 by @anirudhsama
    • Add missing react and react-native peer dependencies for isolated modules. (#30456 by @byCedric)
    • Add missing react-native-web optional peer dependency for isolated modules. (#30689 by @byCedric)
    • [Android] Fixed NullPointerException in the installJSIBindings function. (#31464 by @lukmccall)
    • [Android] Fixed crash when reloading an expo update with a video component mounted (#31540 by @AbijahKaj)
  • expo-asset
    • Fixed PlatformUtils.ts to have the correct export placeholders for react-native-web (#29791 by @Bram-dc)
    • Add missing react and react-native peer dependencies for isolated modules. (#30454 by @byCedric)
    • Add missing dependencies and follow proper dependency chains. (#30500 by @byCedric)
  • expo-apple-authentication

💡 Others

  • expo-web-browser
  • expo-video-thumbnails
    • [Android] Made sure that MediaMetadataRetriever is safely released. (#29015 by @lukmccall)
  • expo-task-manager
    • Keep using the legacy event emitter as the module is not fully migrated to Expo Modules API. (#28946 by @tsapeta)
    • [android] Added implementation in package to look up TaskService instance from expo-modules-core (#32300 by @chrfalch)
    • Correct the return type of TaskManagerTaskExecutor. (#32557 by @Simek)
  • expo-store-review
  • expo-sqlite
    • Removed redundant usage of EventEmitter instance. (#28946 by @tsapeta)
    • Replaced @testing-library/react-hooks with @testing-library/react-native. (#30742 by @byCedric)
    • Align web implementation exports as native to support DOM components when using @expo/dom-webview. (#31662 by @kudo)
    • Deprecated enableCRSQLite and show a warning if using this option. (#32117 by @kudo)
    • Renamed expo-sqlite/async-storage to expo-sqlite/kv-store. (#32699 by @kudo)
  • expo-secure-store
  • expo-sms
  • expo-speech
  • expo-sensors
    • Add timestamps to relevant sensor events. (#28761 by @jkaufman)
    • Fix incorrect event emitting tests. (#28953 by @aleqsio)
    • Removed redundant usage of EventEmitter instance. (#28946 by @tsapeta)
    • [Android] Remove usage of deprecated internal modules API. (#28715 by @lukmccall)
    • [iOS] Fix pedometer sensor when app goes to background then foreground. ([#29957]expo#29957) by @rlods)
  • expo-screen-capture
    • Removed redundant usage of EventEmitter instance. (#28946 by @tsapeta)
    • Updated hook from useScreenCapturePermissions to usePermissions in the example. (#30076 by @mrakesh0608)
    • Standardized Babel configuration to use expo-module-scripts. (#31915 by @reichhartd)
  • expo-screen-orientation
  • expo-notifications
  • expo-modules-core
    • [iOS] Refactored ExpoFabricView and remove the view wrapper for each native component. (#28829 by @kudo)
    • [iOS] Exposed Utilities class for Expo Modules common tasks. (#29945 by @kudo)
    • [iOS] Added customizeRootView: support to EXAppDelegateWrapper.createRCTRootViewFactory. (#30245 by @kudo)
    • Added documentation links to Record and Field implementations (#31997 by @vonovak)
    • Remove web hydration process.env type. (#31267 by @EvanBacon)
    • Added an async extension for OkHttp requests. (#30841 by @aleqsio)
    • Change sideEffects to use src folder. (#29964 by @EvanBacon)
    • [web] Use global crypto object for UUID. (#29828 by @EvanBacon)
    • [iOS] Send open url event to all matching subscribers. (#29645 by @aleqsio)
    • Use process.env.EXPO_OS for Platform.OS and Platform.select, when available. (#29429 by @EvanBacon)
    • [Android] Removed unneeded in-between function call when resolving promise without arguments. (#28944 by @lukmccall)
    • Exported some TypeScript declarations (e.g. EventEmitter) from expo-modules-core/types. (#28994 by @tsapeta)
    • [Android] Switch to the JS thread when sending an event. (#29753 by @lukmccall)
    • Moved process object declaration to global declaration. (#29745 by @tsapeta)
    • Use the src folder as the Metro target. (#29702 by @tsapeta)
    • Make it possible for TypeScript to infer EventEmitter's events map. (#29056 by @tsapeta)
    • [iOS] Stop throwing runtime errors when the promise is settled more than once. (#30000 by @tsapeta)
    • [iOS] Renamed pointer property in the SharedRef class to ref for parity with Android. (#30061 by @tsapeta)
    • [Android] Started using noexcept. (#30128 by @lukmccall)
    • [Android] Decouple the modules state from the AppContext (#30098 by @lukmccall)
    • Bumped Kotlin version to 1.9.24. (#30199 by @gabrieldonadel)
    • [Android] Bump Kotlin coroutines version to 1.7.3. (#30226 by @lukmccall)
    • [Android] Limit the number of "Current Activity is of incorrect class" log entries. (#30427 by @lukmccall)
    • [iOS] Refactor and expose URLSessionSessionDelegateProxy class. (#30173 by @kudo)
    • [Android] Supports passing Accept: text/event-stream header to bypass streaming requests from ExpoNetworkInspectOkHttpInterceptors. (#30219 by @kudo)
    • Replaced @testing-library/react-hooks with @testing-library/react-native. (#30742 by @byCedric)
    • Cleaned up the podspec and replaced RN_FABRIC_ENABLED flag with RCT_NEW_ARCH_ENABLED. (#31044 by @tsapeta)
    • JS values are now used directly instead of using shared pointers to improve the overall performance. (#31219 by @tsapeta)
    • [iOS] Use singletons for string and data dynamic types. (#31220 by @tsapeta)
    • [iOS] Fixed a bottleneck in the performance-critical code by getting away from enumerated function. (#31226 by @tsapeta)
    • [Android] Cached argument's type information to improve memory and startup time. (#31297 by @lukmccall)
    • [iOS] Make func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) open. (#31398 by @abulenok)
    • [Android] Expose RuntimeContext.eval() as JavaScriptRuntime.eval() on iOS. (#31445 by @kudo)
    • Removed all NativeModulesProxy occurrences. (#31496 by @reichhartd)
    • Align web implementation exports as native to support DOM components when using @expo/dom-webview. (#31662 by @kudo)
    • Removed expo_patch_react_imports! and align more stardard react-native project layout. (#31700 by @kudo)
    • Removed deprecated code for react-native 0.74.0. (#31740 by @kudo)
    • [Android] Improve error messages when converting the Either type. (#31787 by @lukmccall)
    • [iOS] Improved converting function results. (#31827 by @tsapeta)
    • [iOS] Disabled ExpoView recycling from the New Architecture. (#31841 by @tsapeta)
    • [Android] Renamed SharedObject.deallocate to SharedObject.sharedObjectDidRelease. (#31921 by @lukmccall)
    • [Android] Throws a descriptive error when trying to use a released SharedObject. (#31922 by @lukmccall)
    • Include error cause message in logger (#31929, #31953 by @wschurman)
    • [Android] Started using view's event dispatchers with the surfaceId. (#32227 by @lukmccall)
    • [android] Add enum event support to OnStartObserving and OnStopObserving. (#32251, #32287 by @wschurman)
    • Added a new dynamic type dedicated for Either types. (#32328 by @tsapeta)
    • [Android] Added shouldUseAndroidLayout flag to ExpoView. (#32446 by @lukmccall)
    • [android] Added helper for looking up TaskService instance used by expo-task-manager (#32300 by @chrfalch)
    • Made TypeScript declaration for process an interface. (#32464 by @tsapeta)
    • [Android] Fix ClassCastException in headless app loader under the old architecture. (#32390 by @robertying)
  • expo-media-library
    • Removed redundant usage of EventEmitter instance. (#28946 by @tsapeta)
  • expo-location
    • Added warning when using background location in Expo Go. (#31461 by @chrfalch)
    • Keep using the legacy event emitter as the module is not fully migrated to Expo Modules API. (#28946 by @tsapeta)
    • Rework package exports. (#29953 by @Simek)
    • Updated documentation for default LocationAccuracy (#31066 by @johnculviner)
  • expo-localization
    • Removed redundant usage of EventEmitter instance. (#28946 by @tsapeta)
  • expo-linking
    • Standardized Babel configuration to use expo-module-scripts. (#31915 by @reichhartd)
  • expo-keep-awake
    • Use EventSubscription type instead of Subscription. (#28946 by @tsapeta)
    • Replaced @testing-library/react-hooks with @testing-library/react-native. (#30742 by @byCedric)
  • expo-image-manipulator
  • expo-image-picker
    • Refactored the code on iOS and made promise resolution faster. (#30896 by @tsapeta)
  • expo-gl
  • expo-haptics
    • Align web implementation exports as native to support DOM components when using @expo/dom-webview. (#31662 by @kudo)
    • Fixed bundling error on Web. (#32183 by @kudo)
  • expo-font
  • expo-file-system
    • [iOS] Validate folder/file type when operating on File/Folder instances in the new FS module. (#31316 by @aleqsio)
    • Use the src folder as the Metro target. (#31234 by @aleqsio)
    • Removed redundant usage of EventEmitter instance. (#28946 by @tsapeta)
  • expo-contacts
  • expo-constants
  • expo-clipboard
    • Removed redundant usage of EventEmitter instance. (#28946 by @tsapeta)
    • Standardized Babel configuration to use expo-module-scripts. (#31915 by @reichhartd)
  • expo-cellular
  • expo-camera
  • expo-brightness
    • Removed redundant usage of EventEmitter instance. (#28946 by @tsapeta)
  • expo-battery
    • Removed redundant usage of EventEmitter instance. (#28946 by @tsapeta)
  • expo-auth-session
    • Add basic support for using in API routes. (#31480 by @EvanBacon)
    • Use getRandomValues from expo-crypto (#22608 by @LinusU)
    • Add a standard main package entry point (index.ts). (#28970 by @Simek)
    • Prefer using type for describing the shape of objects. (#28970 by @Simek)
    • Standardized Babel configuration to use expo-module-scripts. (#31915 by @reichhartd)
  • expo-av
    • Keep using the legacy event emitter as the module is not fully migrated to Expo Modules API. (#28946 by @tsapeta)
    • Added deprecation warning to the Video component. (#32267 by @tsapeta)
  • expo-asset
    • Pin @react-native subpackage versions to 0.74.83. (#29441 by @kudo)
    • Removed @react-native/assets-registry dependency. (#29541 by @kudo)
    • Remove unused pathJoin function. (#29963 by @EvanBacon)
    • Replaced @testing-library/react-hooks with @testing-library/react-native. (#30742 by @byCedric)
  • expo-apple-authentication

⚠️ Notices

51.0.0 — 2024-05-07

🛠 Breaking changes

  • expo-auth-session
  • expo-barcode-scanner
    • expo-barcode-scanner is now deprecated. Please use expo-camera instead. (#26025 by @alanjhughes)
  • expo-constants
    • Remove deprecated installationId, isDevice, nativeAppVersion, nativeBuildVersion, platform.platform, platform.systemVersion, platform.userInterfaceIdiom properties. (#26329 by @aleqsio)
  • expo-face-detector
  • expo-location
    • [Web] getPermissionsAsync no longer prompts the user for permission instead we use the new browser API navigator.permissions.query to check the permission status. (#26836 by @hems) (#26837 by @hems)
  • expo-local-authentication
    • SecurityLevel.BIOMETRIC has been deprecated in favour of SecurityLevel.BIOMETRIC_STRONG and SecurityLevel.BIOMETRIC_WEAK. Using SecurityLevel.BIOMETRIC might lead to unexpected behaviour. (#26768 by @behenate)
  • expo-modules-core
  • expo-sms
    • [web] sendSMSAsync now throws error code ERR_UNAVAILABLE instead of E_SMS_UNAVAILABLE. (#27437 by @EvanBacon)
  • expo-sqlite
    • Refactor expo-sqlite/next API to be more React idiomatic. (#25657 by @kudo)
    • Moved the previous default export as expo-sqlite/legacy and promoted expo-sqlite/next as the default. expo-sqlite/next import is still as-is for backward compatibility. (#28278 by @kudo)

🎉 New features

  • expo-barcode-scanner
    • BarCodeScannerResult now returns an additional raw field corresponding to the barcode value as it was encoded in the barcode without parsing. Will always be undefined on iOS. (#25391 by @ajacquierbret)
  • expo-blur
  • expo-asset
  • expo-camera
    • BarCodeAnalyzer now passes an additional raw field to its onComplete callback, corresponding to the barcode value as it was encoded in the barcode without parsing. Will always be undefined on iOS. (#25391 by @ajacquierbret)
    • Add ability to disable permissions in config plugin by passing false instead of permission messages. (#28107 by @EvanBacon)
    • Add pictureSize prop to CameraView component. (#27664 by @alanjhughes)
    • Allow user to remove NSMicrophoneUsageDescription and ignore the mute prop if they don't intend to use video. (#28156 by @alanjhughes)
    • Add animateShutter prop to provide feedback when a picture is taken. Also added shutter sound on android. (#28211 by @alanjhughes)
    • Support scanning barcodes from a provided image URL. (#28445 by @alanjhughes)
  • expo-constants
  • expo-crypto
  • expo-contacts
    • It is now possible to select contacts using OS-provided native contact pickers. (#27541 by @fobos531)
  • expo-font
    • Added support for macOS platform. (#26242 by @tsapeta)
    • [iOS] The native module has been simplified and rewritten to Swift. (#26380 by @tsapeta)
  • expo-file-system
  • expo-haptics
  • expo-image-picker
    • Add ability to disable permissions in config plugin by passing false instead of permission messages. (#28107 by @EvanBacon)
    • Add new legacy option to ImagePickerOptions to allow using the legacy image picker on android. (#28514 by @alanjhughes)
  • expo-image-manipulator
  • expo-linear-gradient
  • expo-keep-awake
  • expo-location
  • expo-localization
    • Added a forcesRTL manifest flag for forcing RTL to be on. (#28129 by @aleqsio)
  • expo-local-authentication
    • [Android] Add support for weak and strong biometric authentication. (#26768 by @behenate)
  • expo-network
  • expo-modules-core
    • Added support for returning shared refs from async functions. (#26341 by @aleqsio)
    • Added support for macOS platform. (#26186 by @tsapeta)
    • Add Date type converter. (#26148 by @alanjhughes)
    • Add timer capability to Logger. (#26454, #26477 by @wschurman)
    • Add iOS support for PlatformColor and DynamicColorIOS color props. (#26724 by @dlindenkreuz)
    • BarCodeScannerResult interface now declares an additional raw field corresponding to the barcode value as it was encoded in the barcode without parsing. Will always be undefined on iOS. (#25391 by @ajacquierbret)
    • [Web] Add createWebModule function to wrap web functionality with the NativeModule class. (#27739 by @aleqsio)
    • [Web] Add web implementations of event emitter and stubs of shared objects and native modules. (#27595 by @aleqsio)
    • Mark React client components with "use client" directives. (#27300 by @EvanBacon)
    • [iOS] Added basic filesystem module to decouple expo-file-system from other packages. (#27069 by @aleqsio)
    • [Android] Added syntactic sugar for defining a prop group. (#27004 by @lukmccall)
    • Introduced a base class for all shared objects (expo.SharedObject) with a simple mechanism to release native pointer from JS. (#27038 by @tsapeta & #27331 by @lukmccall) (#27038, #27331 by @tsapeta, @lukmccall)
    • [iOS] Added native implementation of the JS EventEmitter. (#27092 by @tsapeta)
    • [iOS] Allow for the export of views that conform to AnyExpoView (#27284 by @dominicstop)
    • [iOS] Added support for bridgeless mode in React Native 0.74 (#27242, #27289, #27531 by @tsapeta)
    • [iOS] Implemented sending events from native shared objects. (#27333 by @tsapeta)
    • Added support for startObserving and stopObserving in the new EventEmitter class. (#27393 by @tsapeta)
    • [Android] Implemented sending events from native shared objects. (#27523 by @lukmccall)
    • JS object of the native module is now an instance of the NativeModule class that inherits from EventEmitter. (#27510 by @tsapeta)
    • [iOS] Exposed a function on the runtime to schedule some work with synchronized access to JS. (#27567 by @tsapeta)
    • [iOS] OnStartObserving and OnStopObserving can now be attached to a specific event. (#27766 by @tsapeta)
    • [iOS] Provide Exception.code to JavaScript (as Error.code) for all types of functions. (#27960 by @cltnschlosser)
    • Introduced the reloadAppAsync to reload the app. (#28400 by @kudo)
  • expo-media-library
    • [Android] Add support for allowing access permissions to only selected photos. (#27749 by @behenate)
    • [Android] Add support for granular permissions. (#27729 by @behenate)
  • expo-screen-capture
    • Added getPermissionsAsync and requestPermissionsAsync methods. (#25849 by @behenate)
  • expo-secure-store
    • Add ability to disable permissions in config plugin by passing false instead of permission messages. (#28107 by @EvanBacon)
    • Add canUseBiometricAuthentication function. (#26767 by @behenate)
  • expo-store-review
    • StoreReview.isAvailableAsync() on iOS now resolves to false for apps distributed through TestFlight. (#25900 by @gabrieldonadel)
  • expo-sqlite
    • Added SQLiteStatement.executeForRawResultAsync() in expo-sqlite/next API which returns array based raw values than key-value based row value. (#26073 by @kudo)
    • [Android] Added expo.sqlite.customBuildFlags gradle property to support custom sqlite3 building flags. (#27385 by @kudo)
    • Added serializeAsync() and deserializeDatabaseAsync() to serialze and deserialize databases. (#27422 by @kudo)
    • Added SQLiteProvider.assetSource to import an existing database from assets. (#28291 by @kudo)
    • Bumped SQLite version to 3.45.3 and enabled the bytecodevtab feature. (#28358 by @kudo)

🐛 Bug fixes

  • expo-av
    • [Android] Add Events to AVModule to prevent event emitter warning. (#26434 by @alanjhughes)
    • [iOS] Improve precision for syncing two videos and updating new video position when user sets tolerances to 0 (#26018 by @jpudysz)
    • Tried to fix unused recording permission and getting rejected by store review. (#28236 by @kudo)
    • [Android] Fix recording audio on Android after converting to Expo Modules (#26657 by @jpudysz)
    • [Android] Fix memory leak connect with AVManager. (#28159 by @lukmccall)
    • [Android] Fix HashMap cannot be cast to ReadableNativeMap error on Android. (#28317 by @lukmccall)
  • expo-blur
  • expo-asset
    • Fix relative URLs and support for unstable_path in development. (#26084 by @EvanBacon)
    • Fixed "Tried to resolve a promise more than once" crash on iOS. (#27672 by @kudo)
    • Fix TypeError: (0, _ExpoAsset.downloadAsync) is not a function when loading assets using Expo Web. (#28405 by @jamiees2)
    • Fixed downloadAsync() does not support Android resources from release builds. (#28604 by @kudo)
  • expo-calendar
    • [iOS] Don't check calendar permissions for saving reminders, and fix missing details when saving calendar events. (#28265 by @robertying)
    • Fix the problem that stringifyDateValues is not compatible with simple type arrays. (#27147 by @XHFkindergarten)
  • expo-camera
    • Fix naming of web files. (#26505 by @alanjhughes)
    • On iOS, barcode types were not converted correctly causing the scanner to not start immediately. (#26704 by @alanjhughes)
    • On iOS, fix maxDuration timescale on videos. (#26882 by @alanjhughes)
    • Set a higher resolution for barcode scans to allow scanning of high resolution barcodes. (#26886) by @byudaniel) (#26886 by @byudaniel) (#26886, #26886 by @byudaniel, @byudaniel)
    • Fix barcode types casing errors. (#26888 by @byudaniel)
    • On Android, fix the camera not being released when the view is destroyed. (#27086 by @alanjhughes)
    • On iOS, fix the orientation value in onResponsiveOrientationChanged when exif is set to true. (#27314 by @alanjhughes)
    • On Android, fix empty qualities being passed to QualitySelector (#27126 by @leonhh)
    • On web, prevent creating a webworker when rendering on the server (#27222 by @marklawlor)
    • On iOS, fix method call on an optional variable. (#27235 by @alanjhughes)
    • Fix scanned frame bounds when scanning a barcode. (#27207 by @tamagokun)
    • Fix incorrect prop name flash being passed to native. (#27394 by @alanjhughes)
    • Ensure mute prop is passed to native so it is correctly initialiased even when not provided from JS. (#27546 by @alanjhughes)
    • On iOS, fix camera orientation on initial render. (#27545 by @alanjhughes)
    • On iOS, fix an issue where the configuration can be interuppted when the dev menu is presented on intial launch. (#27572 by @alanjhughes)
    • On iOS, fix getAvailablePictureSizes in the legacy package. (#27642 by @alanjhughes)
    • Allow users using xcode 14 to still build when including camera. (#27873 by @alanjhughes)
    • Fix an issue where the permission functions were being imported from the wrong file. (#27988 by @alanjhughes)
    • Fix an issue on iOS where the barcode types did not match the typescript representation. Also enabled scanning upc_a codes on iOS. (#28233 by @alanjhughes)
    • On iOS, fixed regression where recording a video captures dark frames. Reduced frequency of camera initialization. (#28427 by @alanjhughes)
  • expo-constants
  • expo-contacts
    • Fixed an issue where contacts could not be edited on either platform. (#27703 by @alanjhughes)
  • expo-device
  • expo-font
  • expo-file-system
  • expo-gl
  • expo-image-picker
    • On Android fileSize was named filesize which did not match the docs & typescript definition. (#27293 by @WookieFPV) (#27293 by @wookieFPV)
    • Fixed an issue where cropped images were not returning file size and file name on Android. (#28352 by @fobos531)
    • Fixed type exports for isolatedModules option in typescript (#28499 by @megacherry)
    • On Android, fixed an issue where multiple pickers could be opened, causing a crash. (#28509 by @haileyok)
  • expo-intent-launcher
    • On Android, intent number extras are converted to double. However, it must be int. (#26164 by @Alperengozum)
  • expo-location
    • [Android] Fix the module requiring the expo-task-manager module for methods that don't use it. (#26200 by @behenate)
    • [Android] Fixed: NullPointerException: it must not be null. (#26688 by @lukmccall)
    • On Android, prevent location service from starting when permission is not in the manifest. (#27355 by @alanjhughes)
  • expo-localization
    • [iOS] Add privacy manifest describing required reason API usage. (#27770 by @aleqsio)
    • [Android] Fix es-419 locale returning empty list. (#27250 by @aleqsio)
  • expo-modules-core
    • [Android] Fixed OnCreate was called before the React instance was ready. (#25866 by @lukmccall)
    • [iOS] Fixed SharedObjectRegistry crash for accessing internal data structures from multi-threads. (#25997 by @kudo)
    • Fixed splash screen view flickering in dark mode on iOS. (#26015, #26029 by @kudo)
    • Fixed SharedObject leakage on Android. (#25995 by @kudo)
    • Adjust proguard rules to prevent issues with types implementing Enumerable. (#26108 by @alanjhughes)
    • Fix proguard rules so Serializable types are not obfuscated. (#26545 by @alanjhughes)
    • [Android] Thrown an exception when nested types can't be converted instead of crashing the app. (#27449 by @lukmccall)
    • [Android] Ensured that onCreate before OnActivityEntersForeground event. (#26944 by @lukmccall)
    • [Android] Fixed activity contract registration after host destruction. (#26881 by @lukmccall)
    • Fixed breaking changes from React-Native 0.74. (#26357 by @kudo)
    • Fixed breaking changes from React-Native 0.74. (#26357, #26587 by @kudo)
    • [Android] Unit converter now ignores nullability. It will always return unit regardless of whether the input value is null or not. (#27591 by @lukmccall)
    • Fixed RCTHost is not retained on iOS bridgeless mode. (#27715 by @kudo)
    • Fixed errors on Android when running on bridgeless mode. (#27725 by @kudo)
    • Fixed breaking changes from React Native 0.75. (#27773 by @kudo)
    • Fixed crash from reloading on iOS and bridgeless mode. (#27928 by @kudo)
    • Fixed SharedRef class names are obfuscated when R8 is enabled. (#27965 by @kudo)
    • [iOS] Fix recreateRootViewWithBundleURL parameters. (#27989 by @gabrieldonadel)
    • Fixed ExpoBridgeModule.installModules() is broken on Android and bridgeless mode. (#28065 by @kudo)
    • [Android] Fixed segfaults in expo::MethodMetadata::convertJSIArgsToJNI. (#28163 by @lukmccall)
    • Fixed random TypeError: Cannot read property 'NativeModule' of undefined exceptions on Android. (#28200 by @kudo)
    • Fixed white screen flickering when using expo-updates with longer fallbackToCacheTimeout. (#28227 by @kudo)
    • [iOS] Fixed random crashes when reloads and EXJavaScriptObject accesses to dangling pointers. (#28262 by @kudo)
    • Fixed AppContext.onHostResume() sometimes getting null currentActivity on Android. (#28338 by @kudo)
    • Fixed backward compatibility in the build.gradle from third party Expo modules. (#28359 by @kudo)
    • [Android] Fixes SEGFAULTs caused by std::shared_ptr<JavaCalllback::CallbackContext>::__on_zero_shared. (#28483 by @lukmccall)
    • [Android] Fixed gziped payload does not correctly shown in network inspector. (#28486 by @kudo)
    • [Android] Fixed crashes during the deallocation of shared objects. (#28491 by @lukmccall)
    • [iOS] Fix accessing the view registry to avoid infinite loop crash. (#28531 by @tsapeta)
    • [Android] Fix field operation on NULL object when reloading the app. (#28555 by @lukmccall)
    • Fixed building error when use_frameworks on new architecture. (#28451 by @kudo)
  • expo-media-library
  • expo-notifications
    • [Android] Fix expo-notifications requiring the expo-task-manager module to start. (#26227 by @behenate)
    • Throw UnavailabilityError when trying to use setNotificationCategoryAsync on web. (#26511 by @marklawlor)
    • Remove .native hardcoded platform imports (#26511 by @marklawlor)
    • On Android, added events to module definition to clear warnings. (#26654 by @alanjhughes)
    • [Android] Fix notifications events were using an incorrect event emitter. (#28207 by @lukmccall)
  • expo-screen-capture
  • expo-screen-orientation
  • expo-sensors
    • On Android, add event name to definition in the DeviceMotionModule. (#26679 by @alanjhughes)
    • Prevent unnecessary permissions check when moving app to background (Would crash with certain configs). (#28045 by @cltnschlosser)
    • Fix barometer updates not starting on iOS 17.4. (#28253 by @alanjhughes)
  • expo-store-review
    • fixes incorrect scene when multiple windowscenes opened, while requesting a review. (#28577 by @dylancom)
  • expo-task-manager
    • On Android, added events to module definition to clear warnings. (#26654 by @alanjhughes)
  • expo-sqlite
    • Fixed NativeStatementBinding leakage on Android. (#25996 by @kudo)
    • Fixed building error on Windows. (#26296 by @kudo)
    • Fixed a write query being executed twice when using SQLiteDatabase.getAllAsync() in expo-sqlite/next API. (#26344 by @kudo)
    • Fixed expo-sqlite/next cannot be imported from an ESM project. (#27423 by @kudo)
    • Enabled FTS and FTS5 for SQLite. (#27738 by @kudo)
    • Fixed NullPointerException on Android when opening the same database multiple times. (#27748 by @kudo)
  • expo-video-thumbnails
    • [Android] Enhanced resource management in VideoThumbnails module by ensuring closure of ParcelFileDescriptor and releasing MediaMetadataRetriever post-use. (#26100 by @hirbod)
  • expo-web-browser
    • On iOS, fix an issue where rapidly opening and closing the browser would leave the module in a bad state, preventing opening the browser again. (#28452 by @alanjhughes)

💡 Others

  • expo-application
    • [iOS] Add privacy manifest describing required reason API usage. (#27770 by @aleqsio)
    • drop unused web name property. (#27437 by @EvanBacon)
    • Removed deprecated backward compatible Gradle settings. (#28083 by @kudo)
  • expo-av
    • Replace deprecated com.facebook.react:react-native:+ Android dependency with com.facebook.react:react-android. (#26237 by @kudo)
    • Prevent config plugin from writing permissions until prebuild. (#28107 by @EvanBacon)
    • drop unused web name property. (#27437 by @EvanBacon)
    • Removed deprecated backward compatible Gradle settings. (#28083 by @kudo)
  • expo-background-fetch
  • expo-auth-session
  • expo-battery
  • expo-brightness
  • expo-barcode-scanner
  • expo-blur
    • Removed deprecated backward compatible Gradle settings. (#28083 by @kudo)
  • expo-asset
    • Create native module for iOS and Android. Migrate downloadAsync to a native implementation. (#27369 by @aleqsio)
    • Remove MD5 checksum verification for remote assets. This does not change method signatures nor require changes to your application code, and should not affect any apps in practice since this behavior was used only for apps that used Classic Updates, support for which ended with SDK 50. (#25614 by @ide)
    • [expo-updates] Migrate to requireNativeModule/requireOptionalNativeModule. (#25648 by @wschurman)
    • Clean up some asset stuff. (#26310 by @wschurman)
    • Remove most of Constants.appOwnership. (#26313 by @wschurman)
    • Remove assetUrlOverride and assetMapOverride. (#26314 by @wschurman)
    • Improve updates types and clarity in expo-asset. (#26337 by @wschurman)
    • Removed deprecated backward compatible Gradle settings. (#28083 by @kudo)
    • Update mocks for SDK51. (#28424 by @aleqsio)
  • expo-calendar
    • Prevent config plugin from writing permissions until prebuild, remove duplicate permissions. (#28107 by @EvanBacon)
    • drop unused web name property. (#27437 by @EvanBacon)
    • On iOS, migrate to Expo Modules API. (#24282 by @alanjhughes)
    • Removed deprecated backward compatible Gradle settings. (#28083 by @kudo)
    • Use enums instead of objects for enumerable types. (#27777 by @behenate)
  • expo-cellular
    • Removed deprecated backward compatible Gradle settings. (#28083 by @kudo)
  • expo-camera
  • expo-clipboard
    • drop unused web name property. (#27437 by @EvanBacon)
    • Rename CornerStyle and DisplayMode types to include Type suffix in name. (#27190 by @simek)
    • Removed deprecated backward compatible Gradle settings. (#28083 by @kudo)
    • Update mocks for SDK51. (#28424 by @aleqsio)
  • expo-constants
    • [iOS] Add privacy manifest describing required reason API usage. (#27770 by @aleqsio)
    • [expo-updates] Migrate to requireNativeModule/requireOptionalNativeModule. (#25648 by @wschurman)
    • Remove most of Constants.appOwnership. (#26313 by @wschurman)
    • Improve updates types and clarity in expo-asset. (#26337 by @wschurman)
    • Removed deprecated backward compatible Gradle settings. (#28083 by @kudo)
  • expo-crypto
    • drop unused web name property. (#27437 by @EvanBacon)
    • Update error message to reflect that web crypto works on web with a localhost hostname and often doesn't require https. (#26729 by @EvanBacon)
    • Removed deprecated backward compatible Gradle settings. (#28083 by @kudo)
    • Update mocks for SDK51. (#28424 by @aleqsio)
  • expo-contacts
    • Prevent config plugin from writing permissions until prebuild. (#28107 by @EvanBacon)
    • drop unused web name property. (#27437 by @EvanBacon)
    • Reuse React Native ShareOptions type for shareContactAsync parameter typing. (#26208 by @Simek)
    • [iOS] Migrate to Expo Modules. (#25696 by @alanjhughes)
    • Removed deprecated backward compatible Gradle settings. (#28083 by @kudo)
  • expo-device
    • [iOS] Add privacy manifest describing required reason API usage. (#27770 by @aleqsio)
    • Removed deprecated backward compatible Gradle settings. (#28083 by @kudo)
  • expo-document-picker
  • expo-font
  • expo-face-detector
  • expo-file-system
    • [iOS] Add privacy manifest describing required reason API usage. (#27770 by @aleqsio)
    • drop unused web name property. (#27437 by @EvanBacon)
    • Removed deprecated backward compatible Gradle settings. (#28083 by @kudo)
  • expo-gl
    • Removed deprecated backward compatible Gradle settings. (#28083 by @kudo)
  • expo-haptics
  • expo-image-loader
    • Removed deprecated backward compatible Gradle settings. (#28083 by @kudo)
  • expo-image-picker
    • drop unused web name property. (#27437 by @EvanBacon)
    • Convert WEBP to PNG instead JPEG when selecting an item in the Media Library with editing enabled. (#26419 by @NikitaDudin)
    • Receiving a correct file extension for WEBP files instead .jpeg in the ImagePicker result. (#26419 by @NikitaDudin)
    • Removed deprecated backward compatible Gradle settings. (#28083 by @kudo)
  • expo-intent-launcher
  • expo-image-manipulator
  • expo-linear-gradient
    • On Android, remove type annotation on View. (#26545 by @alanjhughes)
    • Removed deprecated backward compatible Gradle settings. (#28083 by @kudo)
    • Changed type of colors and locations array to readonly (#28450 by @kowczarz)
  • expo-keep-awake
    • Removed deprecated backward compatible Gradle settings. (#28083 by @kudo)
  • expo-location
  • expo-localization
    • Removed deprecated backward compatible Gradle settings. (#28083 by @kudo)
  • expo-local-authentication
    • Prevent config plugin from writing permissions until prebuild. (#28107 by @EvanBacon)
    • drop unused web name property. (#27437 by @EvanBacon)
    • Removed deprecated backward compatible Gradle settings. (#28083 by @kudo)
  • expo-mail-composer
    • Removed deprecated backward compatible Gradle settings. (#28083 by @kudo)
  • expo-network
    • Removed deprecated backward compatible Gradle settings. (#28083 by @kudo)
  • expo-modules-core
    • [Android] Bump Kotlin version from 1.8.10 to 1.8.22. (#25945 by @lukmccall)
    • Replace deprecated com.facebook.react:react-native:+ Android dependency with com.facebook.react:react-android. (#26237 by @kudo)
    • Deprecated expo.modules.core.Promise. (#27471 by @aleqsio)
    • Removed deprecated global.ExpoModules. (#26027 by @tsapeta)
    • Remove most of Constants.appOwnership. (#26313 by @wschurman)
    • Added an alternative way of installing the JSI bindings. (#26691 by @lukmccall)
    • ObjectDeallocator is now a native state instead of a host object. (#26906 by @tsapeta)
    • Moved away from SharedObjectRegistry being a singleton. (#27032 by @tsapeta)
    • Moved and added more JSI utils to the common C++ codebase. (#27045 by @tsapeta)
    • Introduce EXCreateReactBindingRootView to create correct React Native setup for New Architecture mode. (#27216 by @kudo)
    • Set bridge on AppContext in ExpoBridgeModule. (#27378 by @alanjhughes)
    • Added TypeScript declarations and documentation for global JSI bindings. (#27465 by @tsapeta)
    • [iOS] Added bridgeless support on ExpoReactDelegate. (#27601, #27689 by @kudo)
    • [Android] Added bridgeless support on ReactNativeHostHandler. (#27629 by @kudo)
    • Refactored out EXReactRootViewFactory.createDefaultReactRootView: to RCTAppDelegate.recreateRootViewWithBundleURL: category. (#27945 by @kudo)
    • Added ReactNativeHostHandler.onReactInstanceException() for client to listen for exceptions on Android. (#27815 by @kudo)
    • Removed the legacy interfaces for font processors as they are no longer used by expo-font and nothing else depends on them. (#26380 by @tsapeta)
    • Removed deprecated backward compatible Gradle settings. (#28083 by @kudo)
    • Bumped Kotlin version to 1.9.23. (#28088 by @kudo)
    • Introduced onDidCreateDevSupportManager handler to support error recovery from expo-updates. (#28177 by @kudo)
    • Dropped support for custom type converters on Android. (#28252 by @lukmccall)
    • Introduced ExpoReactDelegateHandler.bundleURL for clients to override newer bundleURL. (#28256 by @kudo)
  • expo-media-library
    • Prevent config plugin from writing permissions until prebuild. (#28107 by @EvanBacon)
    • [iOS] Add privacy manifest describing required reason API usage. (#27770 by @aleqsio)
    • drop unused web name property. (#27437 by @EvanBacon)
    • [iOS] Migrate to expo modules. (#25587 by @alanjhughes)
    • Removed deprecated backward compatible Gradle settings. (#28083 by @kudo)
    • The ACCESS_MEDIA_LOCATION Android permission should not pulled into by default and should be pulled through Config Plugins. (#28230 by @kudo)
  • expo-notifications
    • [iOS] Add privacy manifest describing required reason API usage. (#27770 by @aleqsio)
    • drop unused web name property. (#27437 by @EvanBacon)
    • Removed deprecated backward compatible Gradle settings. (#28083 by @kudo)
  • expo-screen-capture
    • drop unused web name property. (#27437 by @EvanBacon)
    • Native module on iOS is now written in Swift using the Sweet API. (#26103 by @fobos531)
    • Removed deprecated backward compatible Gradle settings. (#28083 by @kudo)
  • expo-print
  • expo-random
  • expo-screen-orientation
  • expo-sharing
  • expo-secure-store
  • expo-sms
  • expo-speech
  • expo-sensors
  • expo-store-review
  • expo-task-manager
    • [iOS] Add privacy manifest describing required reason API usage. (#27770 by @aleqsio)
    • drop unused web name property. (#27437 by @EvanBacon)
    • Removed deprecated backward compatible Gradle settings. (#28083 by @kudo)
  • expo-sqlite
    • Remove onDatabaseChange event from legacy API as it is not supported natively. (#26655 by @alanjhughes)
    • drop unused web name property. (#27437 by @EvanBacon)
    • Removed deprecated backward compatible Gradle settings. (#28083 by @kudo)
  • expo-video-thumbnails
  • expo-web-browser
    • Updated androidx.browser:browser to 1.6.0 #26619 by @zoontek
    • drop unused web name property. (#27437 by @EvanBacon)
    • Update error message to reflect that web crypto works on web with a localhost hostname and often doesn't require https. (#26729 by @EvanBacon)
    • Remove compare-urls and url dependencies in favor of built-in URL support. (#26702 by @EvanBacon)
    • Removed deprecated backward compatible Gradle settings. (#28083 by @kudo)
  • unimodules-app-loader
    • Removed deprecated backward compatible Gradle settings. (#28083 by @kudo)

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: https://github.com/expo/expo/blob/ff35557463c0db1cf8683939d752c59baf127f21/CHANGELOG.md#L323