A few things have converged to cause me to wonder if I’m really doing things right just about every time I try to integrate part of the Expo SDK into my ExpoKit project:
- the move to unimodules
- breaking out of many different Expo SDK API’s into separate packages
- moving of several former React Native API’s to separate react-native-community packages
- the near-but-not-quite-deprecation of ExpoKit
In short, I have no idea what is actually in ExpoKit anymore vs what is in a unimodule vs what actually needs to be natively linked.
react-native-webview is an example. Go to the docs and it says “do X if using managed, do Y if using bare.” I just followed the “bare” instructions, which required native linking, because I assumed ExpoKit was more like bare than managed. But I just got an iOS linker error saying I had react-native-webview in two different cocoapods, so I’m assuming I shouldn’t have done that. Though the Android build just worked, so I’m not sure I want to unlink it there.
On the other hand, there’s expo-analytics-amplitude. Was I following the Managed or Bare docs? In a sense, I was following managed, because all I had to do was run
expo install.... On the other hand, I had followed Bare because I had unimodules already installed.
Are there are hard-and-fast rules for how the remaining ExpoKit users should treat “if Managed, do X, if Bare, do Y” instructions until we can move over to Bare? Any exceptions?