UNPKG

24.7 kBJSONView Raw
1{"schema":{"type":"object","properties":{"name":{"description":"The name of your app as it appears both within Expo and on your home screen as a standalone app.","type":"string"},"description":{"description":"A short description of what your app is and why it is great.","type":"string"},"slug":{"description":"The friendly url name for publishing. eg: `expo.io/@your-username/slug`.","type":"string","pattern":"^[a-zA-Z0-9_\\-]+$"},"owner":{"description":"The username of the account under which this app is published. If not specified, the app is published as the currently signed-in user.","type":"string","minLength":1},"privacy":{"description":"Either `public` or `unlisted`. If not provided, defaults to `unlisted`. In the future `private` will be supported. `unlisted` hides the experience from search results.","enum":["public","unlisted"],"type":["array","boolean","number","object","string","null"]},"sdkVersion":{"description":"The Expo sdkVersion to run the project on. This should line up with the version specified in your package.json.","type":"string","pattern":"^(\\d+\\.\\d+\\.\\d+)|(UNVERSIONED)$"},"version":{"description":"Your app version, use whatever versioning scheme that you like.","type":"string"},"platforms":{"description":"Platforms that your project explicitly supports. If not specified, it defaults to `[\"ios\", \"android\"]`.","example":["ios","android"],"type":"array","uniqueItems":true,"maxItems":2,"items":[{"type":"string","pattern":"^(ios|android)$"},{"type":"string","pattern":"^(ios|android)$"}]},"githubUrl":{"description":"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/","example":"https://github.com/expo/expo","type":["string"]},"orientation":{"description":"Lock your app to a specific orientation with `portrait` or `landscape`. Defaults to no lock.","enum":["default","portrait","landscape"],"type":["array","boolean","number","object","string","null"]},"primaryColor":{"description":"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.","type":"string","pattern":"^#|(#)\\d{6}$","meta":{"regexHuman":"6 character long hex color string, eg: `'#000000'`"}},"icon":{"description":"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.","type":"string","meta":{"asset":true,"contentTypePattern":"^image/png$","contentTypeHuman":".png image","square":true}},"notification":{"description":"Configuration for remote (push) notifications.","type":"object","properties":{"icon":{"description":"Local path or remote url to an image to use as the icon for push notifications. 48x48 png grayscale with transparency.","type":"string","meta":{"asset":true,"contentTypePattern":"^image/png$","contentTypeHuman":".png image","square":true}},"color":{"description":"Tint color for the push notification image when it appears in the notification tray.","type":"string","pattern":"^#|(#)\\d{6}$","meta":{"regexHuman":"6 character long hex color string, eg: `'#000000'`"}},"androidMode":{"description":"Show each push notification individually (`default`) or collapse into one (`collapse`).","enum":["default","collapse"],"type":["array","boolean","number","object","string","null"]},"androidCollapsedTitle":{"description":"If `androidMode` is set to `collapse`, this title is used for the collapsed notification message. eg: `'#{unread_notifications} new interactions'`.","type":"string"}},"additionalProperties":false},"loading":{"description":"DEPRECATED: Use `splash` instead. Configuration for the loading screen that users see when opening your app, while fetching & caching bundle and assets.","type":"object","properties":{"icon":{"description":"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.","type":"string","meta":{"asset":true,"contentTypePattern":"^image/png$","contentTypeHuman":".png image"}},"exponentIconColor":{"description":"If no icon is provided, we will show the Expo logo. You can choose between `white` and `blue`.","enum":["white","blue"],"type":["array","boolean","number","object","string","null"]},"exponentIconGrayscale":{"description":"Similar to `exponentIconColor` but instead indicate if it should be grayscale (`1`) or not (`0`).","type":"number","minimum":0,"maximum":1},"backgroundImage":{"description":"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","meta":{"asset":true,"contentTypePattern":"^image/png$","contentTypeHuman":".png image"}},"backgroundColor":{"description":"Color to fill the loading screen background","type":"string","pattern":"^#|(#)\\d{6}$","meta":{"regexHuman":"6 character long hex color string, eg: `'#000000'`"}},"hideExponentText":{"description":"By default, Expo shows some text at the bottom of the loading screen. Set this to `true` to disable.","type":"boolean"},"loadingIndicatorStyleExperimental":{"description":"DEPRECATED: was used in the past for changing the style of the iOS loading indicator.","type":"string","pattern":"^light$","meta":{"autogenerated":true}}},"additionalProperties":false},"appKey":{"description":"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.","type":"string"},"androidStatusBarColor":{"description":"DEPRECATED. Use `androidStatusBar` instead.","type":"string","pattern":"^#|(#)\\d{6}$","meta":{"deprecated":true,"regexHuman":"6 character long hex color string, eg: `'#000000'`"}},"androidStatusBar":{"description":"Configuration for android statusbar.","type":"object","properties":{"barStyle":{"description":"Configure the statusbar icons to have light or dark color.","type":"string","enum":["light-content","dark-content"]},"backgroundColor":{"description":"Configuration for android statusbar.","type":"string","pattern":"^#|(#)\\d{6}$","meta":{"regexHuman":"6 character long hex color string, eg: `'#000000'`"}}}},"androidShowExponentNotificationInShellApp":{"description":"Adds a notification to your standalone app with refresh button and debug info.","type":"boolean"},"scheme":{"description":"URL scheme to link into your app. For example, if we set this to `'demo'`, then demo:// URLs would open your app when tapped.","type":"string","pattern":"^[a-zA-Z][a-zA-Z0-9+.-]*$","meta":{"regexHuman":"String beginning with a letter followed by any combination of letters, digits, \"+\", \".\" or \"-\"","standaloneOnly":true}},"entryPoint":{"description":"The relative path to your main JavaScript file.","type":"string"},"extra":{"description":"Any extra fields you want to pass to your experience. Values are accessible via `Expo.Constants.manifest.extra` ([read more](../sdk/constants.html#expoconstantsmanifest))","type":"object","properties":{},"additionalProperties":true},"rnCliPath":{"type":"string"},"packagerOpts":{"type":"object","properties":{},"additionalProperties":true},"ignoreNodeModulesValidation":{"type":"boolean"},"nodeModulesPath":{"type":"string"},"updates":{"description":"Configuration for how and when the app should request OTA JavaScript updates","type":"object","properties":{"enabled":{"description":"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)","type":"boolean"},"checkAutomatically":{"description":"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.","enum":["ON_ERROR_RECOVERY","ON_LOAD"],"type":["array","boolean","number","object","string","null"]},"fallbackToCacheTimeout":{"description":"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).","type":"number","minimum":0,"maximum":300000}},"additionalProperties":false},"locales":{"description":"Provide overrides by locale for System Dialog prompts like Permissions Boxes","type":"object","properties":{},"additionalProperties":true},"ios":{"description":"iOS standalone app specific configuration","type":"object","meta":{"standaloneOnly":true},"properties":{"publishManifestPath":{"description":"The manifest for the Android version of your app will be written to this path during publish.","type":"string","meta":{"autogenerated":true}},"publishBundlePath":{"description":"The bundle for the Android version of your app will be written to this path during publish.","type":"string","meta":{"autogenerated":true}},"bundleIdentifier":{"description":"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](http://stackoverflow.com/questions/11347470/what-does-bundle-identifier-mean-in-the-ios-project).","type":"string","pattern":"^[a-zA-Z][a-zA-Z0-9\\-\\.]+$","meta":{"regexHuman":"iOS bundle identifier notation unique name for your app. For example, host.exp.exponent, where exp.host is our domain and Expo is our app."}},"buildNumber":{"description":"Build number for your iOS standalone app. Must be a string that matches Apple's [format for CFBundleVersion](https://developer.apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html#//apple_ref/doc/uid/20001431-102364).","type":"string","pattern":"^[A-Za-z0-9\\.]+$"},"icon":{"description":"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","meta":{"asset":true,"contentTypePattern":"^image/png$","contentTypeHuman":".png image","square":true}},"merchantId":{"description":"Merchant ID for use with Apple Pay in your standalone app.","type":"string"},"appStoreUrl":{"description":"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\\.apple\\.com/.*?\\d+","example":"https://itunes.apple.com/us/app/expo-client/id982107779","type":["string"]},"config":{"type":"object","properties":{"branch":{"description":"[Branch](https://branch.io/) key to hook up Branch linking services.","type":"object","properties":{"apiKey":{"description":"Your Branch API key","type":"string"}},"additionalProperties":false},"usesNonExemptEncryption":{"description":"Sets `ITSAppUsesNonExemptEncryption` in the standalone ipa's Info.plist to the given boolean value.","type":"boolean"},"googleMapsApiKey":{"description":"[Google Maps iOS SDK](https://developers.google.com/maps/documentation/ios-sdk/start) key for your standalone app.","type":"string"},"googleSignIn":{"description":"[Google Sign-In iOS SDK](https://developers.google.com/identity/sign-in/ios/start-integrating) keys for your standalone app.","type":"object","properties":{"reservedClientId":{"description":"The reserved client ID URL scheme. Can be found in `GoogeService-Info.plist`.","type":"string"}},"additionalProperties":false}},"additionalProperties":false},"isRemoteJSEnabled":{"description":"DEPRECATED: use `updates.enabled` instead.","type":"boolean","deprecated":true},"loadJSInBackgroundExperimental":{"description":"DEPRECATED: use `updates` key with `fallbackToCacheTimeout: 0` instead.","type":"boolean","deprecated":true},"supportsTablet":{"description":"Whether your standalone iOS app supports tablet screen sizes. Defaults to `false`.","type":"boolean"},"isTabletOnly":{"description":"If true, indicates that your standalone iOS app does not support handsets, and only supports tablets.","type":"boolean"},"infoPlist":{"description":"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","properties":{},"additionalProperties":true},"associatedDomains":{"description":"An array that contains Associated Domains for the standalone app.","type":"array"},"usesIcloudStorage":{"description":"A boolean indicating if the app uses iCloud Storage for DocumentPicker. See DocumentPicker docs for details.","type":"boolean"},"splash":{"description":"Configuration for loading and splash screen for standalone iOS apps.","type":"object","properties":{"backgroundColor":{"description":"Color to fill the loading screen background","type":"string","pattern":"^#|(#)\\d{6}$","meta":{"regexHuman":"6 character long hex color string, eg: `'#000000'`"}},"resizeMode":{"description":"Determines how the `image` will be displayed in the splash loading screen. Must be one of `cover` or `contain`, defaults to `contain`.","enum":["cover","contain"],"type":["array","boolean","number","object","string","null"]},"image":{"description":"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","meta":{"asset":true,"contentTypePattern":"^image/png$","contentTypeHuman":".png image"}},"tabletImage":{"description":"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","meta":{"asset":true,"contentTypePattern":"^image/png$","contentTypeHuman":".png image"}}}}},"additionalProperties":false},"android":{"description":"Android standalone app specific configuration","type":"object","meta":{"standaloneOnly":true},"properties":{"publishManifestPath":{"description":"The manifest for the Android version of your app will be written to this path during publish.","type":"string","meta":{"autogenerated":true}},"publishBundlePath":{"description":"The bundle for the Android version of your app will be written to this path during publish.","type":"string","meta":{"autogenerated":true}},"package":{"description":"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](http://stackoverflow.com/questions/6273892/android-package-name-convention).","type":"string","pattern":"^[a-zA-Z][a-zA-Z0-9\\_]*(\\.[a-zA-Z][a-zA-Z0-9\\_]*)+$","meta":{"regexHuman":"Reverse DNS notation unique name for your app. For example, host.exp.exponent, where exp.host is our domain and Expo is our app."}},"versionCode":{"description":"Version number required by Google Play. Increment by one for each release. Must be an integer. https://developer.android.com/studio/publish/versioning.html","type":"integer"},"icon":{"description":"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":"string","meta":{"asset":true,"contentTypePattern":"^image/png$","contentTypeHuman":".png image","square":true}},"adaptiveIcon":{"type":"object","properties":{"foregroundImage":{"description":"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.","type":"string","meta":{"asset":true,"contentTypePattern":"^image/png$","contentTypeHuman":".png image","square":true}},"backgroundImage":{"description":"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.","type":"string","meta":{"asset":true,"contentTypePattern":"^image/png$","contentTypeHuman":".png image","square":true}},"backgroundColor":{"description":"Color to use as the background for your app's Adaptive Icon on Android.","type":"string","pattern":"^#|(#)\\d{6}$","meta":{"regexHuman":"6 character long hex color string, eg: `'#000000'`"}}},"additionalProperties":false},"playStoreUrl":{"description":"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/","example":"https://play.google.com/store/apps/details?id=host.exp.exponent","type":["string"]},"permissions":{"description":"List of permissions used by the standalone app. Remove the field to use the default list of permissions.\n\n Example: `[ \"CAMERA\", \"ACCESS_FINE_LOCATION\" ]`.\n\n You can specify the following permissions depending on what you need:\n\n- `ACCESS_COARSE_LOCATION`\n- `ACCESS_FINE_LOCATION`\n- `CAMERA`\n- `MANAGE_DOCUMENTS`\n- `READ_CONTACTS`\n- `READ_EXTERNAL_STORAGE`\n- `READ_INTERNAL_STORAGE`\n- `READ_PHONE_STATE`\n- `RECORD_AUDIO`\n- `USE_FINGERPRINT`\n- `VIBRATE`\n- `WAKE_LOCK`\n- `WRITE_EXTERNAL_STORAGE`\n- `com.anddoes.launcher.permission.UPDATE_COUNT`\n- `com.android.launcher.permission.INSTALL_SHORTCUT`\n- `com.google.android.c2dm.permission.RECEIVE`\n- `com.google.android.gms.permission.ACTIVITY_RECOGNITION`\n- `com.google.android.providers.gsf.permission.READ_GSERVICES`\n- `com.htc.launcher.permission.READ_SETTINGS`\n- `com.htc.launcher.permission.UPDATE_SHORTCUT`\n- `com.majeur.launcher.permission.UPDATE_BADGE`\n- `com.sec.android.provider.badge.permission.READ`\n- `com.sec.android.provider.badge.permission.WRITE`\n- `com.sonyericsson.home.permission.BROADCAST_BADGE`","type":"array"},"googleServicesFile":{"description":"[Firebase Configuration File](https://support.google.com/firebase/answer/7015592) google-services.json file for configuring Firebase.","type":"string"},"config":{"type":"object","properties":{"branch":{"description":"[Branch](https://branch.io/) key to hook up Branch linking services.","type":"object","properties":{"apiKey":{"description":"Your Branch API key","type":"string"}},"additionalProperties":false},"fabric":{"description":"[Google Developers Fabric](https://get.fabric.io/) keys to hook up Crashlytics and other services.","type":"object","properties":{"apiKey":{"description":"Your Fabric API key","type":"string"},"buildSecret":{"description":"Your Fabric build secret","type":"string"}},"additionalProperties":false},"googleMaps":{"description":"[Google Maps Android SDK](https://developers.google.com/maps/documentation/android-api/signup) key for your standalone app.","type":"object","properties":{"apiKey":{"description":"Your Google Maps Android SDK API key","type":"string"}},"additionalProperties":false},"googleSignIn":{"description":"[Google Sign-In Android SDK](https://developers.google.com/identity/sign-in/android/start-integrating) keys for your standalone app.","type":"object","properties":{"apiKey":{"description":"The Android API key. Can be found in the credentials section of the developer console or in `google-services.json`.","type":"string"},"certificateHash":{"description":"The SHA-1 hash of the signing certificate used to build the apk without any separator `:`. Can be found in `google-services.json`. https://developers.google.com/android/guides/client-auth","type":"string"}},"additionalProperties":false}},"additionalProperties":false},"splash":{"description":"Configuration for loading and splash screen for standalone Android apps.","type":"object","properties":{"backgroundColor":{"description":"Color to fill the loading screen background","type":"string","pattern":"^#|(#)\\d{6}$","meta":{"regexHuman":"6 character long hex color string, eg: `'#000000'`"}},"resizeMode":{"description":"Determines how the `image` will be displayed in the splash loading screen. Must be one of `cover` or `contain`, defaults to `contain`.","enum":["cover","contain"],"type":["array","boolean","number","object","string","null"]},"ldpi":{"description":"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","meta":{"asset":true,"contentTypePattern":"^image/png$","contentTypeHuman":".png image"}},"mdpi":{"description":"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","meta":{"asset":true,"contentTypePattern":"^image/png$","contentTypeHuman":".png image"}},"hdpi":{"description":"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","meta":{"asset":true,"contentTypePattern":"^image/png$","contentTypeHuman":".png image"}},"xhdpi":{"description":"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","meta":{"asset":true,"contentTypePattern":"^image/png$","contentTypeHuman":".png image"}},"xxhdpi":{"description":"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","meta":{"asset":true,"contentTypePattern":"^image/png$","contentTypeHuman":".png image"}},"xxxhdpi":{"description":"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","meta":{"asset":true,"contentTypePattern":"^image/png$","contentTypeHuman":".png image"}}}}},"additionalProperties":false},"facebookAppId":{"description":"Used for all Facebook libraries. Set up your Facebook App ID at https://developers.facebook.com.","type":"string","pattern":"^[0-9]+$"},"facebookDisplayName":{"description":"Used for native Facebook login.","type":"string"},"facebookScheme":{"description":"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.","type":"string","pattern":"^fb[0-9]+$"},"isDetached":{"description":"Is app detached","type":"boolean","meta":{"autogenerated":true}},"detach":{"description":"Extra fields needed by detached apps","type":"object","properties":{},"meta":{"autogenerated":true},"additionalProperties":true},"splash":{"description":"Configuration for loading and splash screen for standalone apps.","type":"object","properties":{"backgroundColor":{"description":"Color to fill the loading screen background","type":"string","pattern":"^#|(#)\\d{6}$","meta":{"regexHuman":"6 character long hex color string, eg: `'#000000'`"}},"resizeMode":{"description":"Determines how the `image` will be displayed in the splash loading screen. Must be one of `cover` or `contain`, defaults to `contain`.","enum":["cover","contain"],"type":["array","boolean","number","object","string","null"]},"image":{"description":"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","meta":{"asset":true,"contentTypePattern":"^image/png$","contentTypeHuman":".png image"}}}},"hooks":{"description":"Configuration for scripts to run to hook into the publish process","type":"object","additionalProperties":false,"properties":{"postPublish":{"type":"array"}}},"assetBundlePatterns":{"description":"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](https://docs.expo.io/versions/latest/guides/offline-support.html)","type":"array"}},"additionalProperties":false,"required":["name","slug","sdkVersion"]}}