What is Expo?
When using Expo to build an app, you can approach the build using one of two different workflows:
Managed workflows maximize your cross-platform compatibility and make upgrading React Native versions very easy.
With a bare workflow, you have full control over the project. Using a bare workflow is similar to using the React Native CLI, but you still have access to all of the Expo features and you can add custom native code. However, with bare workflows, upgrading React Native versions becomes complicated and time-consuming.
Why Should You Use Expo?
There are a lot of benefits to using Expo. Some of the most prevalent benefits that I have found include:
- Expo has great documentation.
- If you are new to React Native, Expo is the perfect way to create simple apps while you are learning.
- Expo has a large set of packages that are guaranteed to work together.
- The development experience with Expo is similar to the typical development evironment for a web application; you just use Expo Go and a local dev server. Development doesn’t require native builds to see changes on devices.
- Deploying apps with Expo is completed with one command with the Expo CLI.
- For any updates that aren’t native code, you can use Expo’s publishing service to push updates to users without the app store. This service, similar to codepush, gives you the ability to complete over-the-air updates.
- Expo packages build much more quickly than the React Native community versions.
While there are many benefits to using Expo, there are also a few notable limitations:
- Not all iOS and Android APIs are available.
- Apps created with Expo tend to be larger, on average.
- It is harder to find third-party services with Expo support.
- Expo cannot be used to build apps for children under 13 years old.
However, if these are big red flags for you, all hope is not lost. The Expo team is actively working on or planning solutions for these limitations and more. Overall, Expo is a framework that is worth exploring, especially if you are still learning the ropes of application development.
For more information on React Native and other developmental frameworks, see Grio’s React Native blogs.