releases.shpreview
Expo/Expo Changelog/Expo SDK 51 beta is now available

Expo SDK 51 beta is now available

$npx -y @buildinternet/releases show rel_kAOVTnpOoG4zh_2BMg2W7

APR 24, 2024

The SDK 51 beta period begins today and will last approximately one week. The beta is an opportunity for developers to test out the SDK and ensure that the new release does not introduce any regressions for their particular systems and app configurations. We're also hosting office hours for those of you interested in helping test the release!

SDK 51 beta includes React Native 0.74. The full release notes for SDK 51 won't be available until the stable 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.

New default project template

When you create a new project with npx create-expo-app --template default@beta, you will see a renovated new project template! It includes common dependencies and configuration that most projects need, so you can hit the ground running.

You can run npm run reset-project to remove all of the boilerplate code and start fresh.

Highlights

  • "Next" Camera and SQLite APIs are now the default. expo-camera/next is now exported from expo-camera, and expo-sqlite/next is now exported from expo-sqlite. You can find the old versions at expo-camera/legacy and expo-sqlite/legacy during SDK 51, and they will be removed in SDK 52.

  • Beta release of new expo-video library. Following the success of the "next" Camera and SQLite APIs, we are releasing a new video library that incorporates learnings from maintaining expo-av over the years. This library is a complete rewrite of the Video functionality from expo-av, and it's designed to be more reliable and easier to use.

  • iOS Privacy manifest config field: Beginning on May 1, Apple will require that apps using any "restricted reason" APIs include a privacy manifest. We have added support for the privacy manifest to the Expo config.

  • New expo-symbols library provides access to the iOS SF Symbols library. This package provides a way to use SF Symbols, a collection of over 5000 icons with multiple weights, scales, and support for animations.

  • Fingerprint runtime version policy promoted from experimental to beta: By using the "runtimeVersion": { "policy": "fingerprint" } field in your app.json, you can be confident that your updates will always target compatible native runtimes.

  • ESLint config and npx expo lint command: You can now run npx expo lint in your project to generate an ESLint config file that extends from eslint-config-expo.

  • Modernized library build.gradle. If you maintain an Expo module, you can apply the changes from this diff.

  • Bundler speed improvements: EXPO_USE_FAST_RESOLVER=1 can be set to enable up to 6x faster Metro resolution.

  • Expo CLI supports running on iOS devices over the network and for Vision Pro simulators. Use npx expo run:ios --device to pick a device from the list of available devices on your network.

  • Expo Orbit for Windows is available in beta. One click to download, install, and run your apps, now for Windows too!

  • EAS Build default worker image for iOS builds now uses macOS 14.4 and Xcode 15.3

  • React Native 0.74 and React 18.2.0 (unchanged from SDK 50). Yoga has been upgraded to 3.0, which improves layout correctness and adds support for two additional layout properties. TextEncoder, btoa, atob are now globally available in Hermes.

Notable breaking changes

  • expo-camera imports have changed: If you want to continue using the legacy implementation, update your imports from expo-camera to expo-camera/legacy. If you were already using the "next" implementation, update the imports from expo-camera/next to expo-camera.

  • expo-sqlite imports have changed: If you want to continue using the legacy implementation, update your imports from expo-sqlite to expo-sqlite/legacy. If you were already using the "next" implementation, update the imports from expo-sqlite/next to expo-sqlite.

  • Fingerprint runtime version policy has been renamed: "runtimeVersion": { "policy": "fingerprintExperimental" }"runtimeVersion": { "policy": "fingerprint" } in your app.json.

  • The hooks field has been removed from app.json: This was previously used for Classic Updates and sentry-expo, which was deprecated in SDK 50.

  • sentry-expo is no longer supported, use @sentry/react-native instead. In SDK 50, sentry-expo was deprecated in favor of @sentry/react-native.

  • Expo Go only supports a single SDK version as of SDK 51.

