Guides
Plan-enterprise-icon
Expo Application Services
API Reference

app.json / app.config.js

The following is a list of properties that are available for you under the "expo" key in app.json or app.config.json. These properties can be passed to the top level object of app.config.js or app.config.ts.
For more general information on app configuration, such as the differences between the various app configuration files, see Configuration with app.json/app.config.js.

Properties

Type: string


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

Triangle-down-icon
Bare Workflow

To change the name of your app, edit the 'Display Name' field in Xcode and the app_name string in android/app/src/main/res/values/strings.xml

Type: string


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

Type: string


The friendly URL name for publishing. For example, myAppName will refer to the expo.dev/@project-owner/myAppName project.

Type: string


The name of the Expo account that owns the project. This is useful for teams collaborating on a project. If not provided, the owner defaults to the username of the current user.

Type: string


The auto generated Expo account name and slug used for display purposes. Formatted like @username/slug. When unauthenticated, the username is @anonymous. For published projects, this value may change when a project is transferred between accounts or renamed.

Type: string


The auto generated Expo account name and slug used for services like Notifications and AuthSession proxy. Formatted like @username/slug. When unauthenticated, the username is @anonymous. For published projects, this value will not change when a project is transferred between accounts or renamed.

Type: enum


Defaults to unlisted. unlisted hides the project from search results. hidden restricts access to the project page to only the owner and other users that have been granted access. Valid values: public, unlisted, hidden.

Type: string


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

Type: undefined


Note: Don't use this property unless you are sure what you're doing

The runtime version associated with this manifest. Set this to {"policy": "nativeVersion"} to generate it automatically.

Type: string


Your app version. In addition to this field, you'll also use ios.buildNumber and android.versionCode — read more about how to version your app here. On iOS this corresponds to CFBundleShortVersionString, and on Android, this corresponds to versionName. The required format can be found here.

Triangle-down-icon
Bare Workflow

To change your app version, edit the 'Version' field in Xcode and the versionName string in android/app/build.gradle

Type: array


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

Type: 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.

Type: enum


Locks your app to a specific orientation with portrait or landscape. Defaults to no lock. Valid values: default, portrait, landscape

Type: enum


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. Requires expo-system-ui be installed in your project to work on Android.

Type: string


The background color for your app, behind any of your React views. This is also known as the root view background color. Requires expo-system-ui be installed in your project to work on iOS.

6 character long hex color string, for example, '#000000'. Default is white: '#ffffff'

Type: 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.

6 character long hex color string, for example, '#000000'

Type: 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.

Triangle-down-icon
Bare Workflow

To change your app's icon, edit or replace the files in ios/<PROJECT-NAME>/Assets.xcassets/AppIcon.appiconset (we recommend using Xcode), and android/app/src/main/res/mipmap-<RESOLUTION>. Be sure to follow the guidelines for each platform (iOS, Android 7.1 and below, and Android 8+) and to provide your new icon in each existing size.

Type: object


Configuration for remote (push) notifications.

Type: string • Path: notification.icon


(Android only) Local path or remote URL to an image to use as the icon for push notifications. 96x96 png grayscale with transparency. We recommend following Google's design guidelines. If not provided, defaults to your app icon.

Type: string • Path: notification.color


(Android only) Tint color for the push notification image when it appears in the notification tray. Defaults to #ffffff

6 character long hex color string, for example, '#000000'

Type: boolean • Path: notification.iosDisplayInForeground


Whether or not to display notifications when the app is in the foreground on iOS. _displayInForeground option in the individual push notification message overrides this option. Learn more. Defaults to false.

Type: enum • Path: notification.androidMode


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

Type: string • Path: notification.androidCollapsedTitle


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

Type: object


Configuration for the status bar on Android. For more details please navigate to Configuring StatusBar.

Type: enum • Path: androidStatusBar.barStyle


Configures the status bar icons to have a light or dark color. Valid values: light-content, dark-content. Defaults to dark-content

Type: string • Path: androidStatusBar.backgroundColor


Specifies the background color of the status bar. Defaults to #00000000 (transparent) for dark-content bar style and #00000088 (semi-transparent black) for light-content bar style

6 character long hex color string '#RRGGBB', for example, '#000000' for black. Or 8 character long hex color string '#RRGGBBAA', for example, '#00000088' for semi-transparent black.

