xref: /expo/docs/pages/archive/expo-cli.mdx (revision 6eefacaa)
1---
2title: Global Expo CLI
3maxHeadingDepth: 4
4---
5
6import { Collapsible } from '~/ui/components/Collapsible';
7import { Terminal } from '~/ui/components/Snippet';
8
9The global Expo CLI `expo-cli` was succeeded by the local CLI `@expo/cli` in SDK 46. This documentation contains info on the now deprecated `expo-cli` package.
10
11If you're using a project that is SDK 46 or higher, see [Expo CLI](/more/expo-cli/).
12
13## Installation
14
15The legacy Expo CLI can be installed as a global npm package on your development machine. To download and install it, run the following command:
16
17<Terminal cmd={['$ npm install -g expo-cli']} />
18
19Not versioning the CLI with your project lowers backwards compatibility, and makes it harder to use your project in continuous environments like GitHub Actions. To combat this, we moved to using a versioned CLI in SDK 46.
20
21## Checking CLI Version
22
23To check the current version of the global Expo CLI you are using, use the `--version` option.
24
25<Terminal cmd={['$ expo --version']} />
26
27## Commands
28
29You can view the list of commands available with your version in your terminal using the `--help` option.
30
31<Terminal cmd={['$ expo --help']} />
32
33To learn more about a specific command and the options it may have, use `expo [command] --help`.
34
35<Terminal cmd={[`# Usage: expo [command] [options]`]} />
36
37You will find a list of all commands derived from the latest version of Expo CLI.
38
39{/* BEGIN GENERATED BLOCK. DO NOT MODIFY MANUALLY. https://github.com/expo/expo-cli/blob/main/packages/expo-cli/scripts/introspect.ts */}
40
41> Based on `expo-cli` v5.2.0
42
43---
44
45### Core
46
47<Collapsible summary={<><h4>expo export</h4>Export the static files of the app for hosting it on a web server</>}>
48
49| Option                           | Description                                                            |
50| -------------------------------- | ---------------------------------------------------------------------- |
51| `--platform [all\|android\|ios]` | Platforms: android, ios, all                                           |
52| `-p, --public-url [url]`         | The public url that will host the static files (required)              |
53| `-c, --clear`                    | Clear the Metro bundler cache                                          |
54| `--output-dir [dir]`             | The directory to export the static files to                            |
55| `-a, --asset-url [url]`          | The absolute or relative url that will host the asset files            |
56| `-d, --dump-assetmap`            | Dump the asset map for further processing                              |
57| `--dev`                          | Configure static files for developing locally using a non-https server |
58| `-s, --dump-sourcemap`           | Dump the source map for debugging the JS bundle                        |
59| `-q, --quiet`                    | Suppress verbose output                                                |
60| `-t, --target [managed\|bare]`   | Target environment for which this export is intended                   |
61| `--merge-src-dir [dir]`          | A repeatable source dir to merge in                                    |
62| `--merge-src-url [url]`          | A repeatable source tar.gz file URL to merge in                        |
63| `--max-workers [num]`            | Maximum number of tasks to allow Metro to spawn                        |
64| `--experimental-bundle`          | export bundles for use with EAS updates                                |
65| `--config [file]`                | Deprecated: Use app.config.js to switch config files instead.          |
66
67</Collapsible>
68
69<Collapsible summary={<><h4>expo init</h4>Create a new Expo project</>}>
70
71Alias: `expo i`
72
73| Option                  | Description                                                                                                                                                                      |
74| ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
75| `-t, --template [name]` | Specify which template to use. Valid options are "blank", "tabs", "bare-minimum" or a package on npm (e.g. "expo-template-bare-minimum") that includes an Expo project template. |
76| `--npm`                 | Use npm to install dependencies. (default when Yarn is not installed)                                                                                                            |
77| `--yarn`                | Use Yarn to install dependencies. (default when Yarn is installed)                                                                                                               |
78| `--no-install`          | Skip installing npm packages or CocoaPods.                                                                                                                                       |
79| `--name [name]`         | The name of your app visible on the home screen.                                                                                                                                 |
80| `--yes`                 | Use default options. Same as "expo init . --template blank                                                                                                                       |
81
82</Collapsible>
83
84<Collapsible summary={<><h4>expo install</h4>Install a module or other package to a project</>}>
85
86Alias: `expo add`
87
88| Option   | Description                                                              |
89| -------- | ------------------------------------------------------------------------ |
90| `--npm`  | Use npm to install dependencies. (default when package-lock.json exists) |
91| `--yarn` | Use Yarn to install dependencies. (default when yarn.lock exists)        |
92
93</Collapsible>
94
95<Collapsible summary={<><h4>expo run:android</h4>Run the Android app binary locally</>}>
96
97| Option                  | Description                                                   |
98| ----------------------- | ------------------------------------------------------------- |
99| `--no-bundler`          | Skip starting the Metro bundler                               |
100| `-d, --device [device]` | Device name to build the app on                               |
101| `-p, --port [port]`     | Port to start the Metro bundler on. Default: 8081             |
102| `--variant [name]`      | (Android) build variant                                       |
103| `--config [file]`       | Deprecated: Use app.config.js to switch config files instead. |
104
105</Collapsible>
106
107<Collapsible summary={<><h4>expo run:ios</h4>Run the iOS app binary locally</>}>
108
109| Option                            | Description                                                   |
110| --------------------------------- | ------------------------------------------------------------- |
111| `--no-build-cache`                | Clear the native derived data before building                 |
112| `--no-install`                    | Skip installing dependencies                                  |
113| `--no-bundler`                    | Skip starting the Metro bundler                               |
114| `-d, --device [device]`           | Device name or UDID to build the app on                       |
115| `-p, --port [port]`               | Port to start the Metro bundler on. Default: 8081             |
116| `--scheme [scheme]`               | Scheme to build                                               |
117| `--configuration [configuration]` | Xcode configuration to use. Debug or Release. Default: Debug  |
118| `--config [file]`                 | Deprecated: Use app.config.js to switch config files instead. |
119
120</Collapsible>
121
122<Collapsible summary={<><h4>expo send</h4>Share the project's URL to an email address</>}>
123
124| Option                 | Description                                                                                                    |
125| ---------------------- | -------------------------------------------------------------------------------------------------------------- |
126| `-s, --send-to [dest]` | Email address to send the URL to                                                                               |
127| `--dev-client`         | Experimental: Starts the bundler for use with the expo-development-client                                      |
128| `--scheme [scheme]`    | Custom URI protocol to use with a development build                                                            |
129| `-a, --android`        | Opens your app in Expo Go on a connected Android device                                                        |
130| `-i, --ios`            | Opens your app in Expo Go in a currently running iOS Simulator on your computer                                |
131| `-w, --web`            | Opens your app in a web browser                                                                                |
132| `-m, --host [mode]`    | lan (default), tunnel, localhost. Type of host to use. "tunnel" allows you to view your link on other networks |
133| `--tunnel`             | Same as --host tunnel                                                                                          |
134| `--lan`                | Same as --host lan                                                                                             |
135| `--localhost`          | Same as --host localhost                                                                                       |
136| `--config [file]`      | Deprecated: Use app.config.js to switch config files instead.                                                  |
137
138</Collapsible>
139
140<Collapsible summary={<><h4>expo start</h4>Start a local dev server for the app</>}>
141
142Alias: `expo r`
143
144| Option                                  | Description                                                                                                    |
145| --------------------------------------- | -------------------------------------------------------------------------------------------------------------- |
146| `-s, --send-to [dest]`                  | An email address to send a link to                                                                             |
147| `-c, --clear`                           | Clear the Metro bundler cache                                                                                  |
148| `--max-workers [num]`                   | Maximum number of tasks to allow Metro to spawn.                                                               |
149| `--no-dev`                              | Turn development mode off                                                                                      |
150| `--minify`                              | Minify code                                                                                                    |
151| `--https`                               | To start webpack with https protocol                                                                           |                                                                     |
152| `-p, --port [port]`                     | Port to start the native Metro bundler on (does not apply to web or tunnel). Default: 19000                    |
153| `--dev-client`                          | Experimental: Starts the bundler for use with the expo-development-client                                      |
154| `--scheme [scheme]`                     | Custom URI protocol to use with a development build                                                            |
155| `-a, --android`                         | Opens your app in Expo Go on a connected Android device                                                        |
156| `-i, --ios`                             | Opens your app in Expo Go in a currently running iOS Simulator on your computer                                |
157| `-w, --web`                             | Opens your app in a web browser                                                                                |
158| `-m, --host [mode]`                     | lan (default), tunnel, localhost. Type of host to use. "tunnel" allows you to view your link on other networks |
159| `--tunnel`                              | Same as --host tunnel                                                                                          |
160| `--lan`                                 | Same as --host lan                                                                                             |
161| `--localhost`                           | Same as --host localhost                                                                                       |
162| `--offline`                             | Allows this command to run while offline                                                                       |
163| `--dev`                                 | Deprecated: Dev mode is used by default                                                                        |
164| `--no-minify`                           | Deprecated: Minify is disabled by default                                                                      |
165| `--no-https`                            | Deprecated: https is disabled by default                                                                       |
166| `--config [file]`                       | Deprecated: Use app.config.js to switch config files instead.                                                  |
167
168</Collapsible>
169
170<Collapsible summary={<><h4>expo start:web</h4>Start a webpack dev server for the web app</>}>
171
172Alias: `expo web`
173
174| Option                                  | Description                                                                                                    |
175| --------------------------------------- | -------------------------------------------------------------------------------------------------------------- |
176| `--no-dev`                              | Turn development mode off                                                                                      |
177| `--minify`                              | Minify code                                                                                                    |
178| `--https`                               | To start webpack with https protocol                                                                           |                                                                     |
179| `-p, --port [port]`                     | Port to start the webpack bundler on. Default: 19006                                                           |
180| `-s, --send-to [dest]`                  | An email address to send a link to                                                                             |
181| `--dev-client`                          | Experimental: Starts the bundler for use with the expo-development-client                                      |
182| `--scheme [scheme]`                     | Custom URI protocol to use with a development build                                                            |
183| `-a, --android`                         | Opens your app in Expo Go on a connected Android device                                                        |
184| `-i, --ios`                             | Opens your app in Expo Go in a currently running iOS Simulator on your computer                                |
185| `-w, --web`                             | Opens your app in a web browser                                                                                |
186| `-m, --host [mode]`                     | lan (default), tunnel, localhost. Type of host to use. "tunnel" allows you to view your link on other networks |
187| `--tunnel`                              | Same as --host tunnel                                                                                          |
188| `--lan`                                 | Same as --host lan                                                                                             |
189| `--localhost`                           | Same as --host localhost                                                                                       |
190| `--offline`                             | Allows this command to run while offline                                                                       |
191| `--dev`                                 | Deprecated: Dev mode is used by default                                                                        |
192| `--no-minify`                           | Deprecated: Minify is disabled by default                                                                      |
193| `--no-https`                            | Deprecated: https is disabled by default                                                                       |
194| `--config [file]`                       | Deprecated: Use app.config.js to switch config files instead.                                                  |
195
196</Collapsible>
197
198---
199
200### Auth
201
202<Collapsible summary={<><h4>expo login</h4>Login to an Expo account</>}>
203
204Alias: `expo signin`
205
206| Option                    | Description                            |
207| ------------------------- | -------------------------------------- |
208| `-u, --username [string]` | Username                               |
209| `-p, --password [string]` | Password                               |
210| `--otp [string]`          | One-time password from your 2FA device |
211
212</Collapsible>
213
214<Collapsible summary={<><h4>expo logout</h4>Logout of an Expo account</>}>
215
216This command does not take any options.
217
218</Collapsible>
219
220<Collapsible summary={<><h4>expo register</h4>Sign up for a new Expo account</>}>
221
222This command does not take any options.
223
224</Collapsible>
225
226<Collapsible summary={<><h4>expo whoami</h4>Return the currently authenticated account</>}>
227
228Alias: `expo w`
229
230This command does not take any options.
231
232</Collapsible>
233
234---
235
236### Client
237
238<Collapsible summary={<><h4>expo client:install:ios</h4>Install Expo Go for iOS on the simulator</>}>
239
240| Option     | Description                                                                  |
241| ---------- | ---------------------------------------------------------------------------- |
242| `--latest` | Install the latest version of Expo Go, ignoring the current project version. |
243
244</Collapsible>
245
246<Collapsible summary={<><h4>expo client:install:android</h4>Install Expo Go for Android on a connected device or emulator</>}>
247
248| Option                  | Description                                                                |
249| ----------------------- | -------------------------------------------------------------------------- |
250| `-d, --device [device]` | Device name to install the client on                                       |
251| `--latest`              | Install the latest version of Expo Go, ignore the current project version. |
252
253</Collapsible>
254
255---
256
257### Info
258
259<Collapsible summary={<><h4>expo config</h4>Show the project config</>}>
260
261| Option                                      | Description                                                   |
262| ------------------------------------------- | ------------------------------------------------------------- |
263| `-t, --type [public\|prebuild\|introspect]` | Type of config to show.                                       |
264| `--full`                                    | Include all project config data                               |
265| `--json`                                    | Output in JSON format                                         |
266| `--config [file]`                           | Deprecated: Use app.config.js to switch config files instead. |
267
268</Collapsible>
269
270<Collapsible summary={<><h4>expo diagnostics</h4>Log environment info to the console</>}>
271
272| Option            | Description                                                   |
273| ----------------- | ------------------------------------------------------------- |
274| `--config [file]` | Deprecated: Use app.config.js to switch config files instead. |
275
276</Collapsible>
277
278<Collapsible summary={<><h4>expo doctor</h4>Diagnose issues with the project</>}>
279
280| Option               | Description                                                   |
281| -------------------- | ------------------------------------------------------------- |
282| `--fix-dependencies` | Fix incompatible dependency versions                          |
283| `--config [file]`    | Deprecated: Use app.config.js to switch config files instead. |
284
285</Collapsible>
286
287<Collapsible summary={<><h4>expo upgrade</h4>Upgrade the project packages and config for the given SDK version</>}>
288
289Alias: `expo update`
290
291| Option   | Description                                                              |
292| -------- | ------------------------------------------------------------------------ |
293| `--npm`  | Use npm to install dependencies. (default when package-lock.json exists) |
294| `--yarn` | Use Yarn to install dependencies. (default when yarn.lock exists)        |
295
296</Collapsible>
297
298---
299
300### Eject
301
302<Collapsible summary={<><h4>expo customize:web</h4>Eject the default web files for customization</>}>
303
304| Option            | Description                                                   |
305| ----------------- | ------------------------------------------------------------- |
306| `-f, --force`     | Allows replacing existing files                               |
307| `--offline`       | Allows this command to run while offline                      |
308| `--config [file]` | Deprecated: Use app.config.js to switch config files instead. |
309
310</Collapsible>
311
312<Collapsible summary={<><h4>expo eject</h4>Create native iOS and Android project files. Learn more: https://docs.expo.dev/workflow/customizing/</>}>
313
314| Option                               | Description                                                           |
315| ------------------------------------ | --------------------------------------------------------------------- |
316| `--no-install`                       | Skip installing npm packages and CocoaPods.                           |
317| `--npm`                              | Use npm to install dependencies. (default when Yarn is not installed) |
318| `-p, --platform [all\|android\|ios]` | Platforms to sync: ios, android, all. Default: all                    |
319| `--config [file]`                    | Deprecated: Use app.config.js to switch config files instead.         |
320
321</Collapsible>
322
323<Collapsible summary={<><h4>expo prebuild</h4>Create native iOS and Android project files before building natively. Learn more: https://docs.expo.dev/workflow/customizing/</>}>
324
325| Option                                    | Description                                                                             |
326| ----------------------------------------- | --------------------------------------------------------------------------------------- |
327| `--no-install`                            | Skip installing npm packages and CocoaPods.                                             |
328| `--clean`                                 | Delete the native folders and regenerate them before applying changes                   |
329| `--npm`                                   | Use npm to install dependencies. (default when Yarn is not installed)                   |
330| `--template [template]`                   | Project template to clone from. File path pointing to a local tar file or a github repo |
331| `-p, --platform [all\|android\|ios]`      | Platforms to sync: ios, android, all. Default: all                                      |
332| `--skip-dependency-update [dependencies]` | Preserves versions of listed packages in package.json (comma separated list)            |
333| `--config [file]`                         | Deprecated: Use app.config.js to switch config files instead.                           |
334
335</Collapsible>
336
337---
338
339### Publish
340
341> SDK 49 will be the last version to support Classic Updates. To continue using the deprecated `expo publish` command, set [`updates.useClassicUpdates`](/versions/latest/config/app/#useclassicupdates) in your app config.
342
343<Collapsible summary={<><h4>expo publish</h4>Deploy a project to Expo hosting</>}>
344
345Alias: `expo p`
346
347| Option                         | Description                                                                             |
348| ------------------------------ | --------------------------------------------------------------------------------------- |
349| `-q, --quiet`                  | Suppress verbose output from the Metro bundler.                                         |
350| `-s, --send-to [dest]`         | A phone number or email address to send a link to                                       |
351| `-c, --clear`                  | Clear the Metro bundler cache                                                           |
352| `-t, --target [managed\|bare]` | Target environment for which this publish is intended. Options are `managed` or `bare`. |
353| `--max-workers [num]`          | Maximum number of tasks to allow Metro to spawn.                                        |
354| `--release-channel [name]`     | The release channel to publish to. Default is 'default'.                                |
355| `--config [file]`              | Deprecated: Use app.config.js to switch config files instead.                           |
356
357</Collapsible>
358
359<Collapsible summary={<><h4>expo publish:set</h4>Specify the channel to serve a published release</>}>
360
361Alias: `expo ps`
362
363| Option                          | Description                                                           |
364| ------------------------------- | --------------------------------------------------------------------- |
365| `-c, --release-channel [name]`  | The channel to set the published release. (Required)                  |
366| `-p, --publish-id [publish-id]` | The id of the published release to serve from the channel. (Required) |
367| `--config [file]`               | Deprecated: Use app.config.js to switch config files instead.         |
368
369</Collapsible>
370
371<Collapsible summary={<><h4>expo publish:rollback</h4>Undo an update to a channel</>}>
372
373Alias: `expo pr`
374
375| Option                          | Description                                                   |
376| ------------------------------- | ------------------------------------------------------------- |
377| `--channel-id [channel-id]`     | This flag is deprecated.                                      |
378| `-c, --release-channel [name]`  | The channel to rollback from. (Required)                      |
379| `-s, --sdk-version [version]`   | The sdk version to rollback. (Required)                       |
380| `-p, --platform [android\|ios]` | The platform to rollback.                                     |
381| `--config [file]`               | Deprecated: Use app.config.js to switch config files instead. |
382
383</Collapsible>
384
385<Collapsible summary={<><h4>expo publish:history</h4>Log the project's releases</>}>
386
387Alias: `expo ph`
388
389| Option                          | Description                                                                                          |
390| ------------------------------- | ---------------------------------------------------------------------------------------------------- |
391| `-c, --release-channel [name]`  | Filter by release channel. If this flag is not included, the most recent publications will be shown. |
392| `--count [number-of-logs]`      | Number of logs to view, maximum 100, default 5.                                                      |
393| `-p, --platform [android\|ios]` | Filter by platform, android or ios. Defaults to both platforms.                                      |
394| `-s, --sdk-version [version]`   | Filter by SDK version e.g. 35.0.0                                                                    |
395| `-r, --raw`                     | Produce some raw output.                                                                             |
396| `--config [file]`               | Deprecated: Use app.config.js to switch config files instead.                                        |
397
398</Collapsible>
399
400<Collapsible summary={<><h4>expo publish:details</h4>Log details of a published release</>}>
401
402Alias: `expo pd`
403
404| Option                      | Description                                                   |
405| --------------------------- | ------------------------------------------------------------- |
406| `--publish-id [publish-id]` | Publication id. (Required)                                    |
407| `-r, --raw`                 | Produce some raw output.                                      |
408| `--config [file]`           | Deprecated: Use app.config.js to switch config files instead. |
409
410</Collapsible>
411
412---
413
414### Build
415
416<Collapsible summary={<><h4>expo build:web</h4>Build the web app for production</>}>
417
418| Option            | Description                                                                                    |
419| ----------------- | ---------------------------------------------------------------------------------------------- |
420| `-c, --clear`     | Clear all cached build files and assets.                                                       |
421| `--no-pwa`        | Prevent webpack from generating the manifest.json and injecting meta into the index.html head. |
422| `-d, --dev`       | Turns dev flag on before bundling                                                              |
423| `--config [file]` | Deprecated: Use app.config.js to switch config files instead.                                  |
424
425</Collapsible>
426
427---
428
429### Credentials
430
431<Collapsible summary={<><h4>expo credentials:manager</h4>Manage your credentials</>}>
432
433| Option                         | Description                                                   |
434| ------------------------------ | ------------------------------------------------------------- |
435| `-p --platform [android\|ios]` | Platform: [android\|ios]                                      |
436| `--config [file]`              | Deprecated: Use app.config.js to switch config files instead. |
437
438</Collapsible>
439
440<Collapsible summary={<><h4>expo fetch:ios:certs</h4>Download the project's iOS standalone app signing credentials</>}>
441
442| Option            | Description                                                   |
443| ----------------- | ------------------------------------------------------------- |
444| `--config [file]` | Deprecated: Use app.config.js to switch config files instead. |
445
446</Collapsible>
447
448<Collapsible summary={<><h4>expo fetch:android:keystore</h4>Download the project's Android keystore</>}>
449
450| Option            | Description                                                   |
451| ----------------- | ------------------------------------------------------------- |
452| `--config [file]` | Deprecated: Use app.config.js to switch config files instead. |
453
454</Collapsible>
455
456<Collapsible summary={<><h4>expo fetch:android:hashes</h4>Compute and log the project's Android key hashes</>}>
457
458| Option            | Description                                                   |
459| ----------------- | ------------------------------------------------------------- |
460| `--config [file]` | Deprecated: Use app.config.js to switch config files instead. |
461
462</Collapsible>
463
464<Collapsible summary={<><h4>expo fetch:android:upload-cert</h4>Download the project's Android keystore</>}>
465
466| Option            | Description                                                   |
467| ----------------- | ------------------------------------------------------------- |
468| `--config [file]` | Deprecated: Use app.config.js to switch config files instead. |
469
470</Collapsible>
471
472---
473
474### Notifications
475
476<Collapsible summary={<><h4>expo push:android:upload</h4>Upload an FCM key for Android push notifications</>}>
477
478| Option                | Description                                                   |
479| --------------------- | ------------------------------------------------------------- |
480| `--api-key [api-key]` | Server API key for FCM.                                       |
481| `--config [file]`     | Deprecated: Use app.config.js to switch config files instead. |
482
483</Collapsible>
484
485<Collapsible summary={<><h4>expo push:android:show</h4>Log the value currently in use for FCM notifications for this project</>}>
486
487| Option            | Description                                                   |
488| ----------------- | ------------------------------------------------------------- |
489| `--config [file]` | Deprecated: Use app.config.js to switch config files instead. |
490
491</Collapsible>
492
493<Collapsible summary={<><h4>expo push:android:clear</h4>Delete a previously uploaded FCM credential</>}>
494
495| Option            | Description                                                   |
496| ----------------- | ------------------------------------------------------------- |
497| `--config [file]` | Deprecated: Use app.config.js to switch config files instead. |
498
499</Collapsible>
500
501---
502
503### Url
504
505<Collapsible summary={<><h4>expo url</h4>Log a URL for opening the project in Expo Go</>}>
506
507Alias: `expo u`
508
509| Option              | Description                                                                                                    |
510| ------------------- | -------------------------------------------------------------------------------------------------------------- |
511| `--dev-client`      | Experimental: Starts the bundler for use with the expo-development-client                                      |
512| `--scheme [scheme]` | Custom URI protocol to use with a development build                                                            |
513| `-a, --android`     | Opens your app in Expo Go on a connected Android device                                                        |
514| `-i, --ios`         | Opens your app in Expo Go in a currently running iOS Simulator on your computer                                |
515| `-w, --web`         | Opens your app in a web browser                                                                                |
516| `-m, --host [mode]` | lan (default), tunnel, localhost. Type of host to use. "tunnel" allows you to view your link on other networks |
517| `--tunnel`          | Same as --host tunnel                                                                                          |
518| `--lan`             | Same as --host lan                                                                                             |
519| `--localhost`       | Same as --host localhost                                                                                       |
520| `--offline`         | Allows this command to run while offline                                                                       |
521| `--config [file]`   | Deprecated: Use app.config.js to switch config files instead.                                                  |
522
523</Collapsible>
524
525<Collapsible summary={<><h4>expo url:ipa</h4>Log the download URL for the standalone iOS binary</>}>
526
527| Option               | Description                                                     |
528| -------------------- | --------------------------------------------------------------- |
529| `--public-url [url]` | The URL of an externally hosted manifest (for self-hosted apps) |
530| `--config [file]`    | Deprecated: Use app.config.js to switch config files instead.   |
531
532</Collapsible>
533
534<Collapsible summary={<><h4>expo url:apk</h4>Log the download URL for the standalone Android binary</>}>
535
536| Option               | Description                                                     |
537| -------------------- | --------------------------------------------------------------- |
538| `--public-url [url]` | The URL of an externally hosted manifest (for self-hosted apps) |
539| `--config [file]`    | Deprecated: Use app.config.js to switch config files instead.   |
540
541</Collapsible>
542
543---
544
545### Webhooks
546
547<Collapsible summary={<><h4>expo webhooks</h4>List all webhooks for a project</>}>
548
549| Option            | Description                                                   |
550| ----------------- | ------------------------------------------------------------- |
551| `--config [file]` | Deprecated: Use app.config.js to switch config files instead. |
552
553</Collapsible>
554
555<Collapsible summary={<><h4>expo webhooks:add</h4>Add a webhook to a project</>}>
556
557| Option                 | Description                                                                                             |
558| ---------------------- | ------------------------------------------------------------------------------------------------------- |
559| `--url [url]`          | URL to request. (Required)                                                                              |
560| `--event [event-type]` | Event type that triggers the webhook. [build] (Required)                                                |
561| `--secret [secret]`    | Secret used to create a hash signature of the request payload, provided in the 'Expo-Signature' header. |
562| `--config [file]`      | Deprecated: Use app.config.js to switch config files instead.                                           |
563
564</Collapsible>
565
566<Collapsible summary={<><h4>expo webhooks:remove</h4>Delete a webhook</>}>
567
568| Option            | Description                                                   |
569| ----------------- | ------------------------------------------------------------- |
570| `--id [id]`       | ID of the webhook to remove.                                  |
571| `--config [file]` | Deprecated: Use app.config.js to switch config files instead. |
572
573</Collapsible>
574
575<Collapsible summary={<><h4>expo webhooks:update</h4>Update an existing webhook</>}>
576
577| Option                 | Description                                                                                             |
578| ---------------------- | ------------------------------------------------------------------------------------------------------- |
579| `--id [id]`            | ID of the webhook to update.                                                                            |
580| `--url [url]`          | URL the webhook will request.                                                                           |
581| `--event [event-type]` | Event type that triggers the webhook. [build]                                                           |
582| `--secret [secret]`    | Secret used to create a hash signature of the request payload, provided in the 'Expo-Signature' header. |
583| `--config [file]`      | Deprecated: Use app.config.js to switch config files instead.                                           |
584
585</Collapsible>
586
587---
588
589### Deprecated
590
591<Collapsible summary={<><h4>expo build:ios</h4>Superseded by eas build in eas-cli</>}>
592
593Alias: `expo bi`
594
595| Option                               | Description                                                                                                         |
596| ------------------------------------ | ------------------------------------------------------------------------------------------------------------------- |
597| `-c, --clear-credentials`            | Clear all credentials stored on Expo servers.                                                                       |
598| `--clear-dist-cert`                  | Remove Distribution Certificate stored on Expo servers.                                                             |
599| `--clear-push-key`                   | Remove Push Notifications Key stored on Expo servers.                                                               |
600| `--clear-push-cert`                  | Remove Push Notifications Certificate stored on Expo servers. Use of Push Notifications Certificates is deprecated. |
601| `--clear-provisioning-profile`       | Remove Provisioning Profile stored on Expo servers.                                                                 |
602| `-r --revoke-credentials`            | Revoke credentials on developer.apple.com, select appropriate using --clear-\* options.                             |
603| `--apple-id [login]`                 | Apple ID username (please also set the Apple ID password as EXPO_APPLE_PASSWORD environment variable).              |
604| `-t --type [archive\|simulator]`     | Type of build: [archive\|simulator].                                                                                |
605| `--release-channel [name]`           | Pull from specified release channel.                                                                                |
606| `--no-publish`                       | Disable automatic publishing before building.                                                                       |
607| `--no-wait`                          | Exit immediately after scheduling build.                                                                            |
608| `--team-id [apple-teamId]`           | Apple Team ID.                                                                                                      |
609| `--dist-p12-path [path]`             | Path to your Distribution Certificate P12 (set password as EXPO_IOS_DIST_P12_PASSWORD environment variable).        |
610| `--push-id [push-id]`                | Push Key ID (ex: 123AB4C56D).                                                                                       |
611| `--push-p8-path [path]`              | Path to your Push Key .p8 file.                                                                                     |
612| `--provisioning-profile-path [path]` | Path to your Provisioning Profile.                                                                                  |
613| `--public-url [url]`                 | The URL of an externally hosted manifest (for self-hosted apps).                                                    |
614| `--skip-credentials-check`           | Skip checking credentials.                                                                                          |
615| `--skip-workflow-check`              | Skip warning about build service bare workflow limitations.                                                         |
616| `--config [file]`                    | Deprecated: Use app.config.js to switch config files instead.                                                       |
617
618</Collapsible>
619
620<Collapsible summary={<><h4>expo build:android</h4>Superseded by eas build in eas-cli</>}>
621
622Alias: `expo ba`
623
624| Option                        | Description                                                     |
625| ----------------------------- | --------------------------------------------------------------- |
626| `-c, --clear-credentials`     | Clear stored credentials.                                       |
627| `--release-channel [name]`    | Pull from specified release channel.                            |
628| `--no-publish`                | Disable automatic publishing before building.                   |
629| `--no-wait`                   | Exit immediately after triggering build.                        |
630| `--keystore-path [path]`      | Path to your Keystore: \*.jks.                                  |
631| `--keystore-alias [alias]`    | Keystore Alias                                                  |
632| `--generate-keystore`         | [deprecated] Generate Keystore if one does not exist            |
633| `--public-url [url]`          | The URL of an externally hosted manifest (for self-hosted apps) |
634| `--skip-workflow-check`       | Skip warning about build service bare workflow limitations.     |
635| `-t --type [app-bundle\|apk]` | Type of build: [app-bundle\|apk].                               |
636| `--config [file]`             | Deprecated: Use app.config.js to switch config files instead.   |
637
638</Collapsible>
639
640<Collapsible summary={<><h4>expo build:status</h4>Superseded by eas build:list in eas-cli</>}>
641
642Alias: `expo bs`
643
644| Option               | Description                                                      |
645| -------------------- | ---------------------------------------------------------------- |
646| `--public-url [url]` | The URL of an externally hosted manifest (for self-hosted apps). |
647| `--config [file]`    | Deprecated: Use app.config.js to switch config files instead.    |
648
649</Collapsible>
650
651<Collapsible summary={<><h4>expo upload:android</h4>Superseded by eas submit in eas-cli</>}>
652
653Alias: `expo ua`
654
655| Option                                | Description                                                   |
656| ------------------------------------- | ------------------------------------------------------------- |
657| `--verbose`                           | Migrate to eas submit --verbose                               |
658| `--latest`                            | Migrate to eas submit --latest                                |
659| `--id [id]`                           | Migrate to eas submit --id [id]                               |
660| `--path [path]`                       | Migrate to eas submit --path [path]                           |
661| `--url [url]`                         | Migrate to eas submit --url [url]                             |
662| `--android-package [android-package]` | Migrate to eas submit (android-package is auto inferred)      |
663| `--type [archive-type]`               | Migrate to eas submit (type is auto inferred)                 |
664| `--key [key]`                         | Migrate to eas.json's serviceAccountKeyPath property          |
665| `--track [track]`                     | Migrate to eas.json's track property                          |
666| `--release-status [release-status]`   | Migrate to eas.json's releaseStatus property                  |
667| `--config [file]`                     | Deprecated: Use app.config.js to switch config files instead. |
668
669</Collapsible>
670
671<Collapsible summary={<><h4>expo upload:ios</h4>Superseded by eas submit in eas-cli</>}>
672
673Alias: `expo ui`
674
675| Option                          | Description                                                   |
676| ------------------------------- | ------------------------------------------------------------- |
677| `--verbose`                     | Migrate to eas submit --verbose                               |
678| `--latest`                      | Migrate to eas submit --latest                                |
679| `--id [id]`                     | Migrate to eas submit --id [id]                               |
680| `--path [path]`                 | Migrate to eas submit --path [path]                           |
681| `--url [url]`                   | Migrate to eas submit --url [url]                             |
682| `--apple-id [apple-id]`         | Migrate to eas.json's appleId property                        |
683| `--itc-team-id [itc-team-id]`   | Migrate to eas.json's appleTeamId property                    |
684| `--app-name [app-name]`         | Migrate to eas.json's appName property                        |
685| `--company-name [company-name]` | Migrate to eas.json's companyName property                    |
686| `--sku [sku]`                   | Migrate to eas.json's sku property                            |
687| `--language [language]`         | Migrate to eas.json's language property                       |
688| `--config [file]`               | Deprecated: Use app.config.js to switch config files instead. |
689
690</Collapsible>
691
692<Collapsible summary={<><h4>expo client:ios</h4>Superseded by Expo Dev Clients</>}>
693
694| Option               | Description                                                                                            |
695| -------------------- | ------------------------------------------------------------------------------------------------------ |
696| `--apple-id [login]` | Apple ID username (please also set the Apple ID password as EXPO_APPLE_PASSWORD environment variable). |
697| `--config [file]`    | Deprecated: Use app.config.js to switch config files instead.                                          |
698
699</Collapsible>
700
701{/* END GENERATED BLOCK. DO NOT MODIFY MANUALLY. */}
702
703## Expo CLI Migration
704
705In Expo SDK 46, we migrated to a new suite of tooling that is versioned in the `expo` package. Below is a migration guide showing where the legacy `expo-cli` commands live now.
706
707> Legacy `expo-cli` will be in maintenance mode and continue to work while we migrate to the new tooling.
708
709| Legacy               | New                    | Notes                                         |
710| -------------------- | ---------------------- | --------------------------------------------- |
711| `expo init`          | `npx create-expo-app`  | New CLI                                       |
712| `expo start`         | `npx expo start`       | Versioned                                     |
713| `expo export`        | `npx expo export`      | Versioned, `--experimental-bundle` is default |
714| `expo install`       | `npx expo install`     | Versioned                                     |
715| `expo run:android`   | `npx expo run:android` | Versioned                                     |
716| `expo run:ios`       | `npx expo run:ios`     | Versioned                                     |
717| `expo login`         | `npx expo login`       | Versioned                                     |
718| `expo logout`        | `npx expo logout`      | Versioned                                     |
719| `expo register`      | `npx expo register`    | Versioned                                     |
720| `expo whoami`        | `npx expo whoami`      | Versioned                                     |
721| `expo config`        | `npx expo config`      | Versioned                                     |
722| `expo prebuild`      | `npx expo prebuild`    | Versioned                                     |
723| `expo customize:web` | `npx expo customize`   | Versioned, and renamed                        |
724| `expo build:web`     | `npx expo export:web`  | Versioned, and renamed                        |
725| `expo eject`         | `npx expo prebuild`    | Merged into `npx expo prebuild`               |
726| `expo start:web`     | `npx expo start`       | Merged into `npx expo start`                  |
727
728### Deprecated
729
730| Legacy                        | Notes                           |
731| ----------------------------- | ------------------------------- |
732| `expo client:ios`             | Removed in favor of Dev Clients |
733| `expo send`                   | Removed                         |
734| `expo client:install:ios`     | Unimplemented                   |
735| `expo client:install:android` | Unimplemented                   |
736| `expo doctor`                 | Moved to `npx expo-doctor`      |
737| `expo upgrade`                | Undecided                       |
738
739### Services
740
741> The new `expo update` command uses a different hosting service than the legacy `expo publish` command.
742
743| Legacy                           | New                     | Notes              |
744| -------------------------------- | ----------------------- | ------------------ |
745| `expo publish`                   | `eas update`            | Moved to `eas-cli` |
746| `expo publish:set`               | `eas update`            | Moved to `eas-cli` |
747| `expo publish:rollback`          | `eas update`            | Moved to `eas-cli` |
748| `expo publish:history`           | `eas update`            | Moved to `eas-cli` |
749| `expo publish:details`           | `eas update`            | Moved to `eas-cli` |
750| `expo credentials:manager`       | `eas credentials`       | Moved to `eas-cli` |
751| `expo fetch:ios:certs`           | `eas credentials`       | Moved to `eas-cli` |
752| `expo fetch:android:keystore`    | `eas credentials`       | Moved to `eas-cli` |
753| `expo fetch:android:hashes`      | `eas credentials`       | Moved to `eas-cli` |
754| `expo fetch:android:upload-cert` | `eas credentials`       | Moved to `eas-cli` |
755| `expo push:android:upload`       | `eas credentials`       | Moved to `eas-cli` |
756| `expo push:android:show`         | `eas credentials`       | Moved to `eas-cli` |
757| `expo push:android:clear`        | `eas credentials`       | Moved to `eas-cli` |
758| `expo url`                       | `eas build:list`        | Moved to `eas-cli` |
759| `expo url:ipa`                   | `eas build:list`        | Moved to `eas-cli` |
760| `expo url:apk`                   | `eas build:list`        | Moved to `eas-cli` |
761| `expo webhooks`                  | `eas webhook`           | Moved to `eas-cli` |
762| `expo webhooks:add`              | `eas webhook:create`    | Moved to `eas-cli` |
763| `expo webhooks:remove`           | `eas webhook:delete`    | Moved to `eas-cli` |
764| `expo webhooks:update`           | `eas webhook:update`    | Moved to `eas-cli` |
765| `expo build:ios`                 | `eas build -p ios`      | Moved to `eas-cli` |
766| `expo build:android`             | `eas build -p android`  | Moved to `eas-cli` |
767| `expo build:status`              | `eas build:list`        | Moved to `eas-cli` |
768| `expo upload:android`            | `eas submit -p android` | Moved to `eas-cli` |
769| `expo upload:ios`                | `eas submit -p ios`     | Moved to `eas-cli` |
770
771### Other Notes
772
773- Dev Tools UI has been deprecated in favor of the CLI's Terminal UI, Flipper, and Remote Debugging.
774- `npx expo install` now supports installing the correct version of `react-native`, `react`, `react-dom` automatically.
775- Tooling now supports `pnpm` along with Yarn and npm, the default is still Yarn.
776- Dropped the deprecated `--config` argument across all commands. Use `app.config.js` instead.
777- No longer shipping `adb` in the CLI. Users must manually install `adb` to interact with connected Android devices.
778- Experimental `$EXPO_USE_APPLE_DEVICE` feature (`expo run:ios -d`) is now the default behavior. Global `ios-deploy` package is no longer required.
779- `npx expo export` works like `expo export --experimental-bundle`, i.e. exports for `eas update` and not `expo publish`. [PR](https://github.com/expo/expo/pull/17034).
780  - Dropped arguments: `--public-url`, `--asset-url`, `--merge-src-url`, `--merge-src-dir`, `-t, --target`, `--experimental-bundle`, `--config`, `-q, --quiet`
781  - Dropped aliases for `--dump-assetmap` (`-d`) and `--dump-sourcemap` (`-s`).
782  - Dropped warning about clearing `dist` folder that is shown between runs, this is akin to all other bundler commands across web tooling.
783  - Dropped all merging code because experimental bundle does not support index files so we don't need to support merging index files.
784  - Dropped the quiet flag as this appears to do nothing anymore.
785- Parts of `expo upgrade` have been merged into `npx expo install` via the `--fix` and `--check` flags. [PR](https://github.com/expo/expo/pull/17048).
786- `expo doctor` has been deprecated in favor of `npx expo-doctor` for projects using SDK 46 and higher.
787- Dropped unused generated `.exprc`, `.expo/packager-info.json` files.
788- Dropped all deprecated support for `*.expo.js` files.
789- Reduced usage of `.expo/settings.json` to provide a more sandboxed state between processes.
790
791#### Environment Variables
792
793- Dropped `$XDL_PORT`, `$XDL_HOST`, `$XDL_SCHEME`, `$SERVER_URL` in favor of `$EXPO_STAGING` and `$EXPO_LOCAL` environment variables.
794