UNPKG

41 kBTypeScriptView Raw
1/**
2 * The standard Expo config object defined in `app.config.js` files.
3 */
4export interface ExpoConfig {
5 /**
6 * The name of your app as it appears both within Expo Go and on your home screen as a standalone app.
7 */
8 name: string;
9 /**
10 * A short description of what your app is and why it is great.
11 */
12 description?: string;
13 /**
14 * The friendly URL name for publishing. For example, `myAppName` will refer to the `expo.dev/@project-owner/myAppName` project.
15 */
16 slug: string;
17 /**
18 * The Expo account name of the team owner, only applicable if you are enrolled in the EAS Priority Plan. If not provided, defaults to the username of the current user.
19 */
20 owner?: string;
21 /**
22 * 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.
23 */
24 currentFullName?: string;
25 /**
26 * 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.
27 */
28 originalFullName?: string;
29 /**
30 * 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`.
31 */
32 privacy?: 'public' | 'unlisted' | 'hidden';
33 /**
34 * The Expo sdkVersion to run the project on. This should line up with the version specified in your package.json.
35 */
36 sdkVersion?: string;
37 /**
38 * **Note: Don't use this property unless you are sure what you're doing**
39 *
40 * The runtime version associated with this manifest.
41 * Set this to `{"policy": "nativeVersion"}` to generate it automatically.
42 */
43 runtimeVersion?: string | {
44 policy: 'nativeVersion' | 'sdkVersion';
45 };
46 /**
47 * 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](https://docs.expo.dev/distribution/app-stores/#versioning-your-app). On iOS this corresponds to `CFBundleShortVersionString`, and on Android, this corresponds to `versionName`. The required format can be found [here](https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleshortversionstring).
48 */
49 version?: string;
50 /**
51 * Platforms that your project explicitly supports. If not specified, it defaults to `["ios", "android"]`.
52 */
53 platforms?: ('android' | 'ios' | 'web')[];
54 /**
55 * 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.
56 */
57 githubUrl?: string;
58 /**
59 * Locks your app to a specific orientation with portrait or landscape. Defaults to no lock. Valid values: `default`, `portrait`, `landscape`
60 */
61 orientation?: 'default' | 'portrait' | 'landscape';
62 /**
63 * 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`.
64 */
65 userInterfaceStyle?: 'light' | 'dark' | 'automatic';
66 /**
67 * The background color for your app, behind any of your React views. This is also known as the root view background color.
68 */
69 backgroundColor?: string;
70 /**
71 * 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.
72 */
73 primaryColor?: string;
74 /**
75 * 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.
76 */
77 icon?: string;
78 /**
79 * Configuration for remote (push) notifications.
80 */
81 notification?: {
82 /**
83 * (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](https://material.io/design/iconography/product-icons.html#design-principles). If not provided, defaults to your app icon.
84 */
85 icon?: string;
86 /**
87 * (Android only) Tint color for the push notification image when it appears in the notification tray. Defaults to `#ffffff`
88 */
89 color?: string;
90 /**
91 * 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.](https://docs.expo.dev/push-notifications/receiving-notifications/#foreground-notification-behavior) Defaults to `false`.
92 */
93 iosDisplayInForeground?: boolean;
94 /**
95 * Show each push notification individually (`default`) or collapse into one (`collapse`).
96 */
97 androidMode?: 'default' | 'collapse';
98 /**
99 * If `androidMode` is set to `collapse`, this title is used for the collapsed notification message. For example, `'#{unread_notifications} new interactions'`.
100 */
101 androidCollapsedTitle?: string;
102 };
103 /**
104 * 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.
105 */
106 appKey?: string;
107 /**
108 * Configuration for the status bar on Android. For more details please navigate to [Configuring StatusBar](https://docs.expo.dev/guides/configuring-statusbar/).
109 */
110 androidStatusBar?: {
111 /**
112 * Configures the status bar icons to have a light or dark color. Valid values: `light-content`, `dark-content`. Defaults to `dark-content`
113 */
114 barStyle?: 'light-content' | 'dark-content';
115 /**
116 * 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
117 */
118 backgroundColor?: string;
119 /**
120 * Instructs the system whether the status bar should be visible or not. Defaults to `false`
121 */
122 hidden?: boolean;
123 /**
124 * 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).
125 */
126 translucent?: boolean;
127 };
128 /**
129 * Configuration for the bottom navigation bar on Android.
130 */
131 androidNavigationBar?: {
132 /**
133 * Determines how and when the navigation bar is shown. [Learn more](https://developer.android.com/training/system-ui/immersive). Valid values: `leanback`, `immersive`, `sticky-immersive`
134 *
135 * `leanback` results in the navigation bar being hidden until the first touch gesture is registered.
136 *
137 * `immersive` results in the navigation bar being hidden until the user swipes up from the edge where the navigation bar is hidden.
138 *
139 * `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
140 */
141 visible?: 'leanback' | 'immersive' | 'sticky-immersive';
142 /**
143 * Configure the navigation bar icons to have a light or dark color. Supported on Android Oreo and newer. Valid values: `'light-content'`, `'dark-content'`
144 */
145 barStyle?: 'light-content' | 'dark-content';
146 /**
147 * Specifies the background color of the navigation bar.
148 */
149 backgroundColor?: string;
150 };
151 /**
152 * Settings that apply specifically to running this app in a development client
153 */
154 developmentClient?: {
155 /**
156 * If true, the app will launch in a development client with no additional dialogs or progress indicators, just like in a standalone app.
157 */
158 silentLaunch?: boolean;
159 };
160 /**
161 * **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.
162 */
163 scheme?: string;
164 /**
165 * The relative path to your main JavaScript file.
166 */
167 entryPoint?: string;
168 /**
169 * Any extra fields you want to pass to your experience. Values are accessible via `Expo.Constants.manifest.extra` ([Learn more](https://docs.expo.dev/versions/latest/sdk/constants/#constantsmanifest))
170 */
171 extra?: {
172 [k: string]: any;
173 };
174 /**
175 * @deprecated Use a `metro.config.js` file instead. [Learn more](https://docs.expo.dev/guides/customizing-metro/)
176 */
177 packagerOpts?: {
178 [k: string]: any;
179 };
180 /**
181 * Configuration for how and when the app should request OTA JavaScript updates
182 */
183 updates?: {
184 /**
185 * 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)
186 */
187 enabled?: boolean;
188 /**
189 * 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`
190 */
191 checkAutomatically?: 'ON_ERROR_RECOVERY' | 'ON_LOAD';
192 /**
193 * 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).
194 */
195 fallbackToCacheTimeout?: number;
196 /**
197 * URL from which expo-updates will fetch update manifests
198 */
199 url?: string;
200 };
201 /**
202 * Provide overrides by locale for System Dialog prompts like Permissions Boxes
203 */
204 locales?: {
205 [k: string]: string | {
206 [k: string]: any;
207 };
208 };
209 /**
210 * Used for all Facebook libraries. Set up your Facebook App ID at https://developers.facebook.com.
211 */
212 facebookAppId?: string;
213 /**
214 * Whether the Facebook SDK should be initialized automatically. The default in Expo (Client and in standalone apps) is `false`.
215 */
216 facebookAutoInitEnabled?: boolean;
217 /**
218 * 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`
219 */
220 facebookAutoLogAppEventsEnabled?: boolean;
221 /**
222 * 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.)
223 */
224 facebookAdvertiserIDCollectionEnabled?: boolean;
225 /**
226 * Used for native Facebook login.
227 */
228 facebookDisplayName?: string;
229 /**
230 * Used for Facebook native login. Starts with 'fb' and followed by a string of digits, like 'fb1234567890'. You can find your scheme [here](https://developers.facebook.com/docs/facebook-login/ios)in the 'Configuring Your info.plist' section (only applicable to standalone apps and custom Expo Go apps).
231 */
232 facebookScheme?: string;
233 /**
234 * Is app detached
235 */
236 isDetached?: boolean;
237 /**
238 * Extra fields needed by detached apps
239 */
240 detach?: {
241 [k: string]: any;
242 };
243 /**
244 * 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.dev/guides/offline-support/)
245 */
246 assetBundlePatterns?: string[];
247 /**
248 * Config plugins for adding extra functionality to your project. [Learn more](https://docs.expo.dev/guides/config-plugins/).
249 */
250 plugins?: (string | [] | [string] | [string, any])[];
251 splash?: Splash;
252 /**
253 * Specifies the JavaScript engine for apps. Supported only on EAS Build. Defaults to `jsc`. Valid values: `hermes`, `jsc`.
254 */
255 jsEngine?: 'hermes' | 'jsc';
256 ios?: IOS;
257 android?: Android;
258 web?: Web;
259 /**
260 * Configuration for scripts to run to hook into the publish process
261 */
262 hooks?: {
263 postPublish?: PublishHook[];
264 postExport?: PublishHook[];
265 };
266 /**
267 * Enable experimental features that may be unstable, unsupported, or removed without deprecation notices.
268 */
269 experiments?: {
270 /**
271 * 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.
272 */
273 turboModules?: boolean;
274 };
275 /**
276 * Internal properties for developer tools
277 */
278 _internal?: {
279 /**
280 * List of plugins already run on the config
281 */
282 pluginHistory?: {
283 [k: string]: any;
284 };
285 [k: string]: any;
286 };
287}
288/**
289 * Configuration for loading and splash screen for standalone apps.
290 */
291export interface Splash {
292 /**
293 * Color to fill the loading screen background
294 */
295 backgroundColor?: string;
296 /**
297 * Determines how the `image` will be displayed in the splash loading screen. Must be one of `cover` or `contain`, defaults to `contain`.
298 */
299 resizeMode?: 'cover' | 'contain';
300 /**
301 * 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.
302 */
303 image?: string;
304 [k: string]: any;
305}
306/**
307 * Configuration that is specific to the iOS platform.
308 */
309export interface IOS {
310 /**
311 * The manifest for the iOS version of your app will be written to this path during publish.
312 */
313 publishManifestPath?: string;
314 /**
315 * The bundle for the iOS version of your app will be written to this path during publish.
316 */
317 publishBundlePath?: string;
318 /**
319 * 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).
320 */
321 bundleIdentifier?: string;
322 /**
323 * Build number for your iOS standalone app. Corresponds to `CFBundleVersion` and must match Apple's [specified format](https://developer.apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html#//apple_ref/doc/uid/20001431-102364). (Note: Transporter will pull the value for `Version Number` from `expo.version` and NOT from `expo.ios.buildNumber`.)
324 */
325 buildNumber?: string;
326 /**
327 * The background color for your iOS app, behind any of your React views. Overrides the top-level `backgroundColor` key if it is present.
328 */
329 backgroundColor?: string;
330 /**
331 * 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.
332 *
333 * Expo will generate the other required sizes. This icon will appear on the home screen and within the Expo app.
334 */
335 icon?: string;
336 /**
337 * @deprecated Merchant ID for use with Apple Pay in your standalone app.
338 */
339 merchantId?: string;
340 /**
341 * 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.
342 */
343 appStoreUrl?: string;
344 /**
345 * 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.
346 */
347 bitcode?: boolean | string;
348 /**
349 * 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.
350 */
351 config?: {
352 /**
353 * [Branch](https://branch.io/) key to hook up Branch linking services.
354 */
355 branch?: {
356 /**
357 * Your Branch API key
358 */
359 apiKey?: string;
360 };
361 /**
362 * Sets `ITSAppUsesNonExemptEncryption` in the standalone ipa's Info.plist to the given boolean value.
363 */
364 usesNonExemptEncryption?: boolean;
365 /**
366 * [Google Maps iOS SDK](https://developers.google.com/maps/documentation/ios-sdk/start) key for your standalone app.
367 */
368 googleMapsApiKey?: string;
369 /**
370 * [Google Mobile Ads App ID](https://support.google.com/admob/answer/6232340) Google AdMob App ID.
371 */
372 googleMobileAdsAppId?: string;
373 /**
374 * 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`.](https://developers.google.com/admob/ios/eu-consent#delay_app_measurement_optional)
375 */
376 googleMobileAdsAutoInit?: boolean;
377 /**
378 * [Google Sign-In iOS SDK](https://developers.google.com/identity/sign-in/ios/start-integrating) keys for your standalone app.
379 */
380 googleSignIn?: {
381 /**
382 * The reserved client ID URL scheme. Can be found in `GoogleService-Info.plist`.
383 */
384 reservedClientId?: string;
385 };
386 };
387 /**
388 * [Firebase Configuration File](https://support.google.com/firebase/answer/7015592) Location of the `GoogleService-Info.plist` file for configuring Firebase.
389 */
390 googleServicesFile?: string;
391 /**
392 * Whether your standalone iOS app supports tablet screen sizes. Defaults to `false`.
393 */
394 supportsTablet?: boolean;
395 /**
396 * If true, indicates that your standalone iOS app does not support handsets, and only supports tablets.
397 */
398 isTabletOnly?: boolean;
399 /**
400 * If true, indicates that your standalone iOS app does not support Slide Over and Split View on iPad. Defaults to `false`
401 */
402 requireFullScreen?: boolean;
403 /**
404 * 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`.
405 */
406 userInterfaceStyle?: 'light' | 'dark' | 'automatic';
407 /**
408 * 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.
409 */
410 infoPlist?: {
411 [k: string]: any;
412 };
413 /**
414 * 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.
415 */
416 entitlements?: {
417 [k: string]: any;
418 };
419 /**
420 * An array that contains Associated Domains for the standalone app. [Learn more](https://developer.apple.com/documentation/safariservices/supporting_associated_domains).
421 */
422 associatedDomains?: string[];
423 /**
424 * A boolean indicating if the app uses iCloud Storage for `DocumentPicker`. See `DocumentPicker` docs for details.
425 */
426 usesIcloudStorage?: boolean;
427 /**
428 * A boolean indicating if the app uses Apple Sign-In. See `AppleAuthentication` docs for details.
429 */
430 usesAppleSignIn?: boolean;
431 /**
432 * A Boolean value that indicates whether the app may access the notes stored in contacts. You must [receive permission from Apple](https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_developer_contacts_notes) before you can submit your app for review with this capability.
433 */
434 accessesContactNotes?: boolean;
435 /**
436 * Configuration for loading and splash screen for standalone iOS apps.
437 */
438 splash?: {
439 /**
440 * @deprecated Apple has deprecated `.xib` splash screens in favor of `.storyboard` files. Local path to a XIB file as the loading screen. It overrides other loading screen options. Note: This will only be used in the standalone app (i.e., after you build the app). It will not be used in the Expo Go.
441 */
442 xib?: string;
443 /**
444 * Color to fill the loading screen background
445 */
446 backgroundColor?: string;
447 /**
448 * Determines how the `image` will be displayed in the splash loading screen. Must be one of `cover` or `contain`, defaults to `contain`.
449 */
450 resizeMode?: 'cover' | 'contain';
451 /**
452 * 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.
453 */
454 image?: string;
455 /**
456 * 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.
457 */
458 tabletImage?: string;
459 [k: string]: any;
460 };
461 /**
462 * Specifies the JavaScript engine for iOS apps. Supported only on EAS Build. Defaults to `jsc`. Valid values: `hermes`, `jsc`.
463 */
464 jsEngine?: 'hermes' | 'jsc';
465 /**
466 * **Note: Don't use this property unless you are sure what you're doing**
467 *
468 * The runtime version associated with this manifest for the iOS platform. If provided, this will override the top level runtimeVersion key.
469 * Set this to `{"policy": "nativeVersion"}` to generate it automatically.
470 */
471 runtimeVersion?: string | {
472 policy: 'nativeVersion' | 'sdkVersion';
473 };
474}
475/**
476 * Configuration that is specific to the Android platform.
477 */
478export interface Android {
479 /**
480 * The manifest for the Android version of your app will be written to this path during publish.
481 */
482 publishManifestPath?: string;
483 /**
484 * The bundle for the Android version of your app will be written to this path during publish.
485 */
486 publishBundlePath?: string;
487 /**
488 * 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).
489 */
490 package?: string;
491 /**
492 * Version number required by Google Play. Increment by one for each release. Must be a positive integer. [Learn more](https://developer.android.com/studio/publish/versioning.html)
493 */
494 versionCode?: number;
495 /**
496 * The background color for your Android app, behind any of your React views. Overrides the top-level `backgroundColor` key if it is present.
497 */
498 backgroundColor?: string;
499 /**
500 * 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`.
501 */
502 userInterfaceStyle?: 'light' | 'dark' | 'automatic';
503 /**
504 * @deprecated A Boolean value that indicates whether the app should use the new notifications API.
505 */
506 useNextNotificationsApi?: boolean;
507 /**
508 * 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.
509 */
510 icon?: string;
511 /**
512 * Settings for an Adaptive Launcher Icon on Android. [Learn more](https://developer.android.com/guide/practices/ui_guidelines/icon_design_adaptive)
513 */
514 adaptiveIcon?: {
515 /**
516 * 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](https://developer.android.com/guide/practices/ui_guidelines/icon_design_adaptive). This icon will appear on the home screen.
517 */
518 foregroundImage?: string;
519 /**
520 * 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](https://developer.android.com/guide/practices/ui_guidelines/icon_design_adaptive).
521 */
522 backgroundImage?: string;
523 /**
524 * 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.
525 */
526 backgroundColor?: string;
527 };
528 /**
529 * 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.
530 */
531 playStoreUrl?: string;
532 /**
533 * List of permissions used by the standalone app.
534 *
535 * 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:
536 * • receive data from Internet
537 * • view network connections
538 * • full network access
539 * • change your audio settings
540 * • prevent device from sleeping
541 *
542 * To use ALL permissions supported by Expo by default, do not specify the `permissions` key.
543 *
544 * To use the minimum necessary permissions ALONG with certain additional permissions, specify those extras in `permissions`, e.g.
545 *
546 * `[ "CAMERA", "ACCESS_FINE_LOCATION" ]`.
547 *
548 * You can specify the following permissions depending on what you need:
549 *
550 * - `ACCESS_COARSE_LOCATION`
551 * - `ACCESS_FINE_LOCATION`
552 * - `ACCESS_BACKGROUND_LOCATION`
553 * - `CAMERA`
554 * - `RECORD_AUDIO`
555 * - `READ_CONTACTS`
556 * - `WRITE_CONTACTS`
557 * - `READ_CALENDAR`
558 * - `WRITE_CALENDAR`
559 * - `READ_EXTERNAL_STORAGE`
560 * - `WRITE_EXTERNAL_STORAGE`
561 * - `USE_FINGERPRINT`
562 * - `USE_BIOMETRIC`
563 * - `WRITE_SETTINGS`
564 * - `VIBRATE`
565 * - `READ_PHONE_STATE`
566 * - `com.anddoes.launcher.permission.UPDATE_COUNT`
567 * - `com.android.launcher.permission.INSTALL_SHORTCUT`
568 * - `com.google.android.c2dm.permission.RECEIVE`
569 * - `com.google.android.gms.permission.ACTIVITY_RECOGNITION`
570 * - `com.google.android.providers.gsf.permission.READ_GSERVICES`
571 * - `com.htc.launcher.permission.READ_SETTINGS`
572 * - `com.htc.launcher.permission.UPDATE_SHORTCUT`
573 * - `com.majeur.launcher.permission.UPDATE_BADGE`
574 * - `com.sec.android.provider.badge.permission.READ`
575 * - `com.sec.android.provider.badge.permission.WRITE`
576 * - `com.sonyericsson.home.permission.BROADCAST_BADGE`
577 *
578 */
579 permissions?: string[];
580 /**
581 * [Firebase Configuration File](https://support.google.com/firebase/answer/7015592) Location of the `GoogleService-Info.plist` file for configuring Firebase. Including this key automatically enables FCM in your standalone app.
582 */
583 googleServicesFile?: string;
584 /**
585 * 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.
586 */
587 config?: {
588 /**
589 * [Branch](https://branch.io/) key to hook up Branch linking services.
590 */
591 branch?: {
592 /**
593 * Your Branch API key
594 */
595 apiKey?: string;
596 };
597 /**
598 * [Google Maps Android SDK](https://developers.google.com/maps/documentation/android-api/signup) configuration for your standalone app.
599 */
600 googleMaps?: {
601 /**
602 * Your Google Maps Android SDK API key
603 */
604 apiKey?: string;
605 };
606 /**
607 * [Google Mobile Ads App ID](https://support.google.com/admob/answer/6232340) Google AdMob App ID.
608 */
609 googleMobileAdsAppId?: string;
610 /**
611 * 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`](https://developers.google.com/admob/ios/eu-consent#delay_app_measurement_optional)
612 */
613 googleMobileAdsAutoInit?: boolean;
614 /**
615 * @deprecated Use `googleServicesFile` instead. [Google Sign-In Android SDK](https://developers.google.com/identity/sign-in/android/start-integrating) keys for your standalone app.
616 */
617 googleSignIn?: {
618 /**
619 * The Android API key. Can be found in the credentials section of the developer console or in `google-services.json`.
620 */
621 apiKey?: string;
622 /**
623 * 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
624 */
625 certificateHash?: string;
626 };
627 };
628 /**
629 * Configuration for loading and splash screen for managed and standalone Android apps.
630 */
631 splash?: {
632 /**
633 * Color to fill the loading screen background
634 */
635 backgroundColor?: string;
636 /**
637 * Determines how the `image` will be displayed in the splash loading screen. Must be one of `cover`, `contain` or `native`, defaults to `contain`.
638 */
639 resizeMode?: 'cover' | 'contain' | 'native';
640 /**
641 * 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.
642 */
643 image?: string;
644 /**
645 * 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]( https://developer.android.com/training/multiscreen/screendensities)
646 *
647 * `Natural sized image (baseline)`
648 */
649 mdpi?: string;
650 /**
651 * 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]( https://developer.android.com/training/multiscreen/screendensities)
652 *
653 * `Scale 1.5x`
654 */
655 hdpi?: string;
656 /**
657 * 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]( https://developer.android.com/training/multiscreen/screendensities)
658 *
659 * `Scale 2x`
660 */
661 xhdpi?: string;
662 /**
663 * 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]( https://developer.android.com/training/multiscreen/screendensities)
664 *
665 * `Scale 3x`
666 */
667 xxhdpi?: string;
668 /**
669 * 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]( https://developer.android.com/training/multiscreen/screendensities)
670 *
671 * `Scale 4x`
672 */
673 xxxhdpi?: string;
674 [k: string]: any;
675 };
676 /**
677 * Configuration for setting an array of custom intent filters in Android manifest. [Learn more](https://developer.android.com/guide/components/intents-filters)
678 */
679 intentFilters?: {
680 /**
681 * 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](developer.android.com/training/app-links)
682 */
683 autoVerify?: boolean;
684 action: string;
685 data?: AndroidIntentFiltersData | AndroidIntentFiltersData[];
686 category?: string | string[];
687 }[];
688 /**
689 * 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`.
690 */
691 allowBackup?: boolean;
692 /**
693 * 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`.
694 */
695 softwareKeyboardLayoutMode?: 'resize' | 'pan';
696 /**
697 * Specifies the JavaScript engine for Android apps. Supported only on EAS Build and in Expo Go. Defaults to `jsc`. Valid values: `hermes`, `jsc`.
698 */
699 jsEngine?: 'hermes' | 'jsc';
700 /**
701 * **Note: Don't use this property unless you are sure what you're doing**
702 *
703 * The runtime version associated with this manifest for the Android platform. If provided, this will override the top level runtimeVersion key.
704 * Set this to `{"policy": "nativeVersion"}` to generate it automatically.
705 */
706 runtimeVersion?: string | {
707 policy: 'nativeVersion' | 'sdkVersion';
708 };
709}
710export interface AndroidIntentFiltersData {
711 /**
712 * Scheme of the URL, e.g. `https`
713 */
714 scheme?: string;
715 /**
716 * Hostname, e.g. `myapp.io`
717 */
718 host?: string;
719 /**
720 * Port, e.g. `3000`
721 */
722 port?: string;
723 /**
724 * Exact path for URLs that should be matched by the filter, e.g. `/records`
725 */
726 path?: string;
727 /**
728 * Pattern for paths that should be matched by the filter, e.g. `.*`. Must begin with `/`
729 */
730 pathPattern?: string;
731 /**
732 * Prefix for paths that should be matched by the filter, e.g. `/records/` will match `/records/123`
733 */
734 pathPrefix?: string;
735 /**
736 * MIME type for URLs that should be matched by the filter
737 */
738 mimeType?: string;
739}
740/**
741 * Configuration that is specific to the web platform.
742 */
743export interface Web {
744 /**
745 * Relative path of an image to use for your app's favicon.
746 */
747 favicon?: string;
748 /**
749 * Defines the title of the document, defaults to the outer level name
750 */
751 name?: string;
752 /**
753 * 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.
754 */
755 shortName?: string;
756 /**
757 * Specifies the primary language for the values in the name and short_name members. This value is a string containing a single language tag.
758 */
759 lang?: string;
760 /**
761 * 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.
762 */
763 scope?: string;
764 /**
765 * Defines the color of the Android tool bar, and may be reflected in the app's preview in task switchers.
766 */
767 themeColor?: string;
768 /**
769 * Provides a general description of what the pinned website does.
770 */
771 description?: string;
772 /**
773 * 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.
774 */
775 dir?: 'auto' | 'ltr' | 'rtl';
776 /**
777 * Defines the developers’ preferred display mode for the website.
778 */
779 display?: 'fullscreen' | 'standalone' | 'minimal-ui' | 'browser';
780 /**
781 * 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.
782 */
783 startUrl?: string;
784 /**
785 * Defines the default orientation for all the website's top level browsing contexts.
786 */
787 orientation?: 'any' | 'natural' | 'landscape' | 'landscape-primary' | 'landscape-secondary' | 'portrait' | 'portrait-primary' | 'portrait-secondary';
788 /**
789 * 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.
790 */
791 backgroundColor?: string;
792 /**
793 * 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.
794 */
795 barStyle?: 'default' | 'black' | 'black-translucent';
796 /**
797 * 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.
798 */
799 preferRelatedApplications?: boolean;
800 /**
801 * Experimental features. These will break without deprecation notice.
802 */
803 dangerous?: {
804 [k: string]: any;
805 };
806 /**
807 * Configuration for PWA splash screens.
808 */
809 splash?: {
810 /**
811 * Color to fill the loading screen background
812 */
813 backgroundColor?: string;
814 /**
815 * Determines how the `image` will be displayed in the splash loading screen. Must be one of `cover` or `contain`, defaults to `contain`.
816 */
817 resizeMode?: 'cover' | 'contain';
818 /**
819 * 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.
820 */
821 image?: string;
822 [k: string]: any;
823 };
824 /**
825 * Firebase web configuration. Used by the expo-firebase packages on both web and native. [Learn more](https://firebase.google.com/docs/reference/js/firebase.html#initializeapp)
826 */
827 config?: {
828 firebase?: {
829 apiKey?: string;
830 authDomain?: string;
831 databaseURL?: string;
832 projectId?: string;
833 storageBucket?: string;
834 messagingSenderId?: string;
835 appId?: string;
836 measurementId?: string;
837 [k: string]: any;
838 };
839 [k: string]: any;
840 };
841 [k: string]: any;
842}
843export interface PublishHook {
844 file?: string;
845 config?: {
846 [k: string]: any;
847 };
848 [k: string]: any;
849}