Type: boolean • Path: androidStatusBar.hidden


Instructs the system whether the status bar should be visible or not. Defaults to false

Type: boolean • Path: androidStatusBar.translucent


Sets android:windowTranslucentStatus in styles.xml. When false, the system status bar pushes the content of your app down (similar to position: relative). When true, the status bar floats above the content in your app (similar to position: absolute). Defaults to true to match the iOS status bar behavior (which can only float above content).

Type: object


Configuration for the bottom navigation bar on Android. Can be used to configure the expo-navigation-bar module in EAS Build.

Type: enum • Path: androidNavigationBar.visible


Determines how and when the navigation bar is shown. Learn more. Requires expo-navigation-bar be installed in your project. Valid values: leanback, immersive, sticky-immersive

leanback results in the navigation bar being hidden until the first touch gesture is registered.

immersive results in the navigation bar being hidden until the user swipes up from the edge where the navigation bar is hidden.

sticky-immersive is identical to 'immersive' except that the navigation bar will be semi-transparent and will be hidden again after a short period of time.

Type: enum • Path: androidNavigationBar.barStyle


Configure the navigation bar icons to have a light or dark color. Supported on Android Oreo and newer. Valid values: 'light-content', 'dark-content'

Type: string • Path: androidNavigationBar.backgroundColor


Specifies the background color of the navigation bar.

6 character long hex color string, for example, '#000000'

Type: object


Settings that apply specifically to running this app in a development client

Type: boolean • Path: developmentClient.silentLaunch


If true, the app will launch in a development client with no additional dialogs or progress indicators, just like in a standalone app.

Type: string


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

String beginning with a lowercase letter followed by any combination of lowercase letters, digits, "+", "." or "-"

Triangle-down-icon
Bare Workflow

To change your app's scheme, replace all occurrences of the old scheme in Info.plist and AndroidManifest.xml

Type: string


The relative path to your main JavaScript file.

Type: object


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

Type: object


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

Type: boolean • Path: updates.enabled


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 app store review. Defaults to true. (Note: This will not work out of the box with ExpoKit projects)

Type: enum • Path: updates.checkAutomatically


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. Must be one of ON_LOAD or ON_ERROR_RECOVERY

Type: number • Path: updates.fallbackToCacheTimeout


How long (in ms) to allow for fetching OTA updates before falling back to a cached version of the app. Defaults to 0. Must be between 0 and 300000 (5 minutes).

Type: string • Path: updates.url


URL from which expo-updates will fetch update manifests

Type: string • Path: updates.codeSigningCertificate


Local path of a PEM-formatted X.509 certificate used for requiring and verifying signed Expo updates

Type: object • Path: updates.codeSigningMetadata


Metadata for codeSigningCertificate

Type: enum • Path: updates.codeSigningMetadata.alg


Algorithm used to generate manifest code signing signature.

Type: string • Path: updates.codeSigningMetadata.keyid


Identifier for the key in the certificate. Used to instruct signing mechanisms when signing or verifying signatures.

Type: object


Provide overrides by locale for System Dialog prompts like Permissions Boxes

Triangle-down-icon
Bare Workflow

To add or change language and localization information in your iOS app, you need to use Xcode.

Type: string


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

Triangle-down-icon
Bare Workflow

Type: boolean


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

Type: 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.) Note: The Facebook SDK must be initialized for app events to work. You may autoinitialize Facebook SDK by setting facebookAutoInitEnabled to true

Triangle-down-icon
Bare Workflow

Type: 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.)

Triangle-down-icon
Bare Workflow

Type: string


Used for native Facebook login.

Triangle-down-icon
Bare Workflow

Type: string


Used for Facebook native login. Starts with 'fb' and followed by a string of digits, like 'fb1234567890'. You can find your scheme herein the 'Configuring Your info.plist' section (only applicable to standalone apps and custom Expo Go apps).

Triangle-down-icon
Bare Workflow

Type: boolean


Is app detached

Type: object


Extra fields needed by detached apps

Type: 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

Type: array


Config plugins for adding extra functionality to your project. Learn more.

Triangle-down-icon
Bare Workflow

Plugins that add modifications can only be used with prebuilding and managed EAS Build

