Schema URL

Type: object

Properties

expo object required
44 nested properties
name string required

The name of your app as it appears both within Expo and on your home screen as a standalone app.

slug string required

The friendly url name for publishing. eg: expo.io/@your-username/slug.

pattern=^[a-zA-Z0-9_\-]+$
description string

A short description of what your app is and why it is great.

owner string

The username of the account under which this app is published. If not specified, the app is published as the currently signed-in user.

privacy array | boolean | number | object | string | null

Either public or unlisted. If not provided, defaults to unlisted. In the future private will be supported. unlisted hides the experience from search results.

Values: "public" "unlisted"
sdkVersion string

The Expo sdkVersion to run the project on. This should line up with the version specified in your package.json.

pattern=^(\d+\.\d+\.\d+)|(UNVERSIONED)$
version string

Your app version, use whatever versioning scheme that you like.

platforms string[]

Platforms that your project explicitly supports. If not specified, it defaults to ["ios", "android"].

uniqueItems=true
githubUrl string

If you would like to share the source code of your app on GitHub, enter the URL for the repository here and it will be linked to from your Expo project page.

pattern=^https://github\.com/
orientation array | boolean | number | object | string | null

Lock your app to a specific orientation with portrait or landscape. Defaults to no lock.

Values: "default" "portrait" "landscape"
userInterfaceStyle string

Configuration to force the app to always use the light or dark user-interface appearance, such as "dark mode", or make it automatically adapt to the system preferences. If not provided, defaults to light.

Values: "light" "dark" "automatic"
backgroundColor string

The background color for your app, behind any of your React views.

