Professional Documents
Culture Documents
2. The executable size is large which can hurt the overall downloads.
3. A lot of Firebase – a product by Google, that provides various services for app
development – products are not supported by Expo, for instance:
o Crashlytics, another Firebase service used to report crash events in the live
environment, is not supported. Instead, you have to rely on Sentry, a paid
tool for application monitoring and error tracking, for that.
5. Certain features cannot be tested on Expo’s client application. Instead, you need
to make a build to test them. An example of such a feature is ‘Firebase
Authentication’.
6. Image caching libraries in Expo are not efficient enough to support apps like
Instagram.
7. You need to have a paid subscription for a faster build creation process, else you
will have to wait for 45 to 60 minutes for the build, depending on the queue size.
10. Things appear to be working fine in the Expo client app but they are not when
compiled and built as a standalone app.
React-native CLI limitations
1. You would have to handle Expo versions yourself along with managing all
certificates and fingerprints.
2. It will take extra effort to create builds for Android and iOS using their respective
IDE’s where you will be handling all permissions and plugins using Gradle, a build
automation tool for software development, for Android and Pods, a tool that
manages dependencies and libraries, for iOS.
3. Overall development time will increase since you will now have to consider
dependencies separately.
4. You will miss the Over The Air (OTA) feature for sure if you want to update or fix
any important bug without publishing it and reflecting it on end-users’ devices.
This feature allows the developers to modify something in the live users’
application.
5. You will need MAC hardware for the iOS build creation process which isn’t
required with Expo.
https://www.venturedive.com/blog/expo-cli-vs-react-native-cli/#languages-for-react-native
https://stackoverflow.com/questions/61061489/which-is-better-to-use-react-native-cli-or-expo-
cli
React Native CLI:
Advantages:
You can add native modules written in Java/Objective-C, so you have full control of
your application.
Disadvantages:
Needs Android Studio and XCode to run the projects
You can't develop for iOS without having a mac
If you want to share the app you need to send the whole .apk / .ipa file
Does not provide JS APIs out of the box, e.g. Push-Notifications, Asset Manager, they
need to be manually installed and linked with yarn for example.
Setting up a working project properly take more time.
Expo:
Advantages:
Setting up a project is easy and can be done in a few minutes.
Sharing the app is very easy (via QR-code or link).
No build necessary to run the app
Integrates some basic libraries in a standard project (Push Notifications, Asset Manager,
etc.)
You can eject it to ExpoKit and integrate native code continuing using some of the Expo
features, but not all of them
Expo can build .apk and .ipa files (distribution to stores possible with Expo)
Disadvantages:
You can't add native modules (probably a gamechanger for some)
You can't use libraries that use native code in Objective-C/Java (eg: react-native-fbsdk)
Large APK Size
Debugging in ExpoKit (with native modules) is a lot more complicated since it mixes
two languages and different libraries.