Type: object


Configuration for loading and splash screen for standalone apps.

Triangle-down-icon
Bare Workflow

To change your app's icon, edit or replace the files in ios/<PROJECT-NAME>/Assets.xcassets/AppIcon.appiconset (we recommend using Xcode), and android/app/src/main/res/mipmap-<RESOLUTION> (Android Studio can generate the appropriate image files for you). Be sure to follow the guidelines for each platform (iOS, Android 7.1 and below, and Android 8+) and to provide your new icon in each required size.

Type: string • Path: splash.backgroundColor


Color to fill the loading screen background

6 character long hex color string, for example, '#000000'

Triangle-down-icon
Bare Workflow

For Android, edit the colorPrimary item in android/app/src/main/res/values/colors.xml

Type: enum • Path: splash.resizeMode


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

Type: string • Path: splash.image


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.

Type: enum


Specifies the JavaScript engine for apps. Supported only on EAS Build. Defaults to jsc. Valid values: hermes, jsc.

Triangle-down-icon
Bare Workflow

To change the JavaScript engine, update the expo.jsEngine value in ios/Podfile.properties.json or android/gradle.properties

Type: object


Configuration that is specific to the iOS platform.

Type: string • Path: ios.publishManifestPath


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

Type: string • Path: ios.publishBundlePath


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

Type: string • Path: ios.bundleIdentifier


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.

iOS bundle identifier notation unique name for your app. For example, host.exp.expo, where exp.host is our domain and expo is our app name.

Triangle-down-icon
Bare Workflow

Set this value in info.plist under CFBundleIdentifier

Type: string • Path: ios.buildNumber


Build number for your iOS standalone app. Corresponds to CFBundleVersion and must match Apple's specified format. (Note: Transporter will pull the value for Version Number from expo.version and NOT from expo.ios.buildNumber.)

Triangle-down-icon
Bare Workflow

Set this value in info.plist under CFBundleVersion

Type: string • Path: ios.backgroundColor


The background color for your iOS app, behind any of your React views. Overrides the top-level backgroundColor key if it is present. Requires expo-system-ui be installed in your project to work on iOS.

6 character long hex color string, for example, '#000000'

Type: string • Path: ios.icon


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.

Type: string • Path: ios.appStoreUrl


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.

Type: undefined • Path: ios.bitcode


Enable iOS Bitcode optimizations in the native build. Accepts the name of an iOS build configuration to enable for a single configuration and disable for all others, e.g. Debug, Release. Not available in the classic 'expo build:ios' or Expo Go. Defaults to undefined which uses the template's predefined settings.

Type: object • Path: ios.config


Note: This property key is not included in the production manifest and will evaluate to undefined. It is used internally only in the build process, because it contains API keys that some may want to keep private.

Type: object • Path: ios.config.branch


Branch key to hook up Branch linking services.

Type: string • Path: ios.config.branch.apiKey


Your Branch API key

Type: boolean • Path: ios.config.usesNonExemptEncryption


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

Type: string • Path: ios.config.googleMapsApiKey


Google Maps iOS SDK key for your standalone app.

Type: string • Path: ios.config.googleMobileAdsAppId


Google Mobile Ads App ID Google AdMob App ID.

Type: boolean • Path: ios.config.googleMobileAdsAutoInit


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 (Go and in standalone apps) is false. Sets the opposite of the given value to the following key in Info.plist.

Type: string • Path: ios.googleServicesFile


Firebase Configuration File Location of the GoogleService-Info.plist file for configuring Firebase.

Type: boolean • Path: ios.supportsTablet


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

Triangle-down-icon
Bare Workflow

Set this value in info.plist under UISupportedInterfaceOrientations~ipad

Type: boolean • Path: ios.isTabletOnly


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

Triangle-down-icon
Bare Workflow

Set this value in info.plist under UISupportedInterfaceOrientations

Type: boolean • Path: ios.requireFullScreen


If true, indicates that your standalone iOS app does not support Slide Over and Split View on iPad. Defaults to false

Triangle-down-icon
Bare Workflow

Use Xcode to set UIRequiresFullScreen

Type: enum • Path: ios.userInterfaceStyle


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.

Type: object • Path: ios.infoPlist


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.

