StackShareStackShare
Follow on
StackShare

Discover and share technology stacks from companies around the world.

Follow on

© 2025 StackShare. All rights reserved.

Product

  • Stacks
  • Tools
  • Feed

Company

  • About
  • Contact

Legal

  • Privacy Policy
  • Terms of Service
  1. Stackups
  2. Application & Data
  3. Frameworks
  4. Cross Platform Mobile Development
  5. Create React Native App vs Expo

Create React Native App vs Expo

OverviewDecisionsComparisonAlternatives

Overview

Expo
Expo
Stacks811
Followers693
Votes66
Create React Native App
Create React Native App
Stacks97
Followers206
Votes0

Create React Native App vs Expo: What are the differences?

Create React Native App and Expo are two popular tools used in mobile app development with React Native. They both aim to simplify the process of building cross-platform mobile applications using React Native. Let's explore the key differences between Create React Native App and Expo.

  1. Configuration and Setup: Create React Native App is a command-line tool that helps set up a new React Native project with minimal configuration. It offers a simple and lightweight approach, giving developers more control over the project setup and dependencies. On the other hand, Expo is a comprehensive development platform that comes with a suite of pre-configured tools and libraries out of the box. It provides a quick and streamlined setup, allowing developers to get started with React Native development without the need to configure multiple dependencies.

  2. Development Workflow: Create React Native App relies on the React Native CLI for building and running the app, making it more suitable for developers who prefer a traditional development workflow. It provides flexibility to add native modules and customize the native code if needed. Expo, on the other hand, offers a managed workflow that abstracts away much of the native development complexities. It allows developers to build and test apps using a web-based development environment, and some features may require using Expo's APIs.

  3. Access to Native Modules: In Create React Native App, developers have direct access to the native code, enabling them to use custom native modules or third-party libraries that might not be available through JavaScript. This gives developers more flexibility and control over the app's capabilities. Expo, on the other hand, comes with a limited set of native modules out of the box. While it provides a wide range of built-in functionalities, developers may face limitations when trying to use certain custom native modules not supported by Expo.

  4. Ejecting: Create React Native App allows developers to "eject" the project, which means moving away from its minimal configuration and exposing the underlying native code. This step is irreversible, but it grants full control over the native modules and build configurations. Expo, on the other hand, doesn't support full ejecting. While it offers the "ExpoKit" option to customize some native modules, developers cannot fully eject and modify every aspect of the native code.

  5. Publishing and Distribution: Expo offers additional benefits for distribution, providing over-the-air (OTA) updates and easy sharing of app builds with stakeholders without going through app stores. Create React Native App requires standard app store deployment for updates and distribution.

In summary, Create React Native App offers more flexibility and control, making it suitable for projects that require extensive customization and native module integration. On the other hand, Expo provides a more streamlined development experience and is an excellent choice for rapidly building and testing apps with a rich set of built-in features and ease of distribution.

Share your Stack

Help developers discover the tools you use. Get visibility for your team's tech choices and contribute to the community's knowledge.

View Docs
CLI (Node.js)
or
Manual

Advice on Expo, Create React Native App

John
John

Feb 11, 2021

Decided

Our stack roughly divides into three major components, the front-end, back-end and the data storage.

For the front-end, we have decided to go with React Native via Expo. This allows us to target both Android and iOS with a single codebase. Expo provides "managed workflows" and an SDK that will simplify development and deployment.

For the back-end, we have decided to use Python. Python is the language of choice for machine learning (ML). It has extensive support for traditional ML algorithms (e.g. random forests) via Scikit-Learn and the SciPy ecosystem. On top of this, our industry partner has provided us their current solution written in Python. We decided to expose the back-end as a REST API using FastAPI. This allows us to nicely separate concerns from the rest of the codebase. FastAPIs use of static type hints, validation with Pydantic, and automated documentation allows us to build better APIs faster.

For data storage we decided to use a MongoDB Atlas, a NoSQL database. We decided to use a NoSQL database because we need to store large amounts of data (e.g data from the wearable IMUs). Moreover, due to the ever changing nature of a startup we require flexibility. NoSQL databases are schema-free which enables us to modify our schema as we see fit.

We plan on using GitHub Actions (GA) to orchestrate our CI/CD. Given GAs broad support of languages and workflows, it's hard to go wrong with this decision. We will also be using GitHub for version control and project management, so having everything in one place is convenient.

