React Native · Mobile UI at native speed

How do you set up a new React Native project?

EasysetupexpotoolingUpdated Oct 2026
Quiz this track

Short answer

Start with Expo for most apps, or a bare React Native project when you need full native control. Both need Node, a package manager, and Xcode or Android Studio for native builds.

The first decision is Expo versus bare React Native. Expo provides a managed toolchain, over-the-air updates, build services and a large set of maintained native modules. A bare project gives you direct control of the iOS and Android projects from day one.

sh
# Expo project
npx create-expo-app@latest my-app --template blank-typescript

# Bare React Native project
npx @react-native-community/cli@latest init MyApp

cd my-app
npm run ios
npm run android
Expo is the fastest path for most product apps; bare init suits teams with existing native code.

What the setup includes

  • TypeScript configuration and a linter
  • Metro, the JavaScript bundler, configured for the project
  • A navigation library such as React Navigation or Expo Router
  • Testing with Jest and React Native Testing Library
  • Environment configuration and a CI build pipeline

Check the Node version required by your React Native release and pin it with .nvmrc or Volta. For iOS, install Xcode and CocoaPods; for Android, install Android Studio, the SDK and a JDK matching the Gradle version. Run on a physical device early because simulators hide permission, notification and performance issues.

You can start with Expo and later create native projects with expo prebuild. That keeps the managed workflow until you genuinely need custom native code.

Follow-ups you should expect

Interviewers use these to check whether the first answer was understanding or memorisation.

  1. 1When would you choose bare React Native over Expo?
  2. 2What does Metro do?
  3. 3How do you manage environment variables?
  4. 4How do you keep iOS and Android build tooling consistent across a team?

Say it in the interview

I usually start with Expo because it gives a maintained toolchain, builds and updates without hand-managing native projects. I choose bare React Native when the app needs custom native code or existing native SDKs from day one. Either way I pin Node and JDK versions, set up TypeScript, navigation, Jest and a CI build, and test on a physical device early so platform issues surface before release.

Use this as a model, not a script. Saying it in your own words is what makes it survive follow-up pressure.

Related questions

Reading is step one

Now say it out loud.

Understanding an answer and delivering it under pressure are different skills. Rehearse this topic in a live React Native mock interview and get scored feedback on depth, clarity and confidence.