Learn about the changes, how to try it out, and how to give feedback
The beta period will last approximately two weeks, and it is an opportunity for developers to ensure that the new release does not introduce any regressions for their particular system and app configurations.
SDK 41 beta includes React Native 0.63, the same version as SDK 39 and 40. The full release notes won’t be available until the final release, but you can browse the changes in the expo/expo CHANGELOG to learn more about the scope of the release and any breaking changes.
Notable changes to be aware of
@react-native-community/async-storage
is now@react-native-async-storage/async-storage
. You must change to the new package in SDK 41.Files with the
.expo
extension (eg:MyComponent.expo.js
) are no longer recognized as source files. If your project source code or dependencies include any files with the.expo.
extension,expo-cli
will let you know when you upgrade. Refer to expo.fyi/expo-extension-migration for more information.iOS 10 support has been dropped — Expo SDK 41 supports iOS 11+. One of the reasons for dropping iOS 10 was to reduce the size of prebuilt binaries for Expo packages.
Node 10 support will be dropped soon from Expo CLI - it's not that we have anything against the number 10, but Node 10 is about to be replaced by Node 12 as the Maintenance LTS release.
Deprecated globals have been removed from the
expo
package.expo-linear-gradient
,expo-linking
,expo-location
,expo-permissions
, andexpo-sqlite
are no longer automatically installed in every project. If you were depending onglobal.expo.LinearGradient
or similar, please the respective package and import the API from there instead, eg:import { LinearGradient } from 'expo-linear-gradient';
expo-permissions
has been deprecated in favor of module-specific permissions methods, eg:Permissions.askAsync(Permissions.CAMERA)
➡️Camera.requestPermissionsAsync()
.Android apps now target Android R (11 / SDK 30). This comes with some significant changes for location permissions, media library (related to StorageAccessFramework), and constants. Please note that these changes also impact SDK <= 40 projects in Expo Go, but they will not impact SDK <= 40 standalone apps. Refer to expo.fyi/android-r for more information.
The recommended version of
react-native-reanimated
has been updated to v2. If you would like to use v2 features in your app, you need to add the Babel plugin. You can continue to use v1 features (eg: those used by React Navigation v5) without adding the Babel plugin. Please note that if you use the new features from v2, you will not be able to use remote JS debugging in your app! This is only possible in v2 using Flipper, which is not yet fully supported in the managed workflow.The new version of
react-native-screens
(v3) “enables screens” by default. If you encounter any related issues, you can report the issue and opt out withenableScreens(false)
.lottie-react-native
has been updated to the latest version! Your existing animations should continue to work as before, but if you encounter any issues please file an issue and share the animation file.
Known regressions
Outstanding
- Bitcode has been disabled on SDK 41 standalone apps for iOS, pending facebook/facebook-ios-sdk#1698.
Resolved
Textures in
expo-gl
on Android are not currently working in published SDK 41 projects in Expo Go or standalone apps. Related pull request.lottie-react-native crashes on iOS. Related pull request.
How to try out the beta release
You will be able to opt in to using the SDK 41 beta by setting the EXPO_BETA environment variable to 1 (or some truthy value).
On macOS and Linux, you can set this per command with EXPO_BETA=1 expo <command>
. On Windows, you can do the same with cross-env: npx cross-env EXPO_BETA=1 expo <command>
. Below we have listed in the commands in their more concise form.
Install the latest version of expo-cli:
npm i -g expo-cli
(SDK 41 requires expo-cli@4.3.2 or greater)
Initialize a new project with SDK 41 beta:
EXPO_BETA=1 expo init
Upgrade an existing project:
EXPO_BETA=1 expo upgrade
Install the latest Expo Go for iOS to your simulator:
EXPO_BETA=1 expo client:install:ios
outside of an Expo project or inside of an SDK 41 project
Install the latest Expo Go for iOS to your physical device:
Use this TestFlight open beta link and follow the instructions.
Install the latest Expo Go for Android:
EXPO_BETA=1 expo client:install:android
outside of an Expo project or inside of an SDK 41 project.
Running other CLI commands
Other commands will work as expected without the EXPO_BETA
environment variable, including build:{android,ios}
.
Read the documentation by selecting it from the version selector in the API reference section:
https://docs.expo.io/versions/v41.0.0
What to test
Try ejecting your app and running it:
expo eject
. Did it work without any changes? Perfect! No? Please report it on the SDK 41 Beta Eject Issues Issue.Media library and permissions changes made for Android R may impact your app. We'd appreciate your feedback on how they work for your app.
Did we miss updating the documentation somewhere? Let us know.
How to report issues
Create an issue on https://github.com/expo/expo/issues and be sure to fill out the template.
Figuring out the underlying causes of issues is super helpful.
Let us know that you are using the SDK 41 beta so we can prioritize the issue.
Thank you for helping us with testing the release, we look forward to shipping it soon! 🚀
Top comments (0)