The major components of our CI/CD for the backend will consist of black for autoformatting, flake8 for linting, pytest for unit-testing, and mypy for static type checking and codecov for coverage reporting. We plan to use separate Docker containers to package the back-end and front-end components and use Docker Compose to launch the app. This allows us to better separate concerns, manage dependencies, and ensure our app is deployable anywhere.

109k views109k
Comments
Furqan
Furqan

Jul 16, 2020

Needs adviceonReact NativeReact Native

Hello guys, I am new here. So, if I posted without specific guidelines, please ignore.

Basically, I am an iOS developer and developing native apps for the last three years. Recently, I started learning React Native to develop apps for both platforms. If anyone out there knows any useful resources that will become a better react native developer.

@{#newbie}|topic:null|

325k views325k
Comments

Detailed Comparison

Expo
Expo
Create React Native App
Create React Native App

It is a framework and a platform for universal React applications. It is a set of tools and services built around React Native and native platforms that help you develop, build, deploy, and quickly iterate on iOS, Android, and web apps.

Create React Native App allows you to work with all of the Components and APIs in React Native, as well as most of the JavaScript APIs that the Expo App provides.

Statistics
Stacks
811
Stacks
97
Followers
693
Followers
206
Votes
66
Votes
0
Pros & Cons
Pros
  • 15
    Free
  • 13
    Hot Reload
  • 9
    Easy to learn
  • 9
    Common ios and android app setup
  • 6
    Streamlined
No community feedback yet
Integrations
React Native
React Native
React
React
React Native
React Native

What are some alternatives to Expo, Create React Native App?

Ionic

Ionic

Free and open source, Ionic offers a library of mobile and desktop-optimized HTML, CSS and JS components for building highly interactive apps. Use with Angular, React, Vue, or plain JavaScript.

Flutter

Flutter

Flutter is a mobile app SDK to help developers and designers build modern mobile apps for iOS and Android.

React Native

React Native

React Native enables you to build world-class application experiences on native platforms using a consistent developer experience based on JavaScript and React. The focus of React Native is on developer efficiency across all the platforms you care about - learn once, write anywhere. Facebook uses React Native in multiple production apps and will continue investing in React Native.

Xamarin

Xamarin

Xamarin’s Mono-based products enable .NET developers to use their existing code, libraries and tools (including Visual Studio*), as well as skills in .NET and the C# programming language, to create mobile applications for the industry’s most widely-used mobile devices, including Android-based smartphones and tablets, iPhone, iPad and iPod Touch.

NativeScript

NativeScript

NativeScript enables developers to build native apps for iOS, Android and Windows Universal while sharing the application code across the platforms. When building the application UI, developers use our libraries, which abstract the differences between the native platforms.

Apache Cordova

Apache Cordova

Apache Cordova is a set of device APIs that allow a mobile app developer to access native device function such as the camera or accelerometer from JavaScript. Combined with a UI framework such as jQuery Mobile or Dojo Mobile or Sencha Touch, this allows a smartphone app to be developed with just HTML, CSS, and JavaScript.

Framework7

Framework7

It is a free and open source mobile HTML framework to develop hybrid mobile apps or web apps with iOS native look and feel. All you need to make it work is a simple HTML layout and attached framework's CSS and JS files.

Qt

Qt

Qt, a leading cross-platform application and UI framework. With Qt, you can develop applications once and deploy to leading desktop, embedded & mobile targets.

PhoneGap

PhoneGap

PhoneGap is a web platform that exposes native mobile device apis and data to JavaScript. PhoneGap is a distribution of Apache Cordova. PhoneGap allows you to use standard web technologies such as HTML5, CSS3, and JavaScript for cross-platform development, avoiding each mobile platforms' native development language. Applications execute within wrappers targeted to each platform, and rely on standards-compliant API bindings to access each device's sensors, data, and network status.

Vue Native

Vue Native

Vue Native is a mobile framework to build truly native mobile app using Vue.js. Its is designed to connect React Native and Vue.js. Vue Native is a wrapper around React Native APIs, which allows you to use Vue.js and compose rich mobile User Interface.

Related Comparisons

Bootstrap
Materialize

Bootstrap vs Materialize

Laravel
Django

Django vs Laravel vs Node.js

Bootstrap
Foundation

Bootstrap vs Foundation vs Material UI

Node.js
Spring Boot

Node.js vs Spring-Boot

Liquibase
Flyway

Flyway vs Liquibase