HomeGuidesReferenceLearn

Reference


The Expo SDK provides access to device and system functionality such as contacts, camera, gyroscope, GPS location, and so on, in the form of packages. You can install any Expo SDK package using the npx expo install command. For example, three different packages are installed using the following command:

Terminal
npx expo install expo-camera expo-contacts expo-sensors

After installing one or more packages, you can import them into your JavaScript code:

import { Camera } from 'expo-camera';
import * as Contacts from 'expo-contacts';
import { Gyroscope } from 'expo-sensors';

This allows you to write Contacts.getContactsAsync() and read the contacts from the device, read the gyroscope sensor to detect device movement, or start the phone's camera and take photos.

All Expo SDK packages work in any React Native app

Expo apps are React Native apps, so all Expo SDK packages work in any React Native app with the expo package installed and configured. The easiest way to create a React Native app with support for Expo SDK packages is to use create-expo-app. However, you can also add Expo SDK support to an existing React Native app with the npx install-expo-modules command.

Terminal
# Create a project named my-app
npx create-expo-app my-app --template bare-minimum
Install Expo SDK packages in existing React Native apps

Learn more about configuring projects created with npx react-native init to Expo SDK packages.

Using libraries

Learn how to install Expo SDK packages in your project.

Using pre-release versions

New Expo SDK versions are released three times each year. Between these releases, we publish pre-release versions of the expo package and all of the Expo SDK packages. Pre-releases are not considered stable and should only be used if you are comfortable with the risk of encountering bugs or other issues.

Pre-release versions of the expo package are versioned with an -alpha suffix, such as 50.0.0-alpha.1. To install, for example, SDK 50 alpha, you can run the following command:

Terminal
# Install the alpha version of expo and its related packages
npm install expo@50.0.0-alpha && npx expo install --fix

You can often use pre-release versions of individual packages with stable releases of the Expo SDK. There may occasionally be incompatibilities or other issues that arise in alpha-quality releases. You may want to silence dependency validation warnings if you opt in to the alpha package and once you have verified that it works well for your use cases.

Each Expo SDK version depends on a React Native version

Every quarter there is a new Expo SDK release that typically updates to the latest stable versions of React Native and React Native Web, and includes a variety of bug fixes, features, and improvements to the Expo SDK.

Expo SDK versionReact Native versionReact Native Web version
49.0.00.720.19.6
48.0.00.710.18.10
47.0.00.700.18.9
46.0.00.690.18.7

Support for other React Native versions

Packages in the Expo SDK are intended to support the target React Native version for that SDK. Typically, they will not support older versions of React Native, but they may. When a new version of React Native is released, the latest versions of the Expo SDK packages are typically updated to support it. However, this may take weeks or more, depending on the extent of the changes in the release.

Support for Android and iOS versions

Each version of Expo SDK supports a minimum OS version of Android and iOS. For Android, the compileSdkVersion is defined which tells the Gradle which Android SDK version to use to compile the app. This also means that you can use the Android API features included in that SDK version and from the previous versions.

Expo SDK versionAndroid versioncompileSdkVersioniOS version
49.0.05+3313+
48.0.05+3313+
47.0.05+3113+
46.0.05+3112.4+