Loading…

    Expo vs React Native:
    Framework or Bare Project?

    Expo is built on React Native, so the real choice is Expo or a bare React Native CLI project. The React Native docs recommend a framework and name Expo. The CLI route makes sense when you want to own the android and ios folders from day one.

    Expo = framework on React NativePrebuild and config pluginsExpo Go vs development buildsCloud builds and updates
    TL;DR

    What is the difference between Expo and React Native?

    React Native is the core library that renders native views from JavaScript. Expo is a framework on top of it that adds file-based routing, universal libraries, config plugins, cloud builds and over-the-air updates. The React Native docs say most developers benefit from a framework like Expo, so start there. Fastshot generates Expo projects from a prompt.

    Last updated: November 4, 2026

    Expo vs React Native CLI: What You Get and What You Own

    Facts from the React Native and Expo documentation, checked November 2026.

    FactorExpoReact Native without a framework
    What it isA React Native framework with a router, libraries, tooling and cloud servicesThe core library only. You choose the router, build setup and libraries
    Native projectsGenerated by npx expo prebuild from your app config (Continuous Native Generation). Change them with config pluginsThe android and ios folders are yours to edit in Android Studio and Xcode
    First runnpx create-expo-app@latest. A cloud workflow needs no local Android Studio or XcodeNeeds Android Studio and Xcode set up first
    NavigationExpo Router, file-based, for Android, iOS and webPick and wire your own
    Trying it on a phoneExpo Go as a learning sandbox. A development build for your own appYou build and install your own binary
    Building store filesExpo Build in the cloud for Android and iOS, with signing credentials managed for youGradle and Xcode on your machines, or your own CI
    Over-the-air updatesExpo Update ships JavaScript and assets with the expo-updates libraryNot part of React Native itself
    Custom native codeExpo Modules API in Swift and Kotlin, plus config pluginsTurbo Native Modules and Fabric components
    PlatformsAndroid, iOS and web from one projectAndroid and iOS

    Pick Expo For Almost Every New App

    Expo removes the setup work. You create a project with one command, run it in a development build, and let Continuous Native Generation produce the android and ios folders from your app config. If you change those folders by hand, the next npx expo prebuild --clean can overwrite your edits, so native changes go through config plugins instead.

    Expo Build compiles in the cloud and can manage signing credentials, so you do not need a local Android Studio or Xcode setup. Expo Update then lets you push JavaScript and asset fixes between store releases with a command such as eas update --channel production.

    The old split between "managed" and "bare" no longer applies. The Expo docs say those concepts are deprecated and that every Expo project now uses Continuous Native Generation, so choosing Expo does not trap you away from native code.

    Pick React Native CLI If You Need the Folders Yourself

    The React Native docs reserve the no-framework path for apps with unusual constraints that a framework does not serve well, or for teams that prefer to solve those problems themselves. You then work with Android Studio and Xcode directly and own every native file.

    That is a good fit for a team with Swift and Kotlin engineers who already maintain native build scripts. You pick a router, a build pipeline and an update service yourself, and nothing is hidden.

    What Most Apps Need A Development Build, Not Just Expo Go

    Expo describes Expo Go as a playground for students and learners. It says Expo Go is limited and not useful for building production-grade projects. For an app headed to the stores, use a development build, which includes the libraries and native code your app actually ships.

    Expo Build also works with existing React Native projects created by other tools. So starting on Expo does not lock the app in, and starting without it does not stop you from adding Expo services later.

    Where Fastshot Fits: Expo Without the Terminal

    Fastshot writes the Expo project for you from a text prompt, shows it in a live browser preview and opens it in Expo Go when you scan the QR code. Builds run on Fastshot machines and produce the APK, AAB and IPA, ready to publish to the App Store and Google Play.

    How to Start an Expo App the Way the Docs Recommend

    1

    Create the project

    Run npx create-expo-app@latest. You get a JavaScript or TypeScript project with no android or ios folders yet.

    2

    Try it in Expo Go

    Run npx expo start and scan the QR code. Use this to learn the project and check screens quickly.

    3

    Move to a development build

    Install expo-dev-client and build your own app. Run it locally with npx expo run:android or npx expo run:ios, or in the cloud with Expo Build.

    4

    Build and update

    Run eas build --platform all to get installable binaries for Android and iOS. After release, publish JavaScript fixes with eas update --channel production.

    Frequently Asked Questions

    Is Expo the same as React Native?

    No. React Native is the library that renders your components as native views. Expo is a framework and set of services built on top of it. An Expo app is a React Native app.

    Which is better, React Native CLI or Expo?

    Expo for most new projects. The React Native docs say most developers benefit from a framework such as Expo. Choose the CLI only when you want full control of the native projects from the first commit.

    Can I use custom native code with Expo?

    Yes. Write native modules with the Expo Modules API in Swift and Kotlin, or change the generated projects through config plugins that run during prebuild.

    What happened to ejecting and the managed and bare workflows?

    Expo deprecated them. Every Expo project now uses Continuous Native Generation, where npx expo prebuild creates the android and ios directories from your configuration.

    Can I publish an Expo Go project to the stores?

    Expo says Expo Go is a limited playground, not a base for production apps. Make a development build for testing, then a production build through Expo Build or your own tools, and submit it with your Apple and Google developer accounts.

    Does Expo only work for new apps?

    No. Expo Build works with existing React Native projects created by npx react-native init or similar tools. Expo also says its services suit any React Native project, not only Expo ones.

    Can AI build an Expo app for me?

    Yes. Fastshot generates Expo and React Native projects from a text prompt, and you keep the source code with zip and GitHub export.

    Start an Expo app from a prompt

    Describe the app, scan the QR code to open it in Expo Go, and publish when it is ready.

    No coding needediOS and Android

    About the Author

    Elvira Dzhuraeva is an expert in AI mobile app development and React Native. A former Senior Product Manager at Google specializing in AI/ML and Generative AI, she is the Founder of Fastshot (YC-backed) and a founding contributor to Kubeflow.

    AI Mobile App DevelopmentReact NativeAI Developer ToolsVibecodingAI/ML Ops