DEV Community

Expo Team for Expo

Posted on • Updated on

Expo SDK 40 beta is now available

Learn about the changes, how to try it out, and how to give feedback.

As promised, our first-ever beta SDK release is now available! The beta period will last approximately one week, 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 40 beta includes React Native 0.63, the same version as SDK 39. 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.

A few changes to be aware of

  • AppLoading has been removed from the expo package. If you use it, you should expo install expo-app-loading and import AppLoading from its own package (possibly before first running your app with SDK 40 if you'd like to head off an error screen). Import it using import AppLoading from 'expo-app-loading'.
  • If you use React Navigation and react-native-screens, you will want to update to React Navigation v5 or silence the related warning from react-native-screens.
  • If you use background location features on Android, you will need to manually add "ACCESS_BACKGROUND_LOCATION" to the list of permissions in android.permissions in your app configuration file (app.json or app.config.js) if you haven't done so already. Background location is now an opt-in permission on Android (#10989).
  • @expo/vector-icons has been updated to track the latest icon sets from react-native-vector-icons@7.1.0 (the previously tracked version was 6.6.0). Updated icon sets: MaterialCommunityIcons to 5.3.45, MaterialIcons to 4.0.0, FontAwesome 5 to 5.13.0, and Feather to 4.28.0.

How to try out the beta release

You will be able to opt in to using the SDK 40 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 40 requires expo-cli@4.0.6 or greater)
  • Initialize a new project with SDK 40 beta:
    • EXPO_BETA=1 expo init
  • Upgrade an existing project:
    • EXPO_BETA=1 expo upgrade
  • Install the latest Expo client app for iOS:
    • To your simulator: EXPO_BETA=1 expo client:install:ios outside of an Expo project or inside of an SDK 40 project
    • To your physical device: use this TestFlight open beta link.
  • Install the latest Expo client app for Android:
    • EXPO_BETA=1 expo client:install:android outside of an Expo project or inside of an SDK 40 project.
  • Other commands will work as expected without the EXPO_BETA environment variable, including build:{android,ios}.
  • Use the beta release on Snack by adding a query parameter:
  • Read the documentation by selecting it from the version selector in the API reference section (or clicking here).

Screenshot of Expo API documentation version picker

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 40 beta so we can prioritize the issue.

Thank you for helping us with testing the release, we look forward to shipping it soon! 🚀

Discussion (8)

Collapse
lucashang profile image
Lucas Hang • Edited on

Is there a way of running "npx create-react-native-app " without using the latest version of expo?
A created a new project recently and tried to use some libs that I had working with expo 39.0.2, but apparently some of them dont want to work with expo 40.0.0.

Collapse
wobsoriano profile image
Robert

Any plans on updating to react 17?

Collapse
brentvatne profile image
Brent Vatne

we will support react 17 when there is a stable release of react-native that includes it. this looks like it will be react-native 0.64, which should be released soon, but it is too late in the expo sdk release cycle for us to update the react-native version. so, following the quarterly release cycle for expo, this is likely for Q1 or Q2 2021

Collapse
wobsoriano profile image
Robert

Awesome. Thanks!

Collapse
bananadre profile image
Bananadre

No info regarding react native for web :( what will be supported? any new features or improvements there?

Collapse
brentvatne profile image
Brent Vatne

the latest version of react-native-web is supported. see the changelog linked to above for fixes and improvements to expo modules on web.

Collapse
rohovdmytro profile image
Rohov Dmytro

Amazing.

What is the recommended way to create scheduled repeating every day notifications in SDK 39?

Collapse
brentvatne profile image
Brent Vatne

here's how to schedule notifications at various intervals: docs.expo.io/versions/latest/sdk/n...

it is an exercise to the reader to make it work for the specific interval that they would like ;)