This is the log of notable changes to the Expo client that are developer-facing.
- Removed
promptMessageIOS
string argument fromLocalAuthentication.authenticateAsync
in favor of options object. (#4631 by @tsapeta)
- Added
fallbackLabel
option toLocalAuthentication.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)
- updated
react-native-gesture-handler
to1.2.1
by @mczernek (#4159) - updated
react-native-svg
to9.4.0
by @Szymon20000 and @mczernek (#3860, #4159) - updated
@react-native-community/netinfo
to2.0.10
by @sjchmiela (#4153) - updated
react-native-reanimated
to1.0.1
by @dsokal (#4023) - removed deprecated
MediaView
andTriggerView
fromexpo-ads-facebook
by @EvanBacon (#3539). You should useAdMediaView
&AdTriggerView
instead. - deprecated
Expo.Util
by @EvanBacon (#3539). You should useExpo.Updates
&Expo.Localization
instead. - removed use of
expolib_v1.okhttp
in favor of regularokhttp
dependency by @Szymon20000 (#3539) (an update toMainApplication.getOkHttpBuilder
may be required when upgrading) - corrected behavior of splash screen image based on
resizeMode
in Android standalone apps (contain
andcover
were handled contrary to what docs state) by @bbarthec (#3029) Speech.speak
changed option name fromvoiceIOS
tovoice
. @Szymon20000 (#3423)- renamed
Haptic
toHaptics
and deprecatedHaptics.{notification, impact, selection}
in favour ofHaptics.{notificationAsync, impactAsync, selectionAsync}
@bbarthec (#3330) ImageManipulator.manipulateAsync
is now acceptingImageManipulator.FlipType.{Vertical, Horizontal}
as flipping action parameter andImageManipulator.SaveFormat.{JPEG, PNG}
as saving option @bbarthec (#3245)- removed
devKernel
andprodKernel
build flavors from Android ExpoKit projects (all Gradle commands become simply[verb](Debug|Release)
, e.g.installDebug
orassembleRelease
) by @esamelson (#3386) - renamed
IntentLauncherAndroid
toIntentLauncher
and changed signature ofstartActivityAsync
method by @tsapeta (#3427) - fixed crash in
WebBrowser.openBrowserAsync
when there is no browser supportingcustomtabs
on Android by @mczernek (#3691) WebBrowser.openBrowserAsync
on Android resolves promise on opening Custom Tabs instead of on closing by @mczernek (#3691)WebBrowser.dismissBrowser
throwsUnavailabilityError
@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 toEncodingType
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 andAppDelegate
callbacks by @Szymon20000 (#3917) - changed
Constants.platform.ios.buildNumber
andConstants.platform.android.versionCode
tonull
when running an app in Expo Client by @dsokal (#4203) - upgraded
react-native-maps
to0.24.2
by @sjchmiela (#3389, #4158, ejected projects will need to addHAVE_GOOGLE_MAPS=1
preprocessor definition toPodfile
) - removed option
sortBy.id
inexpo-media-library
by @jkhales (#4221)
- updated
react-native-view-shot
to2.6.0
by @sjchmiela (#4175) - added
VideoThumbnails
API allowing you to thumbnail videos by @graszka22 (#3980) - upgraded
react-native-lottie
to2.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
to5.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
andKeepAwake.deactivate
by @mczernek #3747 - added
deferredUpdatesInterval
anddeferredUpdatesDistance
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 inFileSystem
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 theactivityType
by @tsapeta (#4167) - added ability to load fonts by remote URI by @seekshiva (#2745)
- fixed several windows compatibility issues with
expo-yarn-workspaces
by @nattyrice - fixed several issues related to
expo-av
by @Szymon20000 (#3539) Location.getCurrentPositionAsync
andLocation.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
andImageManipulator.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 correctedGoogleSignInOptions.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 beingtrue
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 ofSegment.screenWithProperties
is now a{ [key: string]: any }
, instead of astring
by @juampi92 (#4053) - allow manipulating
http://
andhttps://
files usingImageManipulator
on iOS by @bbarthec (#3982) - providing
onPlaybackStatusUpdate
property toVideo
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 withoutfile://
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)
- 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
, andImageCropper
), which were never part of the Expo API by @ide (#2880) - removed deprecated
Expo.Fingerprint
API, which has been renamed toExpo.LocalAuthentication
to reflect other forms of authentication (ex: FaceID) by @ide (24e94d5
) - removed deprecated default export from the
expo
package. Instead ofimport Expo from 'expo'
, writeimport { A, B, C } from 'expo'
orimport * 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 inLocation
module in favor ofaccuracy
which gives much more options by @tsapeta (#2338) - removed support for deprecated
onBarCodeRead
prop onCamera
component by @Szymon20000 (#2820) (useonBarCodeScanned
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 totipsi-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 fromandroid
directory in favor offastlane 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)
- 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]
) inImagePicker.{launchImageLibraryAsync, launchCameraAsync}
when using{ allowsEditing: true }
option by @bbarthec (#2955) - added support for passing refs created by
React.createRef
totakeSnapshotAsync
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
to1.0.12
,react-native-screens
to1.0.0-alpha.22
,react-native-reanimated
to1.0.0-alpha.11
by @tsapeta and @sjchmiela (#2977, #3078, #3172, #3232)
- fixed problem with rerendering SVG (updated
react-native-svg
to8.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 toCamera.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 toReactContext
by @sjchmiela (#2768) - fixed fatal exception being thrown sometimes on Android when detecting barcodes by @sjchmiela (#2772)
- fixed
GLView.takeSnapshotAsync
crashing on Android ifframebuffer
option is specified by @tsapeta (#2888) - fixed
onPlaybackStatusUpdate
not being called withdidJustFinish: 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 nativestopObserving()
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
ScrollView
s on Android by @mandrigin (pulled in from React Native facebook/react-native@b971c5b) - fixed snapping Android
ScrollView
s withpagingEnabled
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'sWRITE_CONTACTS
permission by @tsapeta (#3017)
- updated
react-native-maps
JS dependency to0.22.1
by @sjchmiela (ebb536c
)
- upgraded
react-native-gesture-handler
JS dependency to1.0.9
by @brentvatne (ebb5cec
)
- fix filtering out warnings about
require
cycles innode_modules
by @serhiipalash (aaf72bf
) - fix
resizeMode
prop ofVideo
component by @ide (886b67d
)
- pass
undefined
through forstartPoint
andendPoint
rather thannull
inLinearGradient
by @brentvatne (643969
) - remove require cycle in AV by @ide (
18d54da
)
- 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 withFacebook
module by @EvanBacon (2ad86fad
) - dropped iOS 9 support by @Szymon20000 (#2324)
- upgrade
react-native-svg
to8.0.8
by @sjchmiela and @esamelson (#2492) - upgrade React Native to
v0.57.1
by @ide (series of commits, eg.250589
) - change
translation
field toadTranslation
in an ad object returned byFacebookAds.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
to2.5.0
by @sjchmiela (#2518) - upgrade
react-native-maps
to0.22.1
by @tsapeta and @sjchmiela (#2496, #2680) FacebookAds.TriggerableView
is nowFacebookAds.AdTriggerView
FacebookAds.MediaView
is nowFacebookAds.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 tocreateAsync
- 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
to1.0.8
,react-native-reanimated
to1.0.0-alpha.10
,react-native-screens
to1.0.0-alpha.15
by @brentvatne (eb2a463
,9bf1754
) - add
Segment.{get,set}EnabledAsync
feature by @sjchmiela (#2412) - add an Android-only
timeout
option toLocation.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)
- 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 withFacebook
by @EvanBacon (2ad86fad
) - fix
MediaLibrary
returning stale assets fromgetAssetsAsync
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 throwsAbstractMethodError
exception on some Android devices by @bbarthec (#2342) - properly handle some screen orientation configurations (on iPhone X
PortraitUpsideDown
is not supported) by changing syncScreenOrientation.allow
method to asyncScreenOrientation.allowAsync
throwing an error when trying to set an unsupported screen orientation configuration by @bbarthec (af2d7e3
) - fix
Linking.getInitialURL
returning acustomschemed://
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 containgetCameraId()
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)