Type: object • Path: ios.entitlements


Dictionary of arbitrary configuration to add to your standalone app's native *.entitlements (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.

Type: array • Path: ios.associatedDomains


An array that contains Associated Domains for the standalone app. Learn more.

Entries must follow the format applinks:<fully qualified domain>[:port number]. Learn more.

Triangle-down-icon
Bare Workflow

Build with EAS, or use Xcode to enable this capability manually. Learn more.

Type: boolean • Path: ios.usesIcloudStorage


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

Triangle-down-icon
Bare Workflow

Use Xcode, or ios.entitlements to configure this.

Type: boolean • Path: ios.usesAppleSignIn


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

Type: boolean • Path: ios.accessesContactNotes


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.

Type: object • Path: ios.splash


Configuration for loading and splash screen for standalone iOS apps.

Type: string • Path: ios.splash.backgroundColor


Color to fill the loading screen background

6 character long hex color string, for example, '#000000'

Type: enum • Path: ios.splash.resizeMode


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

Type: string • Path: ios.splash.image


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.

Type: string • Path: ios.splash.tabletImage


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.

Type: enum • Path: ios.jsEngine


Specifies the JavaScript engine for iOS apps. Supported only on EAS Build. Defaults to jsc. Valid values: hermes, jsc.

Triangle-down-icon
Bare Workflow

To change the JavaScript engine, update the expo.jsEngine value in ios/Podfile.properties.json

Type: undefined • Path: ios.runtimeVersion


Note: Don't use this property unless you are sure what you're doing

The runtime version associated with this manifest for the iOS platform. If provided, this will override the top level runtimeVersion key. Set this to {"policy": "nativeVersion"} to generate it automatically.

Type: object


Configuration that is specific to the Android platform.

Type: string • Path: android.publishManifestPath


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

Type: string • Path: android.publishBundlePath


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

Type: string • Path: android.package


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.

Reverse DNS notation unique name for your app. Valid Android Application ID. For example, com.example.app, where com.example is our domain and app is our app. The name may only contain lowercase and uppercase letters (a-z, A-Z), numbers (0-9) and underscores (_), separated by periods (.). Each component of the name should start with a lowercase letter.

Triangle-down-icon
Bare Workflow

This is set in android/app/build.gradle as applicationId as well as in your AndroidManifest.xml file (multiple places).

Type: integer • Path: android.versionCode


Version number required by Google Play. Increment by one for each release. Must be a positive integer. Learn more

Triangle-down-icon
Bare Workflow

This is set in android/app/build.gradle as versionCode

Type: string • Path: android.backgroundColor


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

6 character long hex color string, for example, '#000000'

Triangle-down-icon
Bare Workflow

This is set in android/app/src/main/AndroidManifest.xml under android:windowBackground

Type: enum • Path: android.userInterfaceStyle


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. Requires expo-system-ui be installed in your project to work on Android.

Type: string • Path: android.icon


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.

Type: object • Path: android.adaptiveIcon


Settings for an Adaptive Launcher Icon on Android. Learn more

Type: string • Path: android.adaptiveIcon.foregroundImage


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 specified guidelines. This icon will appear on the home screen.

Type: string • Path: android.adaptiveIcon.backgroundImage


Local path or remote URL to a background image for your app's Adaptive Icon on Android. If specified, this overrides the backgroundColor key. Must have the same dimensions as foregroundImage, and has no effect if foregroundImage` is not specified. Should follow the specified guidelines.

Type: string • Path: android.adaptiveIcon.backgroundColor


Color to use as the background for your app's Adaptive Icon on Android. Defaults to white, #FFFFFF. Has no effect if foregroundImage is not specified.

6 character long hex color string, for example, '#000000'

Type: string • Path: android.playStoreUrl


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.

Type: array • Path: android.permissions


List of permissions used by the standalone app.

To use ONLY the following minimum necessary permissions and none of the extras supported by Expo in a default managed app, set permissions to []. The minimum necessary permissions do not require a Privacy Policy when uploading to Google Play Store and are: • receive data from Internet • view network connections • full network access • change your audio settings • prevent device from sleeping

To use ALL permissions supported by Expo by default, do not specify the permissions key.

To use the minimum necessary permissions ALONG with certain additional permissions, specify those extras in permissions, e.g.

