DEV Community

Expo Team for Expo

Posted on • Edited on

Expo SDK 41 beta is now available

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, and expo-sqlite are no longer automatically installed in every project. If you were depending on global.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 with enableScreens(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

Resolved

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:

Screen Shot 2021-03-30 at 9.29.07 AM

https://docs.expo.io/versions/v41.0.0

What to test

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)