We will be looking into adding support for Expo in the upcoming months. Please reach out to our support team (help@daily.co) if this is a feature you are interested in.
Overview
Daily’s React Native library is not compatible with Expo projects
Expo projects can be “ejected” from Expo to use the bare React Native workflow
Once Expo projects have been ejected, they can use Daily’s React Native library
Daily’s React Native library is not currently compatible with Expo projects.
This is because Expo’s “managed” workflow does not allow usage of React Native libraries that introduce their own native code. In our case, the Daily React Native library itself, as well as one of its major dependencies (a forked version of react-native-webrtc), both introduce new native code.
Additionally, you may have noticed in our installation instructions that some configuration is required in the /ios and /android directories to get up and running. These directories are abstracted away in Expo projects, which means you will not be able to make the required configuration changes.
There is good news, though! 🙌 Expo projects can be updated to become compatible. Expo offers the option to eject your project and use a “bare” React Native workflow.
Considerations before ejecting your app from Expo
If you’re in a position to make this change to your project, there are still some major factors to consider before you eject your app.
One benefit of using Expo’s managed workflow is that it allows you to develop React Native apps without having to interact with Xcode or Android Studio. If you’re newer to mobile development or want to iterate quickly, only needing to interact with Expo’s platform definitely simplifies the development process. Additionally, Xcode is only available on MacOS, so you may not have access to Xcode depending on your development environment.
If these considerations are true for you, you will likely want to keep using Expo.
Unfortunately, sticking with Expo does mean you will not be able to integrate video chat into your app as it is not a planned feature. This limitation demonstrates one major drawback of using Expo. Though Expo can be faster and in many ways easier to develop with, it will prevent you from being able to use some React Native libraries and it can affect which product features you can incorporate into your app. Because of this, ejecting your app typically happens when you’ve reached the limits of what Expo can offer and which features you’re trying to build (like Daily video calls! 🙂 )
If you’re finding Expo is restricting your development too much, you’ll likely prefer to take the leap and switch to the bare React Native workflow.
Ejecting your app from Expo
If you do decide to eject your app, the process is fairly straightforward.
To eject your Expo project, you simply run expo eject.
After your app has been ejected, you should first confirm your app still builds properly by testing on iOS and Android. (Check out React Native’s instructions for building your app for the first time under the “React Native CLI Quickstart” section).
Once you’re happy with your set up, you can then follow the Daily React Native library’s README to get started!