Expo SDK 41 beta is now available
Published: 2021-03-30 18:23:38

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](https://github.com/expo/expo/blob/master/CHANGELOG.md) 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](https://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](https://github.com/expo/fyi/blob/master/deprecated-globals.md) 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](https://android-doc.github.io/guide/topics/providers/document-provider.html)), 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](https://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](https://docs.swmansion.com/react-native-reanimated/docs/installation/#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

* Bitcode has been disabled on SDK 41 standalone apps for iOS, pending [facebook/facebook-ios-sdk#1698](https://github.com/facebook/facebook-ios-sdk/pull/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](https://github.com/expo/expo/pull/12428).

* lottie-react-native crashes on iOS. [Related pull request](https://github.com/expo/expo/pull/12377).

## 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](https://www.npmjs.com/package/getenv/v/0.7.0#envboolishname-fallback)).

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](https://testflight.apple.com/join/GZJxxfUU) 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://dev-to-uploads.s3.amazonaws.com/uploads/articles/sbu81b2u6sz34bqvizfl.png)

[https://docs.expo.io/versions/v41.0.0](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](https://github.com/expo/expo/issues/12356).

* [Media library and permissions changes made for Android R](https://expo.fyi/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](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! 🚀