pattern=^(?:#|(#))[0-9a-fA-F]{6}$
primaryColor string

On Android, this will determine the color of your app in the multitasker. Currently this is not used on iOS, but it may be used for other purposes in the future.

pattern=^(?:#|(#))[0-9a-fA-F]{6}$
icon string

Local path or remote url to an image to use for your app's icon. We recommend that you use a 1024x1024 png file. This icon will appear on the home screen and within the Expo app.

notification object

Configuration for remote (push) notifications.

5 nested properties
icon string

Local path or remote url to an image to use as the icon for push notifications. 96x96 png grayscale with transparency.

color string

Tint color for the push notification image when it appears in the notification tray.

pattern=^(?:#|(#))[0-9a-fA-F]{6}$
iosDisplayInForeground boolean

Display the notification when the app is in foreground on iOS.

androidMode array | boolean | number | object | string | null

Show each push notification individually (default) or collapse into one (collapse).

Values: "default" "collapse"
androidCollapsedTitle string

If androidMode is set to collapse, this title is used for the collapsed notification message. eg: '#{unread_notifications} new interactions'.

loading object

DEPRECATED: Use splash instead. Configuration for the loading screen that users see when opening your app, while fetching & caching bundle and assets.

7 nested properties
icon string

Local path or remote url to an image to display while starting up the app. Image size and aspect ratio are up to you. Must be a .png.

exponentIconColor array | boolean | number | object | string | null

If no icon is provided, we will show the Expo logo. You can choose between white and blue.

Values: "white" "blue"
exponentIconGrayscale number

Similar to exponentIconColor but instead indicate if it should be grayscale (1) or not (0).

min=0max=1
backgroundImage string

Local path or remote url to an image to fill the background of the loading screen. Image size and aspect ratio are up to you. Must be a .png.

backgroundColor string

Color to fill the loading screen background

pattern=^(?:#|(#))[0-9a-fA-F]{6}$
hideExponentText boolean

By default, Expo shows some text at the bottom of the loading screen. Set this to true to disable.

loadingIndicatorStyleExperimental string

DEPRECATED: was used in the past for changing the style of the iOS loading indicator.

pattern=^light$
appKey string

By default, Expo looks for the application registered with the AppRegistry as main. If you would like to change this, you can specify the name in this property.

androidStatusBarColor string

DEPRECATED. Use androidStatusBar instead.

pattern=^(?:#|(#))[0-9a-fA-F]{6}$
androidStatusBar object

Configuration for the status bar on Android.

2 nested properties
barStyle string

Configures the status bar icons to have a light or dark color.

Values: "light-content" "dark-content"
backgroundColor string

Specifies the background color of the status bar.

pattern=^(?:#|(#))[0-9a-fA-F]{6}$
androidNavigationBar object

Configuration for the bottom navigation bar on Android.

3 nested properties
visible string

Determines how and when the navigation bar is shown.

Values: "leanback" "immersive" "sticky-immersive"
barStyle string

Configure the navigation bar icons to have a light or dark color. Supported on Android Oreo and newer.

Values: "light-content" "dark-content"
backgroundColor string

Specifies the background color of the navigation bar.

pattern=^(?:#|(#))[0-9a-fA-F]{6}$
androidShowExponentNotificationInShellApp boolean

Adds a notification to your standalone app with refresh button and debug info.

scheme string

URL scheme to link into your app. For example, if we set this to 'demo', then demo:// URLs would open your app when tapped.

pattern=^[a-z][a-z0-9+.-]*$
entryPoint string

The relative path to your main JavaScript file.

extra object

Any extra fields you want to pass to your experience. Values are accessible via Expo.Constants.manifest.extra (read more)

rnCliPath string
packagerOpts object
ignoreNodeModulesValidation boolean
nodeModulesPath string
updates object

Configuration for how and when the app should request OTA JavaScript updates

3 nested properties
enabled boolean

If set to false, your standalone app will never download any code, and will only use code bundled locally on the device. In that case, all updates to your app must be submitted through Apple review. Defaults to true. (Note that this will not work out of the box with ExpoKit projects)

checkAutomatically array | boolean | number | object | string | null

By default, Expo will check for updates every time the app is loaded. Set this to 'ON_ERROR_RECOVERY' to disable automatic checking unless recovering from an error.

Values: "ON_ERROR_RECOVERY" "ON_LOAD"
fallbackToCacheTimeout number

How long (in ms) to allow for fetching OTA updates before falling back to a cached version of the app. Defaults to 30000 (30 sec).

min=0max=300000
locales object

Provide overrides by locale for System Dialog prompts like Permissions Boxes

ios object

iOS standalone app specific configuration

22 nested properties
publishManifestPath string

The manifest for the Android version of your app will be written to this path during publish.

publishBundlePath string

The bundle for the Android version of your app will be written to this path during publish.

bundleIdentifier string

The bundle identifier for your iOS standalone app. You make it up, but it needs to be unique on the App Store. See this StackOverflow question.

pattern=^[a-zA-Z][a-zA-Z0-9\-\.]+$
buildNumber string

Build number for your iOS standalone app. Must be a string that matches Apple's format for CFBundleVersion.

pattern=^[A-Za-z0-9\.]+$
backgroundColor string

The background color for your iOS app, behind any of your React views. Overrides the top-level backgroundColor key if it is present.

pattern=^(?:#|(#))[0-9a-fA-F]{6}$
icon string

Local path or remote URL to an image to use for your app's icon on iOS. If specified, this overrides the top-level icon key. Use a 1024x1024 icon which follows Apple's interface guidelines for icons, including color profile and transparency. Expo will generate the other required sizes. This icon will appear on the home screen and within the Expo app.

merchantId string

Merchant ID for use with Apple Pay in your standalone app.

appStoreUrl string

URL to your app on the Apple App Store, if you have deployed it there. This is used to link to your store page from your Expo project page if your app is public.

pattern=^https://(itunes|apps)\.apple\.com/.*?\d+
config object
6 nested properties
branch object

Branch key to hook up Branch linking services.

usesNonExemptEncryption boolean

Sets ITSAppUsesNonExemptEncryption in the standalone ipa's Info.plist to the given boolean value.

googleMapsApiKey string

Google Maps iOS SDK key for your standalone app.

googleMobileAdsAppId string

Google Mobile Ads App ID Google AdMob App ID.

googleMobileAdsAutoInit boolean

A boolean indicating whether to initialize Google App Measurement and begin sending user-level event data to Google immediately when the app starts. The default in Expo (Client and in standalone apps) is false.

googleSignIn object

Google Sign-In iOS SDK keys for your standalone app.

isRemoteJSEnabled boolean

DEPRECATED: use updates.enabled instead.

googleServicesFile string

Firebase Configuration File GoogleService-Info.plist file for configuring Firebase.

loadJSInBackgroundExperimental boolean

DEPRECATED: use updates key with fallbackToCacheTimeout: 0 instead.

supportsTablet boolean

Whether your standalone iOS app supports tablet screen sizes. Defaults to false.

isTabletOnly boolean

If true, indicates that your standalone iOS app does not support handsets, and only supports tablets.

requireFullScreen boolean

If true, indicates that your standalone iOS app does not support Slide Over and Split View on iPad. Defaults to true currently, but will change to false in a future SDK version.

userInterfaceStyle string

Configuration to force the app to always use the light or dark user-interface appearance, such as "dark mode", or make it automatically adapt to the system preferences. If not provided, defaults to light.

Values: "light" "dark" "automatic"
infoPlist object

Dictionary of arbitrary configuration to add to your standalone app's native Info.plist. Applied prior to all other Expo-specific configuration. No other validation is performed, so use this at your own risk of rejection from the App Store.

associatedDomains array

An array that contains Associated Domains for the standalone app.

usesIcloudStorage boolean

A boolean indicating if the app uses iCloud Storage for DocumentPicker. See DocumentPicker docs for details.

usesAppleSignIn boolean

A boolean indicating if the app uses Apple Sign-In. See AppleAuthentication docs for details.

accessesContactNotes boolean

A Boolean value that indicates whether the app may access the notes stored in contacts. You must receive permission from Apple before you can submit your app for review with this capability: https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_developer_contacts_notes.

splash object

Configuration for loading and splash screen for standalone iOS apps.

5 nested properties
xib string

Local path to a XIB file as the loading screen. It overrides other loading screen options.

backgroundColor string

Color to fill the loading screen background

pattern=^(?:#|(#))[0-9a-fA-F]{6}$
resizeMode array | boolean | number | object | string | null

Determines how the image will be displayed in the splash loading screen. Must be one of cover or contain, defaults to contain.

Values: "cover" "contain"
image string

Local path or remote url to an image to fill the background of the loading screen. Image size and aspect ratio are up to you. Must be a .png.

tabletImage string

Local path or remote url to an image to fill the background of the loading screen. Image size and aspect ratio are up to you. Must be a .png.

android object

Android standalone app specific configuration

14 nested properties
publishManifestPath string

The manifest for the Android version of your app will be written to this path during publish.

publishBundlePath string

The bundle for the Android version of your app will be written to this path during publish.

package string

The package name for your Android standalone app. You make it up, but it needs to be unique on the Play Store. See this StackOverflow question.

pattern=^[a-zA-Z][a-zA-Z0-9_]*(\.[a-zA-Z][a-zA-Z0-9_]*)+$
versionCode integer

Version number required by Google Play. Increment by one for each release. Must be an integer. https://developer.android.com/studio/publish/versioning.html

backgroundColor string

The background color for your Android app, behind any of your React views. Overrides the top-level backgroundColor key if it is present.

pattern=^(?:#|(#))[0-9a-fA-F]{6}$
userInterfaceStyle string

Configuration to force the app to always use the light or dark user-interface appearance, such as "dark mode", or make it automatically adapt to the system preferences. If not provided, defaults to light.

Values: "light" "dark" "automatic"
icon string

Local path or remote url to an image to use for your app's icon on Android. If specified, this overrides the top-level icon key. We recommend that you use a 1024x1024 png file (transparency is recommended for the Google Play Store). This icon will appear on the home screen and within the Expo app.

adaptiveIcon object
3 nested properties
foregroundImage string

Local path or remote url to an image to use for your app's icon on Android. If specified, this overrides the top-level icon and the android.icon keys. Should follow the guidelines specified at https://developer.android.com/guide/practices/ui_guidelines/icon_design_adaptive. This icon will appear on the home screen.

backgroundImage string

Local path or remote url to a background image for your app's Adaptive Icon on Android. If specified, this overrides the backgroundColor key. Should follow the guidelines specified at https://developer.android.com/guide/practices/ui_guidelines/icon_design_adaptive.

backgroundColor string

Color to use as the background for your app's Adaptive Icon on Android.

pattern=^(?:#|(#))[0-9a-fA-F]{6}$
playStoreUrl string

URL to your app on the Google Play Store, if you have deployed it there. This is used to link to your store page from your Expo project page if your app is public.

pattern=^https://play\.google\.com/
permissions array

List of permissions used by the standalone app. Remove the field to use the default list of permissions.

Example: [ "CAMERA", "ACCESS_FINE_LOCATION" ].

You can specify the following permissions depending on what you need:

  • ACCESS_COARSE_LOCATION
  • ACCESS_FINE_LOCATION
  • CAMERA
  • MANAGE_DOCUMENTS
  • READ_CONTACTS
  • READ_EXTERNAL_STORAGE
  • READ_INTERNAL_STORAGE
  • READ_PHONE_STATE
  • RECORD_AUDIO
  • USE_FINGERPRINT
  • VIBRATE
  • WAKE_LOCK
  • WRITE_EXTERNAL_STORAGE
  • com.anddoes.launcher.permission.UPDATE_COUNT
  • com.android.launcher.permission.INSTALL_SHORTCUT
  • com.google.android.c2dm.permission.RECEIVE
  • com.google.android.gms.permission.ACTIVITY_RECOGNITION
  • com.google.android.providers.gsf.permission.READ_GSERVICES
  • com.htc.launcher.permission.READ_SETTINGS
  • com.htc.launcher.permission.UPDATE_SHORTCUT
  • com.majeur.launcher.permission.UPDATE_BADGE
  • com.sec.android.provider.badge.permission.READ
  • com.sec.android.provider.badge.permission.WRITE
  • com.sonyericsson.home.permission.BROADCAST_BADGE
googleServicesFile string

Firebase Configuration File google-services.json file for configuring Firebase.

config object
6 nested properties
branch object

Branch key to hook up Branch linking services.

fabric object

Google Developers Fabric keys to hook up Crashlytics and other services.

googleMaps object

Google Maps Android SDK key for your standalone app.

googleMobileAdsAppId string

Google Mobile Ads App ID Google AdMob App ID.

googleMobileAdsAutoInit boolean

A boolean indicating whether to initialize Google App Measurement and begin sending user-level event data to Google immediately when the app starts. The default in Expo (Client and in standalone apps) is false.

googleSignIn object

Google Sign-In Android SDK keys for your standalone app.

splash object

Configuration for loading and splash screen for standalone Android apps.

7 nested properties
backgroundColor string

Color to fill the loading screen background

pattern=^(?:#|(#))[0-9a-fA-F]{6}$
resizeMode array | boolean | number | object | string | null

Determines how the image will be displayed in the splash loading screen. Must be one of cover, contain or native, defaults to contain.

Values: "cover" "contain" "native"
mdpi string

Local path or remote url to an image to fill the background of the loading screen. Image size and aspect ratio are up to you. Must be a .png.

hdpi string

Local path or remote url to an image to fill the background of the loading screen. Image size and aspect ratio are up to you. Must be a .png.

xhdpi string

Local path or remote url to an image to fill the background of the loading screen. Image size and aspect ratio are up to you. Must be a .png.

xxhdpi string

Local path or remote url to an image to fill the background of the loading screen. Image size and aspect ratio are up to you. Must be a .png.

xxxhdpi string

Local path or remote url to an image to fill the background of the loading screen. Image size and aspect ratio are up to you. Must be a .png.

intentFilters object[]

An array of intent filters.

uniqueItems=true
web object

Web platform specific configuration

19 nested properties
favicon string

Relative path of an image to use for your app's favicon.

name string

Defines the title of the document, defaults to the outer level name

shortName string

A short version of the app's name, 12 characters or fewer. Used in app launcher and new tab pages. Maps to short_name in the PWA manifest.json. Defaults to the name property.

lang string

Specifies the primary language for the values in the name and short_name members. This value is a string containing a single language tag.

scope string

Defines the navigation scope of this website's context. This restricts what web pages can be viewed while the manifest is applied. If the user navigates outside the scope, it returns to a normal web page inside a browser tab/window. If the scope is a relative URL, the base URL will be the URL of the manifest.

themeColor string

Defines the color of the Android tool bar, and may be reflected in the app's preview in task switchers.

pattern=^(?:#|(#))[0-9a-fA-F]{6}$
description string

Provides a general description of what the pinned website does.

dir string

Specifies the primary text direction for the name, short_name, and description members. Together with the lang member, it helps the correct display of right-to-left languages.

Values: "auto" "ltr" "rtl"
display string

Defines the developers' preferred display mode for the website.

Values: "fullscreen" "standalone" "minimal-ui" "browser"
startUrl string

The URL that loads when a user launches the application (e.g. when added to home screen), typically the index. Note that this has to be a relative URL, relative to the manifest URL.

orientation string

Defines the default orientation for all the website's top level browsing contexts.

Values: "any" "natural" "landscape" "landscape-primary" "landscape-secondary" "portrait" "portrait-primary" "portrait-secondary"
backgroundColor string

Defines the expected "background color" for the website. This value repeats what is already available in the site's CSS, but can be used by browsers to draw the background color of a shortcut when the manifest is available before the stylesheet has loaded. This creates a smooth transition between launching the web application and loading the site's content.

pattern=^(?:#|(#))[0-9a-fA-F]{6}$
barStyle string

If content is set to default, the status bar appears normal. If set to black, the status bar has a black background. If set to black-translucent, the status bar is black and translucent. If set to default or black, the web content is displayed below the status bar. If set to black-translucent, the web content is displayed on the entire screen, partially obscured by the status bar.

Values: "default" "black" "black-translucent"
preferRelatedApplications boolean

Hints for the user agent to indicate to the user that the specified native applications (defined in expo.ios and expo.android) are recommended over the website.

use string

DEPRECATED: Use the dedicated adapters like Next.js, Gatsby, Electron, etc...

Values: "default" "nextjs"
build object

Basic customization options for dangerously configuring the default webpack config. Please use expo customize:web to modify the versioned Webpack config directly instead.

6 nested properties
rootId string

ID of the root DOM element in your index.html. By default this is "root".

devtool string

DEPRECATED: Modify the Webpack config directly. Choose a custom style of source mapping to enhance the debugging process. These values can affect build and rebuild speed dramatically.

publicPath string

DEPRECATED: Modify the Webpack config directly. Allows you to specify the base path for all the assets within your application.

minifyHTML object

DEPRECATED: Modify the Webpack config directly. Configuration for customizing webpack report. See HtmlWebpackPlugin.Options from html-webpack-plugin.

report object

DEPRECATED: Modify the Webpack config directly. Configuration for enabling webpack report and stats.json. See BundleAnalyzerPlugin.Options from webpack-bundle-analyzer.

serviceWorker object

DEPRECATED: Modify the Webpack config directly. Configuration for customizing the service worker. See GenerateSWOptions from workbox-webpack-plugin.

meta object

DEPRECATED. Defines the meta tag elements that will be added to the head element of your index.html.

5 nested properties
googleSiteVerification string

ID provided by the Google Site Verification API: https://developers.google.com/site-verification/

apple object

Apple PWA-specific meta elements. By default these values will be inferred from fields in the scope above, but you can override them here.

openGraph object

The Open Graph protocol: http://ogp.me/

microsoft object

X-UA protocol

dangerous object

Experimental features. These will break without deprecation notice.

2 nested properties
viewport string

Viewport meta tag for your index.html. By default this is optimized for mobile usage, disabling zooming, and resizing for iPhone X.

noJavaScriptMessage string

Message that is rendered when the browser using your page doesn't have JS enabled.

splash object

Configuration for PWA splash screens.

3 nested properties
backgroundColor string

Color to fill the loading screen background

pattern=^(?:#|(#))[0-9a-fA-F]{6}$
resizeMode array | boolean | number | object | string | null

Determines how the image will be displayed in the splash loading screen. Must be one of cover or contain, defaults to contain.

Values: "cover" "contain"
image string

Local path or remote url to an image to fill the background of the loading screen. Image size and aspect ratio are up to you. Must be a .png.

facebookAppId string

Used for all Facebook libraries. Set up your Facebook App ID at https://developers.facebook.com.

pattern=^[0-9]+$
facebookAutoInitEnabled boolean

Whether the Facebook SDK should be initialized automatically. The default in Expo (Client and in standalone apps) is false.

facebookAutoLogAppEventsEnabled boolean

Whether the Facebook SDK log app events automatically. If you don't set this property, Facebook's default will be used. (Applicable only to standalone apps.)

facebookAdvertiserIDCollectionEnabled boolean

Whether the Facebook SDK should collect advertiser ID properties, like the Apple IDFA and Android Advertising ID, automatically. If you don't set this property, Facebook's default policy will be used. (Applicable only to standalone apps.)

facebookDisplayName string

Used for native Facebook login.

facebookScheme string

Used for Facebook native login. Starts with 'fb' and followed by a string of digits, like 'fb1234567890'. You can find your scheme at https://developers.facebook.com/docs/facebook-login/ios in the 'Configuring Your info.plist' section.

pattern=^fb[0-9]+[A-Za-z]*$
isDetached boolean

Is app detached

detach object

Extra fields needed by detached apps

splash object

Configuration for loading and splash screen for standalone apps.

3 nested properties
backgroundColor string

Color to fill the loading screen background

pattern=^(?:#|(#))[0-9a-fA-F]{6}$
resizeMode array | boolean | number | object | string | null

Determines how the image will be displayed in the splash loading screen. Must be one of cover or contain, defaults to contain.

Values: "cover" "contain"
image string

Local path or remote url to an image to fill the background of the loading screen. Image size and aspect ratio are up to you. Must be a .png.

hooks object

Configuration for scripts to run to hook into the publish process

1 nested properties
postPublish array
assetBundlePatterns array

An array of file glob strings which point to assets that will be bundled within your standalone app binary. Read more in the Offline Support guide