For my final project, our team decided to use React Native for the development of our mobile application. While we were working on learning React Native, a question came up regarding whether to use Expo CLI and React Native CLI. To help the team reach a decision, I decided to do some research.
From my readings, Expo seems to make everything much simpler, easier build and you are not required to know any native mobile coding. All the native code is handled under the hood, so there is no need to touch any Kotlin, Java, Objective-C, which you might need to know while using React Native CLI. Instead of spending time on combing through X code/Android Studio dealing with configuration, more time can be spent on user facing features in the long term. Expo sort of removes frustrating layers from the development process by adding another layer of abstraction and allows easy interactions to device system features with available APIs from the Expo SDK.
One of the biggest disadvantages of Expo is that not all iOS and Android APIs are available yet on Expo. However, for the purpose of our project Expo may already provide what we would need. Our project requires the implementation of features such as recording, and playing audio, calling a speech-to-text API, and having a database/storage component to save pictures and audio files along with their metadata. Based on my research, using expo Audio API (https://docs.expo.dev/versions/v44.0.0/sdk/audio/ (Links to an external site.)) makes it very straightforward to implement microphone access, audio playback and recording in our app. On the other hand, if we were to use React Native CLI, we would need third party package and more set ups. In terms of Speech to Text API, third party react-native-voice API was only available for React Native CLI, but now since Expo SDK42, it actually allows Expo to use the react-native-voice plug in (https://docs.expo.dev/development/getting-started/#customizing-your-runtime (Links to an external site.)). Nevertheless, if we were to just use Google Speech to Text API in the cloud(or Heroku) instead, then using Expo would work just fine (https://fostermade.co/blog/making-speech-to-text-work-with-react-native-and-expo (Links to an external site.)).
Overall, our team being somehow new to mobile development, Expo seems to be the right choice for the purpose of our project, and will allow us to spend more time on design/coding instead of configuring.