Skip to content

Latest commit

 

History

History
1857 lines (1801 loc) · 229 KB

CHANGELOG.md

File metadata and controls

1857 lines (1801 loc) · 229 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

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

⚠️ Notices

49.0.0 — 2023-06-27

📚 3rd party library updates

🛠 Breaking changes

🎉 New features

🐛 Bug fixes

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

⚠️ Notices

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

💡 Others

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

48.0.0 — 2023-02-09

📚 3rd party library updates

🛠 Breaking changes

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

🎉 New features

🐛 Bug fixes

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

💡 Others

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

⚠️ Notices

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

47.0.0 — 2022-10-28

For changelog entries prior to SDK 47, refer to:

## 47.0.0 — 2022-10-28