Never use Expo for your React Native projects

Never use Expo for your React Native projects

As a mobile developer when I have discovered React Native I started reading official docs of RN. In installation section, it suggested me to use Expo. I visited its home page, scrolled down, after that, I told myself: "I must use it".

Created my project using Expo. Started coding pages. Installed its mobile app for debugging. Its build system wondered me. It doesn't require SDK installation and build process happens on its own cloud for "free". After a few weeks, I got an email that tells: "Get your free build on expo". But I think it isn't a problem because everyone may earn money by selling its services.

Expo pricing

But, Why don't use Expo?

1. Bigger App Package

The app bundle size becomes higher than usual because of unused packages. Because there are a lot of packages bundled with expo that you can't ignore them. A simple "Hello, World" app may take ~20Mb on your phone space. That may not be a big problem but unused packages also may make your app a bit slower.

2. You'll not able to Use Native Packages

In the expo, there's no way to use native packages. You can only use native packages bundled with the expo.

3. No Support for Private Projects

To build your app on expo cloud, expo publishes your app on its websites. There is no support for making it private to you.

4. Codes will be Hosted on Expo's Cloud

That's good if you don't want to ask the user to re-update your app from App stores. But what happened if in one day in the future expo stops its servers (on AWS and GCP) and told you to "we are sorry"? Your users will not able to use your app anymore before you published a new version. You'll be lost some of your customers.

All of those told to me by my friend. But I haven't listened to him. But today I need to migrate from the Expo. That will take my time today. I'm writing this to don't do the same thing.

PS: Actually there are some good sides of Expo. You may try it out. But in real projects, I suggest you do not use it.