Skip to content

Latest commit

 

History

History
509 lines (433 loc) · 69.9 KB

CHANGELOG.md

File metadata and controls

509 lines (433 loc) · 69.9 KB

Changelog

This is the log of notable changes to the Expo client that are developer-facing.

master

📚 3rd party library updates

🛠 Breaking changes

🎉 New features

  • Add readerMode and dismissButtonStyle (iOS) and enableDefaultShare (Android) flags for WebBrowser (#7221 by @LinusU) & @mczernek)

🐛 Bug fixes

37.0.0

📚 3rd party library updates

  • Updated react-native-shared-element from 0.5.1 to 0.5.6. (#7033 by @IjzerenHein)
  • Updated @react-native-community/netinfo from 4.6.0 to 5.5.0. Some deprecated methods have been removed in this version, make sure to check out NetInfo docs for available API. (#7095 by @tsapeta)
  • Updated @react-native-community/datetimepicker from 2.1.0 to 2.2.2. (#7119 by @tsapeta)
  • Updated react-native-gesture-handler from 1.5.1 to 1.6.0. (#7121 by @tsapeta)
  • Updated @react-native-community/masked-view from 0.1.5 to 0.1.6.
  • Updated @react-native-community/viewpager from 2.0.2 to 3.3.0.
  • Updated react-native-reanimated from 1.4.0 to 1.7.0.
  • Updated react-native-svg from 9.13.3 to 11.0.1.
  • Updated react-native-view-shot from 3.0.2 to 3.1.2.
  • Updated react-native-webview from 7.4.3 to 8.1.1.
  • Updated react-native-appearance from 0.2.1 to 0.3.3. (#7250 by @tsapeta)
  • Updated react-native-safe-area-context from 0.6.0 to 0.7.3.
  • Updated react-native-screens from 2.0.0-alpha.12 to 2.2.0 🎉. (#7183 by @tsapeta, (#7201 @bbarthec), (#7215 @LinusU)

🛠 Breaking changes

  • expo-app-auth Remove SSL features from unsafe connection builder. (#7187 by @evanbacon)
  • expo-constants Constants.deviceName now only returns the possible Browser name and doesn't fallback to engine or OS name. (#6809 @evanbacon)
  • expo-constants Constants.platform.web now only returns the ua (user agent string). (#6809 @evanbacon)
  • Enriched androidStatusBar configuration in app.json. (#6506 @bbarthec)
  • Extended androidNavigationBar.visible configuration in app.json. To keep the same behavior as before, change your androidNavigationBar.visible field from false to leanback. (#7049 @cruzach)
  • expo: Removed AuthSession from the expo package and extracted into expo-auth-session unimodule. (#6989 by @lukmccall)
  • expo: Removed ScreenOrientation from the expo package and extracted into expo-screen-orientation unimodule. (#6760 by @lukmccall)
  • Removed Orientation.PORTRAIT and Orientation.LANDSCAPE from ScreenOrientation in favor of their more specific versions. (#6760 by @lukmccall)
  • LocalAuthentication.authenticateAsync will now display Android's UI component to prompt the user to authenticate. (#6846 by @LinusU)

🎉 New features

  • Added support for video mirroring with expo-camera. (#7016 by @scandinaro)
  • Added support for badge numbers. (#4562 by @jaulz)
  • expo-task-manager supports bare workflow. (#6828 by @mczernek)
  • Add support for expo-firebase-core. (#7013 by @IjzerenHein)
  • Add support for expo-firebase-analytics. (#7017 by @evanbacon and @IjzerenHein)
  • Add MailComposer.isAvailableAsync method. (#6552 by @evanbacon)
  • Add showInRecents option to the AuthSessions.startAsync determining whether a browsed website should be shown as a separate entry in Android recent/multitasking view. (#6701 by @esamelson)
  • Replaced FingerprintManager with BiometricPrompt from AndroidX in LocalAuthentication. (#6846 by @LinusU)

🐛 Bug fixes

  • Fixed parsing booleans in SQLite (#7225 by @mczernek)
  • Fixed value reported by FileSystem.getFreeDiskStorageAsync (was 2^53 - 1, now is bytes available) (#6465 by @sjchmiela)
  • Added setOnPlaybackStatusUpdate to Video.refs (#6213 by @mczernek)
  • Updated underlying Facebook SDK on Android to v5.12.1 (#6462 by @sjchmiela)
  • Removed SpongyCastle (BouncyCastle repackaging) from among Android dependencies. (#6464 by @sjchmiela)
  • Fixed fullscreen events on iOS for native controls. (#6504 by @mczernek)
  • Fixed Camera.takePictureAsync() not saving metadata on iOS. (#6428 by @lukmccall)
  • Fixed KeyboardAvoidingView in standalone Android builds. (#6506 @bbarthec)
  • Fixed a bug where safariViewControllerDidFinish is not called if you close the webview with the "Swipe to dismiss" gesture. (#6581 by @axeldelafosse)
  • Fixed FileSystem.downloadAsync() throwing NullPointerException in rare failures on Android. (#6819 by @jsamr)
  • MediaLibrary.saveToLibraryAsync and MediaLibrary.createAssetAsync will throw an error when provided path does not contain an extension. (#7030 by @lukmccall)
  • Fixed FileSystem.getTotalDiskCapacityAsync() incorrectly returning 2^53 - 1 instead of the actual total disk capacity. (#6978 by @cruzach)
  • Fixed VideoThumbnails.getThumbnailAsync crashing when the provided file is corrupted. (#6877 by @lukmccall)
  • Fixed Linking.openSettings is undefined. (#7128 by @lukmccall)
  • Fixed Camera.takePictureAsync not resolving promise when native camera isn't ready on iOS. (#7144 by @bbarthec)
  • Fixed NPE crash in GeofencingTaskConsumer when mTask is made null mid-execution. (#7147 by @briefjudofox)
  • Fixed ImagePicker.launchCameraAsync reloading the application on the OnePlus 7. (#7162 by @lukmccall)
  • Fixed the bare React Native application not compiling with the use_frameworks! option. (#6503 by @lukmccall)
  • Fixed AppRegistry.setWrapperComponentProvider in managed Expo apps. (#6530 by @serhiipalash)
  • Fixed Facebook SDK not being fully initialized. (#6527 by @sjchmiela)
  • Fixed Battery import breaking on Web. (#6545 by @evanbacon)
  • Fixed the RedBox being covered by the notch on Android. (#6644 by @cruzach)
  • Fixed SSR support in ErrorRecovery. (#6672 by @evanbacon)
  • Fixed Linking.makeUrl and Linking.parse not matching. (#6688 by @cruzach)
  • Fixed StoreReview.requestReview throwing NullPointerException in the bare workflow. (#6713 by @cruzach)
  • Fixed NDK not installing when running yarn setup:native. (#6685 by @IjzerenHein)
  • Fixed Linking not decoding query parameters. (#6774 by @cruzach)
  • Fixed Contacts not saving the year correctly. (#6744 by @tasn)
  • Fixed Audio.setAudioModeAsync parameter type. (#6833 by @mxhold)
  • Fixed LocalAuthentication.authenticateAsync resulting in the user_cancel error immediately on Android. (#6962 by @LinusU)
  • Fixed Permissions.askAsync crashing on devices with Android 21 and 22 in the bare workflow. (#6736 by @lukmccall)
  • Fixed HeadlessAppLoader crashing after the activity is killed. (#6879 by @tasn)
  • Fixed fields parameter type in Contacts.getContactByIdAsync method. (#6910 by AryanJ-NYC)
  • Fixed DocumentPicker.DocumentResult type. (#7064 by @SimenB)
  • Fixed Constants.installationId being null in the bare workflow after ejecting. (#6906 by @cruzach)
  • Fixed Facebook.logInWithReadPermissionsAsync method throwing error (undefined is not an object (evaluating '_ref.type')). by (#6527 by @sjchmiela)
  • Fixed some TypeScript types not being exported. (#7120 by @lukmccall)
  • Fixed TaskManager.defineTask logging too many warnings and not working well with Fast Refresh. (#7202 by @tsapeta)
  • Added doc comments to TaskManager and exported more types. (#7202 by @tsapeta)

36.0.0

📚 3rd party library updates

🛠 Breaking changes

  • CameraRoll: Removed CameraRoll from react-native core, developers are encouraged to use expo-media-library instead
  • ART: Removed ART from react-native core, developers are encouraged to use react-native-svg instead
  • jest-expo: Removed mockPlatformIOS(), mockPlatformAndroid(), mockPlatformWeb(), describeCrossPlatform() in favor of platform specific presets like jest-expo/universal. (#5645 by @EvanBacon)
  • expo: Removed Branch export from expo/Branch. (#6190 by @sjchmiela)
  • expo: Removed ErrorRecovery from the expo package and extracted into expo-error-recovery unimodule. (#5357 by @lukmccall)
  • expo: Updated Linking.parse to better handle non-expo URLs. URLs like myapp://hello/world are now parsed so that hello is the hostname and world is the path, according to the URI specification; more info here. (#5179 by @koenpunt)
  • expo: Updated Linking.makeUrl to create URLs that follow the URI specification. Making a hostless URL will result in the format myapp:///path/into/app (#6781 by @cruzach)
  • expo-analytics-segment: Fixed enabled behavior inverted on iOS. (#6242 by @sjchmiela)
  • expo-facebook: Disabled autoinitialization of the Facebook SDK and added an initializeAsync method and autoinit app.json setting. ([#5924] by @sjchmiela)
  • expo-keep-awake: Removed deprecated methods and components. (#6006 by @EvanBacon)
  • expo-location: Location.requestPermissionsAsync() is no longer being rejected when permissions were not granted. Instead it returns PermissionsResponse object, which is similar to the result of Permissions.askAsync(Permissions.Location). (#5061 by @lukmccall)
  • expo-store-review: Replace StoreReview.isSupported method with StoreReview.isAvailableAsync returning promise instead of boolean. (#6195 by @danibonilha)
  • expo-calendar: Methods creating or updating calendar events now reject when passed timeZone is invalid. (#6326 by @lukmccall)
  • expo-screen-orientation: Removed deprecated methods allow, allowAsync, and doesSupportAsync. (#6007 by @EvanBacon)

🎉 New features

  • Added MediaLibrary.saveToAssetsAsync function that can work without CAMERA_ROLL permission. (#5678 by @lukmccall)
  • Added setTrackingOptions to expo-analytics-amplitude to fine-tune what Amplitude can track. (#5877 by @amaurymartiny)
  • Added support for Speech.getAvailableVoicesAsync() on Android. (#5887 by @Mitch528)
  • Added @react-native-community/masked-view in version 0.1.5. (#6193 by @brentvatne)
  • Added @react-native-community/viewpager in version 2.0.2. (#6198 by @brentvatne)
  • Added @react-native-community/datetimepicker in version 2.1.0. (#6087 by @tsapeta)
  • Added canAskAgain and granted fields to PermissionsResponse. (#5061 by @lukmccall)
  • Added support for react-native-appearance on Android and Web. (#6162 by @bbarthec)
  • Added Location.getLastKnownPositionAsync to get the last known position of the device. (#6246 by @lukmccall)
  • Added support for complex recurrence rules for events and reminders on iOS. (#6300 by @tasn)
  • Added exif and base64 properties into the TypeScript definitions for ImagePickerResult in expo-image-picker. (#6311 by @kyletsang)
  • Added a videoExportPreset field to ImagePickerOptions, which sets dimensions and compression algorithm for exported video on iOS. (#6046 by @lukmccall)
  • Added nonce option to expo-apple-authentication. (#6404 by @brentvatne)
  • Added support for more permissions on web. (#6115 by @EvanBacon)
  • Added better Camera support across web browsers. (#6207 by @EvanBacon)

🐛 Bug fixes

  • Fixed MediaPlayer not working on some Android devices (#6320 by @mczernek)
  • Fixed Audio.setAudioModeAsync to auto-fill with previously set values (falls back to default values) if not all fields are provided. (#5593 by @cruzach)
  • Fixed crash when BarCodeScanner was mounted more than 128 times. (#5719 by @geovannimp)
  • Fixed URI parsing in expo-video-thumbnails. (#5711 by @lukmccall)
  • Fixed MediaLibrary methods crashing on Android 10. (#5905 by @lukmccall)
  • Fixed MediaLibrary.getMomentsAsync crashing if locationNames array is null. (#5937 by @lukmccall)
  • Fixed MediaLibrary.getAlbumsAsync() not getting albums in folders on iOS. (#5857 by @lukmccall)
  • Fixed unclosed http connections in FileSystem.downloadAsync method. (#5840 by @bbarthec)
  • Fixed ImagePicker ignoring orientation of the application. (#5946 by @lukmccall)
  • Fixed Calendar.getCalendarsAsync rejecting on iOS 13, when source.name is null. (#5994 by @lukmccall)
  • Fixed handling URI with no scheme in ExpoFileSystem. (#5904 by @bbarthec)
  • Fixed FileSystem#deleteAsync in older Android SDKs. (#5923 by @bbarthec)
  • Fixed image cropping on Android in expo-image-manipulator. (#5828 by @matiasmelendi)
  • Fixed type problem with EXiOSOperatingSystemVersion struct in expo-gl-cpp. (#6063 by @crubier)
  • Fixed blinking Camera.Constants.FlashMode.torch on iOS in Camera. (#6128 by @bbarthec)
  • Fixed race condition in GoogleSignIn on iOS. (#5872 by @vonovak])
  • Fixed Contacts.presentFormAsync pre-filling, when bool value was provided. (#5522 by @lukmccall)
  • Fixed crashes when the user tries to download a file through react-native-webview without granted storage permission on Android. (#5061 by @lukmccall)
  • Fixed Permissions.getAsync result, which was inconsistent with iOS settings. (#5061 by @lukmccall)
  • Fixed scanning PDF417 and Code39 in BarCodeScanner on iOS. (#5976 by @bbarthec)
  • Add missing mute property in Camera.recordAsync in the TypeScript definition. (#6192 by @wcandillon)
  • Warn when Linking.makeUrl is called in Expo client and no scheme is present in app.json in order to prevent standalone builds from crashing due to missing scheme. (#6277 by @brentvatne)
  • Fixed keychainAccessible option not having any effect on iOS (SecureStore module) (#6291) by @sjchmiela
  • Fixed presentation style of WebBrowser modal on iOS 13+ (it is now presented fullscreen instead of a modal). (#6345) by @roothybrid7
  • Fixed expo-gl crashing an app when context initialization happens on remote JS context. (#6381 by @tsapeta)
  • Fixed memory leaks caused by ImagePicker module. (#6303 by @lukmccall)
  • Fixed Android scoped FileSystem migration. (#6367)
  • Fixed ScreenOrientation crashing on Edge. (#5913 by @EvanBacon)
  • Fixed LinearGradient colors on web. (#5843 by @EvanBacon)
  • Fixed MediaLibrary.getAssetInfoAsync() not returning localUri for videos. (#5806 by @lukmccall)
  • Fixed Localization constants export in iOS simulator. (#5740 by @lukmccall)
  • Removed unnecessary CameraRoll permissions check in ImagePicker on iOS 11+. (#5822 by @lukmccall)
  • Fixed default value for fallbackLabel in LocalAuthentication.authenticateAsync. (#5844 by @cruzach)
  • Fixed getting Contacts containers without specifying a predicate. (#6016 by @tasn)
  • Fixed vector icons in MS Edge by disabling font face observer. (#5961 by @EvanBacon)
  • Fixed typings for Calendar.getRemindersAsync(). (#6055 by @tasn)
  • Fixed Camera continuing to run after being unmounted on web. (#6117 by @EvanBacon)
  • Fixed exceptions logged in the AV module on Android. (#6099 by @danmaas)
  • Fixed crash when calling Amplitude.setUserProperties() on Android. (#6174 by @sjchmiela)
  • Fixed methods for scheduling Notifications. (#5470 by @Szymon20000)
  • Fixed unloading sounds in the AV module on web. (#6214 by @rickiesmooth)
  • Add parital onFullscreenUpdate support to AV module on web. (#6610 by @awinograd)

35.0.0

📚 3rd party library updates

  • react-native-maps updated from 0.24.0 to 0.25.0
  • react-native-reanimated updated from 1.1.0 to 1.2.0
  • react-native-screens updated from 1.0.0-alpha.22 to 1.0.0-alpha.23
  • react-native-svg updated from 9.5.1 to 9.9.2
  • react-native-webview updated from 5.12.0 to 7.0.5

🛠 Breaking changes

  • FileSystem.documentDirectory is under a new directory. If upgrading from SDK 32 or below, you must upgrade your app to SDK 33 or 34 first, before upgrading to SDK 35 and above in order to migrate app files. (#5381 by @Szymon20000)
  • Google.logInAsync() now accepts a redirectUrl value for apps running in the Expo Client. Previously, it would ignore this, so if you are passing a value, make sure to follow the guidelines. (#4904 by @cruzach)
  • Google Mobile Ads now require expo.[platform].config.googleMobileAdsAppId configuration value present in app.json. The value can be found by following the guide in this Google Support answer. (#5447 by @sjchmiela)
  • Replace Localization.country constants with Localization.region and make it only available on iOS and Web (#4921 by @lukmccall)
  • Upgraded FBSDK*Kit to v5.4.1. This upgrade removed support for all login behaviors other than browser. Possible motivations behind this change may be found here, here and here. behavior parameter has been removed from TS type declaration and will not have any effect anymore (#5499 by @sjchmiela)
  • Removed contact's note field from being requested if requested fields are not provided. (#5601 by @tsapeta)

🎉 New features

🐛 Bug fixes

  • Fixed MediaLibrary assets' width and height were sometimes equal to 0. (#4935 by @lukmccall)
  • Fixed location background mode was required to use geofencing. (#5198 by @tsapeta)
  • Fixed Calendar.createEventAsync crashing with relativeOffSet due to invalid type conversion from double to integer. (#5134 by @vivianzzhu91)
  • Fixed AppAuthModule.createOAuthServiceConfiguration typo resulting in crashes when registrationEndpoint is not specified in config.
  • Fixed occasional "ViewManagerAdapter_*" was not found in the UIManager bugs. (#5066 by @sjchmiela)
  • Fixed crashes when adding attachments with MailComposer. (#5449 by @sjchmiela)
  • Fixed ImagePicker.launchImageLibraryAsync not working on iOS 13. (#5434 by @tsapeta)
  • Fixed ImageManipulator.manipulateAsync not working with local paths. (#5531 by @bbarthec)
  • Fixed Camera#onBarCodeScanned not firing when added at first rendering (#5606 by @bbarthec)
  • Fixed background fetch calls throwing exceptions about mutating an array while being enumerated. (#5612 by @tsapeta)

34.0.0

📚 3rd party library updates

  • react-native-gesture-handler updated from 1.2.1 to 1.3.0
  • react-native-branch updated from 2.2.5 to 3.1.1
  • react-native-reanimated updated from 1.0.1 to 1.1.0
  • react-native-svg updated from 9.4.0 to 9.5.1
  • react-native-webview updated from 5.8.0 to 5.12.0
  • @react-native-community/netinfo updated from 2.0.10 to 3.2.1

🛠 Breaking changes

  • Removed promptMessageIOS string argument from LocalAuthentication.authenticateAsync in favor of options object. (#4631 by @tsapeta)
  • Removed Calendar.DEFAULT and replaced it with null. (#4836 by @lukmccall)

🎉 New features

  • Added fallbackLabel option to LocalAuthentication.authenticateAsync on iOS which allows to customize a title of the fallback button when the system doesn't recognize the user and asks to authenticate via device passcode. (#4612 by @changLiuUNSW)
  • added native mode for Android SplashScreen on standalone apps by @bbarthec (#4567)
  • added support for video recording in ImagePicker.launchCameraAsync. (#4903 by @lukmccall)
  • added support for ph:// URLs to expo-file-system (#5195 by @sjchmiela)

🐛 Bug fixes

  • fixed BarCodeScanner blocking UI when defining custom barCodeTypes on iOS by @sjchmiela
  • fixed picking images over 2000px on Android by @bbarthec (#4731)
  • fixed Calendar.getEventsAsync crashing if calendarId is SQL keyword by @lukmccall (#4836)
  • fixed BOOL interpretation on 32-bit iOS devices by @lukmccall (#4862)
  • fixed AV rejecting to further load an asset once any loading error occured (#5105) by @sjchmiela)
  • fixed AV resetting player whenever props changed (#5106) by @sjchmiela)
  • fixed bar code scanning crash if the result couldn't be converted to string (#5183) by @sjchmiela)
  • fixed camera crash in standalone apps (#5194) by @sjchmiela)

33.0.0

🛠 Breaking changes

  • updated react-native-gesture-handler to 1.2.1 by @mczernek (#4159)
  • updated react-native-svg to 9.4.0 by @Szymon20000 and @mczernek (#3860, #4159)
  • updated @react-native-community/netinfo to 2.0.10 by @sjchmiela (#4153)
  • updated react-native-reanimated to 1.0.1 by @dsokal (#4023)
  • removed deprecated MediaView and TriggerView from expo-ads-facebook by @EvanBacon (#3539). You should use AdMediaView & AdTriggerView instead.
  • deprecated Expo.Util by @EvanBacon (#3539). You should use Expo.Updates & Expo.Localization instead.
  • removed use of expolib_v1.okhttp in favor of regular okhttp dependency by @Szymon20000 (#3539) (an update to MainApplication.getOkHttpBuilder may be required when upgrading)
  • corrected behavior of splash screen image based on resizeMode in Android standalone apps (contain and cover were handled contrary to what docs state) by @bbarthec (#3029)
  • Speech.speak changed option name from voiceIOS to voice. @Szymon20000 (#3423)
  • renamed Haptic to Haptics and deprecated Haptics.{notification, impact, selection} in favour of Haptics.{notificationAsync, impactAsync, selectionAsync} @bbarthec (#3330)
  • ImageManipulator.manipulateAsync is now accepting ImageManipulator.FlipType.{Vertical, Horizontal} as flipping action parameter and ImageManipulator.SaveFormat.{JPEG, PNG} as saving option @bbarthec (#3245)
  • removed devKernel and prodKernel build flavors from Android ExpoKit projects (all Gradle commands become simply [verb](Debug|Release), e.g. installDebug or assembleRelease) by @esamelson (#3386)
  • renamed IntentLauncherAndroid to IntentLauncher and changed signature of startActivityAsync method by @tsapeta (#3427)
  • fixed crash in WebBrowser.openBrowserAsync when there is no browser supporting customtabs on Android by @mczernek (#3691)
  • WebBrowser.openBrowserAsync on Android resolves promise on opening Custom Tabs instead of on closing by @mczernek (#3691)
  • WebBrowser.dismissBrowser throws UnavailabilityError @mczernek (#3691)
  • added staysActiveInBackground audio mode option that selects whether audio playback or recording should continue when the app is in background by @sjchmiela and @redpandatronicsuk (#3498)
  • renamed the EncodingTypes attribute to EncodingType in the FileSystem module docs to match changes in the source code by @sergeichestakov (#3997)
  • added a warning printed when attempting to store a value longer than 2048 bytes in the SecureStore. (Since SDK35 it will throw an error.) @dsokal (#4084)
  • added UMAppDelegateWrapper which allows easy integration between unimodules and AppDelegate callbacks by @Szymon20000 (#3917)
  • changed Constants.platform.ios.buildNumber and Constants.platform.android.versionCode to null when running an app in Expo Client by @dsokal (#4203)
  • upgraded react-native-maps to 0.24.2 by @sjchmiela (#3389, #4158, ejected projects will need to add HAVE_GOOGLE_MAPS=1 preprocessor definition to Podfile)
  • removed option sortBy.id in expo-media-library by @jkhales (#4221)

🎉 New features

  • updated react-native-view-shot to 2.6.0 by @sjchmiela (#4175)
  • added VideoThumbnails API allowing you to thumbnail videos by @graszka22 (#3980)
  • upgraded react-native-lottie to 2.6.1 by @sjchmiela (#4147)
  • BarCodeScanner is now returning barcode's bounding box @Szymon20000 (#2904)
  • added method Speech.getAvailableVoicesAsync() @Szymon20000 (#3423)
  • added BackgroundFetch support for Android by @tsapeta (#3281)
  • incorporated react-native-webview@5.4.6 into Expo SDK by @sjchmiela (#3748)
  • added support for overriding MIME type in IntentLauncherAndroid.startActivityAsync for Android by @rhunt4675 (#3300)
  • added Location.enableNetworkProviderAsync method to ask the user to turn on high accuracy location services by @tsapeta (#3273)
  • upgraded Facebook Audience Network SDK dependency to 5.1.1 (iOS) by @sjchmiela (#3394)
  • upgraded Facebook Core- and LoginKit dependency to 4.40.0 by @sjchmiela (#3394)
  • upgraded Facebook SDK dependency to 5.0.1 (Android) by @sjchmiela
  • upgraded react-native-webview to 5.8.1 by @sjchmiela (#4146)
  • added Firebase integration to expo-analytics-segment by @sjchmiela (#3615)
  • added support for new arguments in WebBrowser.openBrowserAsync as described in the documentation by @mczernek (#3691)
  • added tags support in KeepAwake.activate and KeepAwake.deactivate by @mczernek #3747
  • added deferredUpdatesInterval and deferredUpdatesDistance options that defer background location updates by @tsapeta (#3548)
  • added foregroundService option to background location (Android Oreo and newer) by @tsapeta (#3837)
  • added support for picking animated GIFs with ImagePicker by @sjchmiela (#3844)
  • added support for headers in downloadAsync method in FileSystem by @mczernek (#3911)
  • added support for custom poster styles in Video by @sjchmiela (#4165)
  • added pausesUpdatesAutomatically option to automatically pause background location updates based on the activityType by @tsapeta (#4167)
  • added ability to load fonts by remote URI by @seekshiva (#2745)
  • added support for 64 bit platforms by @wkozyra95 (#4565)

🐛 Bug fixes

  • fixed several windows compatibility issues with expo-yarn-workspaces by @nattyrice
  • fixed several issues related to expo-av by @Szymon20000 (#3539)
  • Location.getCurrentPositionAsync and Location.watchPositionAsync are now automatically asking for high accuracy location services by @tsapeta (#3273)
  • fix Location.getCurrentPositionAsync hanging on simultaneous calls by @tsapeta (#3273)
  • fix ImagePicker.launchImageLibraryAsync and ImageManipulator.manipulateAsync in SDKs lower than 32 @bbarthec (#3159)
  • fix app crash when attempting to console.log(Object.create(null)) by @juangl (#3143)
  • GoogleSignInOptions.offlineAccess is now corrected GoogleSignInOptions.isOfflineEnabled
  • fix SMS.sendSMSAsync crash on android for empty addresses list. Promise won't be rejected when there is no TELEPHONY feature on Android device, only when there is no SMS app by @mczernek (#3656)
  • fix MediaPlayer not working on Android. by @mczernek (#3768)
  • fix big OkHttpClient memory usage on Android (reuse instances) by @sjchmiela (#4264)
  • fixed Localization.isRTL always being true on iOS by @sjchmiela (#3792)
  • fixed adding/removing react children to Camera preview on Android by @bbarthec (#3904)
  • changed FileSystem requests timeout for downloading resumables from 10 seconds to 60 seconds on Android (now the timeout is 60s on both platforms) by @Szymon20000 (#3872)
  • removed unwanted downsampling of big images when using ImageManipulator on Android by @bbarthec (#3928)
  • fixed tablet splash always being shown in Expo Client if specified by @GfxKai (#3538)
  • the properties parameter of Segment.screenWithProperties is now a { [key: string]: any }, instead of a string by @juampi92 (#4053)
  • allow manipulating http:// and https:// files using ImageManipulator on iOS by @bbarthec (#3982)
  • providing onPlaybackStatusUpdate property to Video doesn't show a warning anymore by @sjchmiela (#4130)
  • calling FileSystem.downloadAsync will now raise an error when a target local directory doesn't exist by @dsokal (#4142)
  • flush UI blocks when needed, which fixes eg. Camera.takePicture not resolving on iOS by @sjchmiela (#4125)
  • fixed MediaLibrary.createAssetAsync crashing when supplying local asset URIs without file:// protocol by @tsapeta (#4189)
  • fixed EXC_BAD_ACCESS crashes on startup on iOS below 12.0 by @tsapeta (#4227)
  • fix jest-expo Jest executable not starting Node on Windows by @Artorp (#3477)
  • fixed crashes in TaskManager due to jobs queue being full by @tsapeta (#4247)
  • allow console.log() function to log truncated large files instead of reporting a PayloadTooLargeError. @vivianzzhu91 (#4419)
  • fixed sorting in MediaLibrary.getAssetsAsync by @ninjaachibi (#4420)

32.0.0

🛠 Breaking changes

  • deprecated import { Font } from 'expo-font' in favor of individually named exports (import * as Font from expo-font) for better dead-export elimination potential. Upgrade @expo/vector-icons if you get a warning about this. By @ide (264c17cd)
  • removed deprecated internal Expo modules (Crypto, Fabric, and ImageCropper), which were never part of the Expo API by @ide (#2880)
  • removed deprecated Expo.Fingerprint API, which has been renamed to Expo.LocalAuthentication to reflect other forms of authentication (ex: FaceID) by @ide (24e94d5)
  • removed deprecated default export from the expo package. Instead of import Expo from 'expo', write import { A, B, C } from 'expo' or import * as Expo from 'expo'. By @ide (#2865)
  • removed deprecated support for passing an array into Font.loadAsync. This feature displayed a deprecation warning for several SDK versions so if you didn't see it, this change shouldn't affect you.
  • deprecated enableHighAccuracy option in Location module in favor of accuracy which gives much more options by @tsapeta (#2338)
  • removed support for deprecated onBarCodeRead prop on Camera component by @Szymon20000 (#2820) (use onBarCodeScanned property)
  • updated underlying Stripe dependency to 8.1.0 on Android and 13.2.0 on iOS and updated expo-payments-stripe with latest updates to tipsi-stripe (up to 6.1.2) by @sjchmiela (#2766). This change dropped support for Bitcoin payments in SDK31.
  • removed READ_SMS use of permission on Android, SMS.sendSMSAsync will now always resolve with { result: 'unknown' } by @esamelson (#2982)
  • upgraded Android build tools — Gradle to 4.10.2, Gradle plugin to 3.2.1 by @sjchmiela (7292c27, d0c8b8d)
  • removed run.sh script from android directory in favor of fastlane android start command by @nicknovitski (9301e95)
  • removed minSdk application flavor from Android project (all Gradle commands in format [verb][minSdkFlavor]minSdk[remoteKernelFlavor]Kernel[buildType], eg. assembleDevMinSdkDevKernelDebug become [verb][remoteKernelFlavor]Kernel[buildType], eg. assembleDevKernelDebug) by @sjchmiela (3b5e158)
  • calling Haptic methods on Android will now raise an error instead of a warning by @EvanBacon (#2787)

🎉 New features

  • added locales on Android ([ar, cs, de, es-rGT, fr, he, jt, ja, ko, nb, nl, pl, pt-rBR, ru-rRU, vi, zh, zh-rCN, zh-rTW]) in ImagePicker.{launchImageLibraryAsync, launchCameraAsync} when using { allowsEditing: true } option by @bbarthec (#2955)
  • added support for passing refs created by React.createRef to takeSnapshotAsync by @sjchmiela (#2771)
  • upgraded Gradle plugin (to 3.2.1) and its wrapper (to 4.10.2) by @sjchmiela (#2716)
  • added new TaskManager module that paves the way to background code execution by @tsapeta (#2338)
  • added API for background location updates by @tsapeta (#2338)
  • added geofencing to Location module by @tsapeta (#2338)
  • added new BackgroundFetch module (iOS only) by @tsapeta (#2338)
  • allowed Expo Jest preset to use TypeScript files by @dalcib (#2810)
  • allowed selecting voice used by Speech on iOS by @pyankoff (#2833)
  • removed obsolete assets from standalone apps by @sjchmiela (#2850)
  • added support for notifications categories by @Szymon20000 and @sjchmiela (#2316, #2557)
  • upgraded libraries: react-native-gesture-handler to 1.0.12, react-native-screens to 1.0.0-alpha.22, react-native-reanimated to 1.0.0-alpha.11 by @tsapeta and @sjchmiela (#2977, #3078, #3172, #3232)

🐛 Bug fixes

  • fixed problem with rerendering SVG (updated react-native-svg to 8.0.10) by @Szymon20000 (#3019)
  • fixed wrong type casting in SQLite result @Szymon20000 (#3005)
  • fixed sending multiple consecutive SMS messages on iOS @bbarthec (#2939)
  • fixed GLView initialization with texture of size 0 on Android by @bbarthec (#2907)
  • fixed app cache size blowing up when using ImagePicker by @sjchmiela (#2750)
  • fixed compression in ImagePicker by @Szymon20000 (#2746)
  • fixed FileSystem forbidding access to external directories by @Szymon20000 (#2748, #2808)
  • upgraded Facebook SDK dependency to 4.39 by @Szymon20000 and @sjchmiela (#2710, #3243)
  • fixed object not beign decycled when sending logs to remote console by @sjchmiela (#2598)
  • unified linear gradient behavior across platforms by @sjchmiela (#2624)
  • fixed device orientation not being used when recording videos by @flippinjoe (expo-camera#2)
  • fixed handling quality option passed to Camera.takePictureAsync on Android properly by @Szymon20000 (#2692)
  • fixed resumable downloads on iOS by base64-encoding resumeData by @Szymon20000 (#2698)
  • fixed Permissions.LOCATION issue that wouldn't allow asking for it in a multi-permission call by @sjchmiela (304fe560)
  • fixed onActivityResult not being called on listeners registered to ReactContext by @sjchmiela (#2768)
  • fixed fatal exception being thrown sometimes on Android when detecting barcodes by @sjchmiela (#2772)
  • fixed GLView.takeSnapshotAsync crashing on Android if framebuffer option is specified by @tsapeta (#2888)
  • fixed onPlaybackStatusUpdate not being called with didJustFinish: true when playing with looping enabled on Android by @sjchmiela (#2923)
  • fixed bundle building/downloading progress indicator not showing in ejected apps by @sjchmiela (#2951, #2954)
  • fixed subscription.remove() not calling native stopObserving() for universal modules by @ide (#2897)
  • fixed calendar ID being returned as integer instead of a string on Android (when calling eg. Calendar.createCalendarAsync) by @Szymon20000 (#3004)
  • fixed wrong fling direction for inverted ScrollViews on Android by @mandrigin (pulled in from React Native facebook/react-native@b971c5b)
  • fixed snapping Android ScrollViews with pagingEnabled by @olegbl (pulled in from React Native facebook/react-native@0869e54)
  • fixed Contacts failing to add and remove contacts on Android by @tsapeta (#3017)
  • fixed Permissions.CONTACTS not asking for Android's WRITE_CONTACTS permission by @tsapeta (#3017)

31.0.6

  • fixed expo-cli wrapper failing on Windows by @fson (#2853)

31.0.5

31.0.4

31.0.3

31.0.2

  • pass undefined through for startPoint and endPoint rather than null in LinearGradient by @brentvatne (643969)
  • remove require cycle in AV by @ide (18d54da)

31.0.1

  • filter out warnings about require cycles in node_modules by @ide (68d130d)

31.0.0 (Partial Changelog)

🛠 Breaking changes

  • The default export from the expo package is deprecated in favor of named exports to pave the way for static analysis tools by @ide (#2387)
  • remove default user_friends permission when authenticating with Facebook module by @EvanBacon (2ad86fad)
  • dropped iOS 9 support by @Szymon20000 (#2324)
  • upgrade react-native-svg to 8.0.8 by @sjchmiela and @esamelson (#2492)
  • upgrade React Native to v0.57.1 by @ide (series of commits, eg. 250589)
  • change translation field to adTranslation in an ad object returned by FacebookAds.NativeAdView by @ide (ece59aa)
  • refreshed, bug-free Localization API by @EvanBacon (#2327)
  • drop Android 4.4 support by @bbarthec (#2367)
  • upgrade underyling Facebook SDK native dependencies to 4.37.0 by @sjchmiela (#2508)
  • upgrade react-native-view-shot to 2.5.0 by @sjchmiela (#2518)
  • upgrade react-native-maps to 0.22.1 by @tsapeta and @sjchmiela (#2496, #2680)
  • FacebookAds.TriggerableView is now FacebookAds.AdTriggerView
  • FacebookAds.MediaView is now FacebookAds.AdMediaView
  • The Speech API’s "onError" function is passed an Error instead of a string
  • Flow types have been removed as we begin to migrate to TypeScript over the next few SDK releases
  • Several Haptic enum types have been renamed: NotificationTypes → NotificationFeedbackType, ImpactStyles → ImpactFeedbackStyle
  • Several AR enum types have been renamed: BlendShapes → BlendShape, FaceAnchorProps → FaceAnchorProp, PlaneDetectionTypes → PlaneDetection, WorldAlignmentTypes → WorldAlignment, EventTypes → EventType, AnchorTypes → AnchorType, AnchorEventTypes → AnchorEventType, FrameAttributes → FrameAttribute, TrackingStates → TrackingState, TrackingStateReasons → TrackingStateReason, TrackingConfigurations → TrackingConfiguration
  • Audio.Sound.create has been renamed to createAsync
  • Upgrade Babel to 7.0.0 by @ide (#2373)

🎉 New features

  • return permitted/declined permissions arrays when authenticating with Facebook module by @EvanBacon (2ad86fad)
  • Base64 encoding support for FileSystem by @EvanBacon (#2328)
  • video stabilization support in Camera by @n8 (#2241)
  • add support for asking for an authorization to always access location data by @sjchmiela (#2343)
  • upgrade react-native-gesture-handler to 1.0.8, react-native-reanimated to 1.0.0-alpha.10, react-native-screens to 1.0.0-alpha.15 by @brentvatne (eb2a463, 9bf1754)
  • add Segment.{get,set}EnabledAsync feature by @sjchmiela (#2412)
  • add an Android-only timeout option to Location.getCurrentPositionAsync by @bbarthec (#2369)
  • add support for providing custom headers to send when requesting media source by @sjchmiela (#2431)
  • add Segment.alias support by @sjchmiela (#2440)
  • upgrade Android JSC to r224109 by @esamelson and @Kmakinator (#2437)
  • add LocalAuthentication.supportedAuthenticationTypes method by @bbarthec (#2450)
  • add support for new Apple devices to Constants by @tsapeta (#2410)

🐛 Bug fixes

  • fix react-native-svg toDataURL() method throwing error (undefined is not an object (evaluating 'RNSVGSvgViewManager.toDataURL')) on Android by @sjchmiela (#2492)
  • fix nested traits and properties being stringified on Android in the Segment module, instead of being reported as objects by @sjchmiela (expo-analytics-segment#2, #2517)
  • handle specified behavior on Android when authenticating with Facebook by @EvanBacon (2ad86fad)
  • fix MediaLibrary returning stale assets from getAssetsAsync by @Aasfga (#2106, 09cba8d)
  • fix Pedometer.watchStepCount erroring on Android by @Szymon20000 (#2147, dea2967)
  • fix Branch links not working when first opened on iOS by @AdamPD (#2158)
  • asking for Permissions.BRIGHTNESS no longer throws AbstractMethodError exception on some Android devices by @bbarthec (#2342)
  • properly handle some screen orientation configurations (on iPhone X PortraitUpsideDown is not supported) by changing sync ScreenOrientation.allow method to async ScreenOrientation.allowAsync throwing an error when trying to set an unsupported screen orientation configuration by @bbarthec (af2d7e3)
  • fix Linking.getInitialURL returning a customschemed:// URL instead of the one that really redirected to the application by @schneidmaster (#2352)
  • fix FaceDetector settings not being applied on the first run by @sjchmiela (#2308)
  • update cameraview AAR for it to contain getCameraId() method by @sjchmiela (expo-camera#4, #2323)
  • fix rerendering of ads provided by FacebookAds module by @ide (85f2014)
  • fix a fatal exception being thrown when pausing a resumable download on iOS 12 by @sjchmiela (#2404)
  • fix universal modules being initialized twice by @sjchmiela (#2417)
  • fix media players refusing to redirect from a HTTPS URL to another HTTPS URL on Android by @sjchmiela (#2403)
  • fix SMS.sendSMSAsync not returning correct result on Android by @bbarthec (#2452)
  • fix barcode scanner not working on Pixel 2 by @alexshikov (#2081)
  • fix “Font doesn't support automatic scaling” errors on iOS < 12 by @sjchmiela (#2480)
  • fix missing “Orientation” tag in ImagePicker EXIF data by @bbarthec (#2432)
  • fix react-native-screens compatibility with Expo by @tsapeta (#2509)