The fastest way to create universal React apps
npx create-expo
bun create expo
pnpm create expo
yarn create expo
npx create-expo --help
Once you're up and running with Create Expo App, visit this tutorial for more information on building mobile apps with React.
Templates
Create Expo App prepares an empty Expo project by default. You can choose to use a project with more prepared functionality. For that, you can start Create Expo App with the --template
flag.
npx create-expo --template
npx create-expo --template tabs
npm templates
Expo publishes all templates through npm packages, versioned by Expo SDK. You can create your own npm templates with npm pack
, or by publishing to npm.
npx create-expo --template tabs
npx create-expo --template expo-template-tabs
npx create-expo --template expo-template-blank@50
npx create-expo --template ./path/to/template.tgz
Private npm registry
Create Expo App does not support private registries. In order to use a private template, use the local tarball option.
GitHub templates
Besides the templates provided by Expo, you can also create your own or use a 3rd party template directly from GitHub. The --template
flag supports GitHub URLs, including branch, tag, or even specific commit.
npx create-expo --template https://github.com/:owner/:repo
npx create-expo --template https://github.com/:owner/:repo/tree/:ref
npx create-expo --template https://github.com/expo/expo/tree/sdk-50/templates/expo-template-bare-minimum
Placeholders
Create Expo App uses various placeholder values to customize the name of the projects. These placeholders are replaced with their actual value when unpacking the template, and applies to folder names and file contents.
Hello App Display Name
→ The name of the project, without modifications (example Android)HelloWorld
→ The name of the project with sanitization as described below (example Android, iOS)helloworld
→ The lower-cased name of the project with sanitization as described below (example Android)
Sanitization
Some characters aren't allowed in certain places, that's why Create Expo App applies sanitization to the project name.
- Remove all non-word
\W
and underscore _
characters. - Normalize the string using Unicode's normalization form "canonical composition" or
NFD
. - Remove all accent characters
u0300-u036f
.
Special files
Due to some limitations with npm pack
, some files are handled differently.
gitignore
→ Renamed to .gitignore
due to npm pack
skipping .gitignore
files, see npm/npm#1862
Binary files
Placeholder replacements only apply to non-binary files and folder names during unpacking. These extensions are left as-is without any modifications due to possible corrupting binary files.