[ "CAMERA", "ACCESS_FINE_LOCATION" ].

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

  • ACCESS_COARSE_LOCATION
  • ACCESS_FINE_LOCATION
  • ACCESS_BACKGROUND_LOCATION
  • CAMERA
  • RECORD_AUDIO
  • READ_CONTACTS
  • WRITE_CONTACTS
  • READ_CALENDAR
  • WRITE_CALENDAR
  • READ_EXTERNAL_STORAGE
  • WRITE_EXTERNAL_STORAGE
  • USE_FINGERPRINT
  • USE_BIOMETRIC
  • WRITE_SETTINGS
  • VIBRATE
  • READ_PHONE_STATE
  • FOREGROUND_SERVICE
  • WAKE_LOCK
  • 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
Triangle-down-icon
Bare Workflow

To change the permissions your app requests, you'll need to edit AndroidManifest.xml manually. To prevent your app from requesting one of the permissions listed below, you'll need to explicitly add it to AndroidManifest.xml along with a tools:node="remove" tag.

Type: array • Path: android.blockedPermissions


List of permissions to block in the final AndroidManifest.xml. This is useful for removing permissions that are added by native package AndroidManifest.xml files which are merged into the final manifest. Internally this feature uses the tools:node="remove" XML attribute to remove permissions. Not available in the classic expo build:android or Expo Go.

Type: string • Path: android.googleServicesFile


Firebase Configuration File Location of the GoogleService-Info.plist file for configuring Firebase. Including this key automatically enables FCM in your standalone app.

Triangle-down-icon
Bare Workflow

Add or edit the file directly at android/app/google-services.json

Type: object • Path: android.config


Note: This property key is not included in the production manifest and will evaluate to undefined. It is used internally only in the build process, because it contains API keys that some may want to keep private.

Type: object • Path: android.config.branch


Branch key to hook up Branch linking services.

Type: string • Path: android.config.branch.apiKey


Your Branch API key

Type: object • Path: android.config.googleMaps


Google Maps Android SDK configuration for your standalone app.

Type: string • Path: android.config.googleMaps.apiKey


Your Google Maps Android SDK API key

Type: string • Path: android.config.googleMobileAdsAppId


Google Mobile Ads App ID Google AdMob App ID.

Type: boolean • Path: android.config.googleMobileAdsAutoInit


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. Sets the opposite of the given value to the following key in Info.plist

Type: object • Path: android.splash


Configuration for loading and splash screen for managed and standalone Android apps.

Type: string • Path: android.splash.backgroundColor


Color to fill the loading screen background

6 character long hex color string, for example, '#000000'

Type: enum • Path: android.splash.resizeMode


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

Type: string • Path: android.splash.image


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.

Type: string • Path: android.splash.mdpi


Local path or remote URL to an image to fill the background of the loading screen in "native" mode. Image size and aspect ratio are up to you. Learn more

Natural sized image (baseline)

Type: string • Path: android.splash.hdpi


Local path or remote URL to an image to fill the background of the loading screen in "native" mode. Image size and aspect ratio are up to you. Learn more

Scale 1.5x

Type: string • Path: android.splash.xhdpi


Local path or remote URL to an image to fill the background of the loading screen in "native" mode. Image size and aspect ratio are up to you. Learn more

Scale 2x

Type: string • Path: android.splash.xxhdpi


Local path or remote URL to an image to fill the background of the loading screen in "native" mode. Image size and aspect ratio are up to you. Learn more

Scale 3x

Type: string • Path: android.splash.xxxhdpi


Local path or remote URL to an image to fill the background of the loading screen in "native" mode. Image size and aspect ratio are up to you. Learn more

Scale 4x

Type: array • Path: android.intentFilters


Configuration for setting an array of custom intent filters in Android manifest. Learn more

Triangle-down-icon
Bare Workflow

This is set in AndroidManifest.xml directly. Learn more.

Info-icon
[{ "autoVerify": true, "action": "VIEW", "data": { "scheme": "https", "host": "*.example.com" }, "category": ["BROWSABLE", "DEFAULT"] }]

Type: boolean • Path: android.intentFilters.autoVerify


