Skip to main content
Glama
create-expo.md6.35 kB
--- title: create-expo-app maxHeadingDepth: 4 description: A command-line tool to create a new Expo and React Native project. --- `create-expo-app` is a command-line tool to create and set up a new Expo and React Native project. This tool simplifies the initialization process by providing various templates to get started quickly without the need for manual configuration. ## Create a new project To create a new project, run the following command: <Tab label="npm"> </Tab> <Tab label="Yarn"> </Tab> <Tab label="pnpm"> </Tab> <Tab label="Bun"> </Tab> Running the above command will prompt you to enter the app name of your project. This app name is also used in the app config's [`name`](/versions/latest/config/app/#name) property. ## Options Uses the following options to customize the command behavior. ### `--yes` Uses the default options to create a new project. ### `--no-install` Skips installing npm dependencies or CocoaPods. ### `--template` Running `create-expo-app` with a [Node Package Manager](#node-package-managers-support) initializes and sets up a new Expo project using the default template. You can use the `--template` option to select one of the following templates or pass it as an argument to the option. For example, `--template default`. | Template | Description | | ----------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | [`default`](https://github.com/expo/expo/tree/main/templates/expo-template-default) | Default template. Designed to build multi-screen apps. Includes recommended tools such as Expo CLI, Expo Router library and TypeScript configuration enabled. Suitable for most apps. | | [`blank`](https://github.com/expo/expo/tree/main/templates/expo-template-blank) | Installs minimum required npm dependencies without configuring navigation. | | [`blank-typescript`](https://github.com/expo/expo/tree/main/templates/expo-template-blank-typescript) | A Blank template with TypeScript enabled. | | [`tabs`](https://github.com/expo/expo/tree/main/templates/expo-template-tabs) | Installs and configures file-based routing with Expo Router and TypeScript enabled. | | [`bare-minimum`](https://github.com/expo/expo/tree/main/templates/expo-template-bare-minimum) | A Blank template with native directories (**android** and **ios**) generated. Runs [`npx expo prebuild`](/workflow/prebuild/) during the setup. | ### `--example` Use this option to initialize a project using an example from [expo/examples](https://github.com/expo/examples). For example, running `npx create-expo-app --example with-router` will set up a project with Expo Router library. ### `--version` Prints the version number and exits. ### `--help` Prints the list of available options and exits. ## Node Package Managers support Creating a new project with `create-expo-app` also handles setting up additional configuration needed for a specific Node Package Manager. **If you are migrating from one package manager to another**, you've to manually carry out the additional configuration in your project. **If you are using [EAS](/eas/)**, you also have to configure your project for any additional required steps manually. All the additional steps for each package manager are listed below. ### npm #### Local installation npm is installed as part of Node.js installation. See [Node.js documentation](https://nodejs.org/en/download/package-manager) for installation instructions. #### EAS installation Supported by default if the project directory contains **package-lock.json**. ### Yarn 1 (Classic) #### Local installation Yarn 1 (Classic) is usually installed as a global dependency of npm. See [Yarn 1 documentation](https://classic.yarnpkg.com/en/docs/getting-started) for installation instructions. #### EAS installation Supported by default if the project directory contains **yarn.lock**. ### Yarn 2+ (Modern) #### Local installation See [Yarn documentation](https://yarnpkg.com/getting-started/install) for installation instructions. Yarn 2+ handles package management differently than Yarn 1. One of the core changes in Yarn 2+ is the [Plug'n'Play (PnP)](https://yarnpkg.com/features/pnp) node linking model that does not work with React Native. By default, a project created with `create-expo-app` and Yarn 2+ uses [`nodeLinker`](https://yarnpkg.com/features/linkers#nodelinker-node-modules) with its value set to `node-modules` to install dependencies. ```yaml .yarnrc.yml nodeLinker: node-modules ``` #### EAS installation Yarn Modern on EAS requires adding [`eas-build-pre-install` hook](/build-reference/npm-hooks/). In your project's **package.json**, add the following configuration: ```json package.json { "scripts": { "eas-build-pre-install": "corepack enable && yarn set version 4" } } ``` ### pnpm #### Local installation Requires installing Node.js. See [pnpm documentation](https://pnpm.io/installation) for installation instructions. By default, a project created with `create-expo-app` and pnpm uses [`node-linker`](https://pnpm.io/npmrc#node-linker) with its value set to `hoisted` to install dependencies. ```ini .npmrc node-linker=hoisted ``` #### EAS installation Supported by default if the project directory contains **pnpm-lock.yaml**. ### Bun See [Bun](/guides/using-bun/) guide for details on creating a new Expo project with `bun`, migration from another package manager, and usage with EAS.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/jaksm/expo-docs-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server