What expo is really about

I watched the video “Expo explained in 2 minutes”. It said it’s like “Rails for React Native”. So it’s like “framework for framework”? It makes it easier to setup new react native project but at what cost? I see there are no “android”, “ios” directories in the project structure and it’s all pure JavaScript. It all seems too easy and pretty so I have to ask what are the disadvantages of using Expo? From my understanding expo is like a “fork” of React Native that makes things easier and better and adds few default components like Camera and stuff. Does it mean I can’t make my own camera component or use third-party one like https://github.com/lwansbrough/react-native-camera ? I also found “Create React Native App” here: https://github.com/react-community/create-react-native-app is it somehow related with Expo project or it’s just for plain React Native?

It’s my first time dealing with React Native. I already started my project using the standard way described in documentation that is using react-native-cli/react-native. It was a big pain to setup all the things, install Android Studio and so on but seems like I got it working. Are there any advantages moving to Expo? Is Expo react native still native? Sorry for confusion but there are so many tools that it makes me go crazy.

Yes, Expo is still native. Android studio is not needed for Expo. You could just run your app on your ios or android devices via Expo App (It can be found on App Stores on Google Play Store or ios.

The only disadvantage is that you cannot use any third party react native packages that required linking or modifying code to native libraries (i.e. ios and android directories). Just an example, the react-native-camera you showed requires linking/modify code on native libraries, so that is definitely not going to work on Expo app. If you really want to use that package so badly, you could eject your Expo App.

There are many additional useful APIs have been made and maintained by Expo teams. Also, Expo team always released stable update which keeping us to the latest version of react native, and it is really easy to upgrade! I just upgrade my Expo App from sdk 20 (RN v.0.47) to sdk 21 (RN v.0.48).

CRNA is just offline form of Expo. Correct me if I am wrong.

1 Like