You may also use an intent filter to set your app as the default handler for links (without showing the user a dialog with options). To do so use true and then configure your server to serve a JSON file verifying that you own the domain. Learn more

Type: string • Path: android.intentFilters.action


Type: undefined • Path: android.intentFilters.data


Type: undefined • Path: android.intentFilters.category


Type: boolean • Path: android.allowBackup


Allows your user's app data to be automatically backed up to their Google Drive. If this is set to false, no backup or restore of the application will ever be performed (this is useful if your app deals with sensitive information). Defaults to the Android default, which is true.

Type: enum • Path: android.softwareKeyboardLayoutMode


Determines how the software keyboard will impact the layout of your application. This maps to the android:windowSoftInputMode property. Defaults to resize. Valid values: resize, pan.

Type: enum • Path: android.jsEngine


Specifies the JavaScript engine for Android apps. Supported only on EAS Build and in Expo Go. Defaults to jsc. Valid values: hermes, jsc.

Triangle-down-icon
Bare Workflow

To change the JavaScript engine, update the expo.jsEngine value in android/gradle.properties

Type: undefined • Path: android.runtimeVersion


Note: Don't use this property unless you are sure what you're doing

The runtime version associated with this manifest for the Android platform. If provided, this will override the top level runtimeVersion key. Set this to {"policy": "nativeVersion"} to generate it automatically.

Type: object


Configuration that is specific to the web platform.

Type: string • Path: web.favicon


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

Type: string • Path: web.name


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

Type: string • Path: web.shortName


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.

Maximum 12 characters long

Type: string • Path: web.lang


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

Type: string • Path: web.scope


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.

Type: string • Path: web.themeColor


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

6 character long hex color string, for example, '#000000'

Type: string • Path: web.description


Provides a general description of what the pinned website does.

Type: enum • Path: web.dir


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.

Type: enum • Path: web.display


Defines the developers’ preferred display mode for the website.

Type: string • Path: web.startUrl


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

Type: enum • Path: web.orientation


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

Type: string • Path: web.backgroundColor


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.

6 character long hex color string, for example, '#000000'

Type: enum • Path: web.barStyle


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.

Type: boolean • Path: web.preferRelatedApplications


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.

Type: object • Path: web.dangerous


Experimental features. These will break without deprecation notice.

Type: object • Path: web.splash


Configuration for PWA splash screens.

Triangle-down-icon
Bare Workflow

Type: string • Path: web.splash.backgroundColor


Color to fill the loading screen background

6 character long hex color string, for example, '#000000'

Type: enum • Path: web.splash.resizeMode


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

Type: string • Path: web.splash.image


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.

Type: object • Path: web.config


Firebase web configuration. Used by the expo-firebase packages on both web and native. Learn more

Type: object • Path: web.config.firebase


Type: string • Path: web.config.firebase.apiKey


Type: string • Path: web.config.firebase.authDomain


Type: string • Path: web.config.firebase.databaseURL


Type: string • Path: web.config.firebase.projectId


Type: string • Path: web.config.firebase.storageBucket


Type: string • Path: web.config.firebase.messagingSenderId


Type: string • Path: web.config.firebase.appId


Type: string • Path: web.config.firebase.measurementId


Type: enum • Path: web.bundler


Sets the bundler to use for the web platform. Only supported in the local CLI npx expo.

Type: object


Configuration for scripts to run to hook into the publish process

Type: array • Path: hooks.postPublish


Type: string • Path: hooks.postPublish.file


Type: object • Path: hooks.postPublish.config


Type: array • Path: hooks.postExport


Type: string • Path: hooks.postExport.file


Type: object • Path: hooks.postExport.config


Type: object


Enable experimental features that may be unstable, unsupported, or removed without deprecation notices.

Type: boolean • Path: experiments.turboModules


Enables Turbo Modules, which are a type of native modules that use a different way of communicating between JS and platform code. When installing a Turbo Module you will need to enable this experimental option (the library still needs to be a part of Expo SDK already, like react-native-reanimated v2). Turbo Modules do not support remote debugging and enabling this option will disable remote debugging.

Type: object


Internal properties for developer tools

Type: object • Path: _internal.pluginHistory


List of plugins already run on the config

  • Message-iconAsk a question on the forums
  • Edit-iconEdit this page

Was this doc helpful?