New Architecture is rolling out in 2024!

SDK 51 and React Native 0.74 represent a huge step forward in rolling out the long-awaited New Architecture for React Native.

  • We have added support for "bridgeless", one of the pillars of the New Architecture, to nearly all Expo modules and the Expo Modules API.
  • We worked in close collaboration with the React Native team at Meta and developers in the React Native ecosystem to ensure there would be support for the New Architecture in many of the most commonly used packages on EAS Build.

Testing your app with the New Architecture

There is still work to do, but we've made incredible progress so far this year and we think SDK 51 and React Native 0.74 is the time to test your apps with the New Architecture. With your help, we can enable the New Architecture by default in SDK 52.

Most apps will run into some issues when testing with the New Architecture today, but we encourage you to try and report your experience. Improvements will be arriving rapidly during the SDK 51 and React Native 0.74 cycle.

Single SDK version in Expo Go

Starting with SDK 51, Expo Go will only support a single SDK version at a time. This means that when the new Expo Go version supporting SDK 51 is released to the App Store and Play Store, it will only support SDK 51. It will not support SDK 50 or below.

The Expo Go app will continue to be a great sandbox to get started quickly and experiment with ideas, but we encourage adopting development builds for a flexible and powerful development environment suitable for real-world applications at scale.

We created expo.dev/go, a website that makes it easy to install a compatible version of Expo Go on your target platform.

Expo Router v3.5

Most of the user-facing changes in the latest release of Expo Router are bug fixes and improvements based on feedback from the community. Some notable changes include:

  • Support for the # segment in URLs with const { "#": hash } = useLocalSearchParams().
  • Added new router functions for dismissing routes: router.dismiss(), .dismissAll() and .canDismiss()
  • Removed ExpoRequest and ExpoResponse objects in favor of built-in WinterCG-compliant Request/Response objects.
  • Support for platform specific extensions for routes and _layout files (a platform agnostic version is still required).
  • Support to handle rewriting deeplinked URLs.
  • Improvements to Typed Routes.
  • Href in typed routes is no longer generic.
  • Fixes issues for experiments.baseUrl support on web.

Known issues

  • Alerts rendered incorrectly after system UI windows for biometric authentication, and perhaps others. This will be fixed in an upcoming React Native patch release.

Known regressions

Found an issue? Report a regression.

How to try out the beta release

Initialize a new project with SDK 51 beta:

  • npm: npx create-expo-app@latest --template default@beta
  • bun: bun create expo-app --template default@beta
  • pnpm: pnpm create expo-app --template default@beta
  • yarn: yarn create expo-app --template default@beta

Upgrade an existing project:

  • Upgrade all dependencies to match SDK 51: npx expo install expo@next --fix

Install the latest Expo Go for iOS to your physical device:

  • Use the TestFlight open beta link and follow the instructions.

Install the latest Expo Go for iOS simulators or Android emulators/physical devices:

  • Launch your project through Expo CLI (press the i or a keyboard shortcut after running npx expo start) and the updated version of Expo Go will be automatically installed.

Note: SDK 51 beta is not yet available on Snack.

What to test

  • Upgrade your app with npm install expo@next or yarn add expo@next, then run npx expo install --fix and consult the Native project upgrade helper and report any issues you encounter.
  • Build your app with EAS Build, and/or if you have Xcode installed and up to date on your machine and/or Android Studio, try prebuilding your app and running it: npx expo prebuild --clean and npm run ios and npm run android. Alternatively, try out npx expo run.
  • Let us know if we missed updating the documentation somewhere.

How to report issues

  • Create an issue on https://github.com/expo/expo/issues and be sure to fill out the appropriate template (and include a minimal reproducible example).
  • Figuring out the underlying causes of issues is super helpful.
  • Let us know that you are using the SDK 51 beta so we can prioritize the issue.
  • The most helpful beta testers will be listed in the final release notes.

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

Fetched April 8, 2026