---
title: Installation
---

import { Terminal } from '~/ui/components/Snippet';

To develop applications with Expo, you need two tools. A command-line tool called [Expo CLI](#expo-cli) to serve your project, and a mobile client app called [Expo Go](#expo-go-app-for-android-and-ios) to open the project on Android and iOS platforms. Additionally, you can use any web browser to run the project on the web.

> **info** You don't need macOS to build an iOS app with [EAS](/eas). You only need an iOS device to run [development builds](/development/introduction). Windows, Linux, and macOS are all supported as your development machine.

## Expo CLI

[Expo CLI](/workflow/expo-cli) is a command-line tool that is the primary interface between a developer and other Expo tools. You are going to use it for different tasks in the development life cycle of your project such as serving the project in development, viewing logs, opening the app on an emulator or a physical device, and so on.

### Requirements

To use Expo CLI, you need to have the following tools installed on your developer machine:

- [Node.js LTS release](https://nodejs.org/en/) - Only Node.js LTS releases (even-numbered) are recommended.
  As Node.js [officially states](https://nodejs.org/en/about/releases/), "Production applications should only use Active LTS or Maintenance LTS releases".
- [Git](https://git-scm.com)
- For macOS or Linux users: [Watchman](https://facebook.github.io/watchman/docs/install#buildinstall)

### Recommended tools

- [Yarn](https://classic.yarnpkg.com/en/docs/install)
- [VS Code Editor](https://code.visualstudio.com/download)
  - [VS Code Expo Extension](https://marketplace.visualstudio.com/items?itemName=byCedric.vscode-expo) for Expo config debugging and autocomplete.

For Windows users we recommend using [PowerShell](https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-windows), Bash via WSL, or the VS Code terminal.

### Using Expo CLI

Expo CLI is part of the `expo` package, and you can use it by leveraging `npx` &mdash; a Node.js package runner. No installation is required.

For example, to see a list of available commands in Expo CLI, open the terminal on your development machine and run the following command:

<Terminal cmd={['# See a list of available commands in Expo CLI', '$ npx expo -h']} />

Now, run the following command:

<Terminal cmd={['$ npx expo whoami']} />

This command checks which Expo account is currently authenticated on your machine. You will see a **Not logged in** message since you are not logged in to an Expo account.
You do not need an account to start and can proceed further with your project. However, if you want to register a new Expo account, run the following command to register a new account:

<Terminal cmd={['$ npx expo register']} />

If you already have an Expo account, you can log in to it by running the command:

<Terminal cmd={['$ npx expo login']} />

> **Need help?** Try searching the [forums](https://forums.expo.dev) &mdash; which are great resources for troubleshooting.

## Expo Go app for Android and iOS

The fastest way to get up and running is to use the [Expo Go](https://expo.dev/client) client app on your Android or iOS device. It allows you to open up apps served through Expo CLI and run your projects faster when developing them. It is available on both the Android Play Store and iOS App Store.

- [Android Play Store](https://play.google.com/store/apps/details?id=host.exp.exponent) - Android Lollipop (5) and greater
- [iOS App Store](https://apps.apple.com/app/expo-go/id982107779) - iOS 13 and greater

Open the Expo Go app after it has finished installing. If you have created an account with Expo CLI, you can sign in by clicking the **Login** button in the top header on the **Home** tab. Signing in will make it easier for you to open projects in the Expo Go app while developing them &mdash; they will appear automatically under the **Projects** section on the Home tab of the app.

> Sometimes, it can be useful to run your app directly on your computer instead of on a separate physical device.
> If you would like to set this up, you can learn more about [installing an Android Emulator](/workflow/android-studio-emulator) and [installing the iOS Simulator (macOS only)](/workflow/ios-simulator).

## Next steps

Now that Expo CLI is working and the Expo Go app is installed, [let's create a new app and write some code](/get-started/create-a-new-app).
