Expo vs bare React Native…the Pros and Cons
Tags: reactnative, expo, mobiledevelopment
Published: 2023-03-27 17:55:23

---
title: Expo vs bare React Native…the Pros and Cons
published: true
date: 2023-03-27 17:32:43 UTC
tags: Reactnative, Expo, MobileDevelopment
canonical_url: https://www.tiaeastwood.com/expo-vs-bare-react-native-the-pros-and-cons
cover_image: https://dev-to-uploads.s3.amazonaws.com/uploads/articles/adg5ddxbbcoe3vm8ks1g.png
---

[React Native](https://reactnative.dev/) is one of the most popular cross-platform mobile app development frameworks. It is an open-source platform that allows developers to create mobile applications using the same programming language and logic as for web development. There are two popular ways to use React Native, either by using the bare minimum React Native or using [Expo](https://expo.dev/). Both have their advantages and disadvantages and that's what we're going to look at this article...

## Bare React Native

### Pros: 
- __More Control:__ Bare React Native gives you complete control over your project. You can customize your application as per your needs and preferences. You can add and remove features, libraries, and modules as required. This level of control is not available with Expo, which comes with pre-built components and libraries.

- __Better Performance:__ Bare React Native apps have better performance than Expo apps. This is because Expo comes with pre-built components that can slow down the application. With bare React Native, you can optimize your code and have more control over the app's performance.

- __Flexibility:__ Bare React Native offers more flexibility than Expo. You can use third-party libraries and components easily, which may not be possible with Expo. This flexibility allows you to customize your application to a greater extent.

## Cons:
- __Steep Learning Curve:__ Bare React Native requires more in-depth knowledge of React and native mobile app development than Expo. The setup and configuration process can be complicated and time-consuming for beginners.

- __Tedious Setup:__ Setting up a bare React Native project can be a tedious process, as it involves installing and configuring several packages, including native modules, libraries, and tools.

- __Mac Required:__ To develop using bare React Native, you need a Mac since you need to use [Xcode](https://appleinsider.com/inside/xcode), which is only available on Apple OS.

## Expo

### Pros:

- __Easy to Use:__ Expo is easy to use, even for beginners. It even feels pretty natural if you've already spent a lot of time using React. Expo provides pre-built components and libraries that you can use to build your application, plus a simple setup and configuration process.

- __Faster Development:__ With Expo, you can develop mobile applications faster than with bare React Native. The pre-built components and libraries save development time, and the hot reloading feature makes it easy to see the changes you make instantly.

- __Publishing:__ Creating a build ready for the app store is a fairly simple process using [EAS](https://docs.expo.dev/eas/).

- __Available To Everyone:__ You don't need a Mac to develop an ios app using Expo. You can create an app that will work on both ios or Android, whithout even needing to run a simulator, since you can use the [Expo Go](https://expo.dev/client) app on your mobile device.

### Cons:

- __Limited Control:__ Expo comes with pre-built components and libraries, which means you have limited control over the application's features and functionality. This can be a drawback if you want to customize your application.

- __Limited Flexibility:__ Since Expo comes with pre-built components, you may not be able to use third-party libraries and components that are not compatible with Expo.

- __Performance:__ Expo may have slower performance than bare React Native because of the pre-built components and libraries that come with it.

- __When You Don't Want Expo Any More:__ Removing Expo and changing your app to bare React Native at a later date can be frustrating and time consuming.

---

## In Conclusion

Bare React Native and Expo both have their advantages and disadvantages. If you have experience in native mobile app development and want more control and flexibility over your application, bare React Native is the way to go. However, if you are a beginner or want to develop mobile applications faster and easier, then Expo is the better choice. Ultimately, the choice between the two depends on your specific requirements and preferences.

My personal recommendation would be to start out with Expo if you're new to learning React Native. Once you feel comfortable and familiar with React Native concepts, then switch to bare workflow. That's what I did :smiley: