I did an attempt to eject to bare workflow today and got it working, but the process needs better documentation. I wanted to share some parts, maybe this will help.
Ejecting (to bare and ExpoKit) should generate a podfile template which is analog to
react-native init . I wasted some hours until my ejected bare project eventually started working.
- React-Native Autolinking was missing in the podfile and no hint to this anywhere, pure googling
- Since it was missing, it broke react-native-screens, reanimated, gesture-handler, shared-element, vector icons
- Expo didn’t notify that there are some imports left against “expo” (notifications). It has capabilities to detect that there are modules left which has to be configured, directing to the unimodule article, so ideally it should also report that there is an expo import which will break hardly (It reported that EXPO SDK is missing and nothing more, another hour until I found out why).
Hint: search your whole project for
from "expo" and from ‘expo’ (usally I use double quotes, but stuff I’ve pasted for notifications used ‘expo’ with single quotes and I couldn’t find them until I retried with single quotes after an hour)
- I had to create an empty swift file in my project, target membership against my project + activating swift bridge headers to fix 100 compile issues in xcode
- I had to implement stuff for lottie in 3 different files for android (ok, this might be out of scope, but since expo includes lottie, the eject has to be smoother imho)
- Expo camera maven url in build.gradle was missing (reported missing classes)
- google maven url was missing, caused issues with the integrated build class support lib 3.3.0
Considering these steps, the eject was very painful for me and since expo said “Expo never locks you in”, I had the feeling it did. Now I have to work my way trough firebase. These means tons of refactoring on the server side (laravel) + app (integrating firebase, grabbing tokens, storing them etc).
For me, this was not a good experience.
And there are still a bunch of APIs missing (Splashscreen, AppLoading and a few more).
I know that bare workflow is on expos radar and you guys doing a great job providing these unimodules and expo apis, but I think the documentation and workflow needs improvement. Maybe this post can help