React Native 0.77 is now available with Expo SDK 52

Jan 21, 2025 by

Avatar of Vojtech Novak

Vojtech Novak

Today, React Native 0.77 was released, and Expo SDK 52 now supports both React Native 0.76 and 0.77. Typically, an Expo SDK version is tied to a specific React Native version. For example, Expo SDK 50 was only tested against and expected to be compatible with React Native 0.73, and tools such as Expo CLI and Doctor will validate that you are using the expected version. We've decided that this isn't necessary for React Native 0.77. As a result, this should be an even quicker upgrade than usual – if you choose to upgrade.

React Native 0.77 + SDK 52

React Native 0.77 was released, and Expo SDK 52 now supports both React Native 0.76 and 0.77.

Why no full SDK release for React Native 0.77?

The 0.77 release includes a number of bug fixes and improvements, but React Native engineers at Meta consider it to be a relatively small release.

To minimize the disruption of SDK releases, we opted for adding support for both 0.76 and 0.77 to the same SDK release. Previously, we have taken this approach with React Native 0.74 and 0.75 with SDK 51.

How to use React Native 0.77 with Expo SDK 52

The default React Native version for Expo SDK 52 will continue to be 0.76. You can opt in to use version 0.77 by following these steps:

1. Exclude packages from version validations

All Expo packages will work with both 0.76 and 0.77 versions. However, some other popular libraries that we include in the Expo SDK and validate against do not have releases that are compatible with both versions simultaneously. For example, react-native-reanimated@3.16.1 does not support React Native 0.77, you will need to use react-native-reanimated@~3.16.7.

To avoid warnings about incompatible versions, you can exclude packages from version validations. This is done by adding the expo.install.exclude property to your package.json file. For example:

{
  "expo": {
    "install": {
      "exclude": [
        "react-native@~0.77.0",
        "react-native-reanimated@~3.16.7",
        "react-native-gesture-handler@~2.22.0",
        "react-native-screens@~4.5.0",
        "react-native-safe-area-context@~5.1.0",
        "react-native-webview@~13.12.5"
      ]
    }
  }
}

This will ensure that Expo tools will not warn you about incompatible versions of react-native and react-native-reanimated, as long as the Expo SDK that you are using is recommending the specified versions. So, when you update to SDK 52, these exclusions will no longer apply because the recommended versions will have changed.

2. Install updated packages

Firstly, update expo to at least version 52.0.27. Then, install depdenencies compatible with React Native 0.77:

Terminal
npx expo install react-native@~0.77.0 react-native-reanimated@~3.16.7 react-native-gesture-handler@~2.22.0 react-native-screens@~4.5.0 react-native-safe-area-context@~5.1.0 react-native-webview@~13.13.1

3. Update your native projects

  • If you use CNG and have run prebuild locally, you will need to run npx expo prebuild --clean again to re-generate the native projects to pull in changes that make the app compatible with React Native 0.77.
  • If you do not use CNG, you will need to bump Kotlin and NDK versions in your Android project, for more details refer to the Native Project Upgrade Helper.

What's next?

We'll continue working on improving Expo and bringing in support for React Native 0.78 later this year. If you run into any issues with React Native 0.77 and Expo SDK 52, please file an issue.