Define exactly what does and does not work with ExpoKit

There is A LOT of things that do not work using ExpoKit, and it is almost impossible to know what does and what doesn’t.

Also, ExpoKit upgrades really do not work at all, which should also be noted.

Sorry you’re running into trouble. I can provide some details about the iOS side of things:

For adding custom libraries to the iOS side of ExpoKit, any library that supports CocoaPods should just work out of the box. If the library doesn’t support CocoaPods then you need to do an extra step to configure the headers properly. This is documented here. Beyond that, ExpoKit for iOS doesn’t do much differently than a normal React Native app. So there might be one or two weird exceptions in the ecosystem but I would expect things to work.

For upgrading iOS ExpoKit, let me know if you run into a specific issue. In general, updating React Native (with or without Expo) can be hard and might be different every time. When you write pure JS apps, we take care of this for you, but in ExpoKit, there’s no way for us to handle this automatically.

High level, working with ExpoKit is always going to be more complex than dealing with pure JS. Debugging Xcode and Android Studio (and their whole associated toolchains) is definitely more complex and requires using a broader set of tools compared to only writing JS. We try to make this as easy as possible, but it’s tough for us to account for every single possible change somebody could make in native code.

If you can provide some details about the specific issue you’re having, we’d love to help out, and hopefully improve ExpoKit so it doesn’t happen to other people in the future. Thanks for being critical and I hope we can do better.

I am mostly using Android, but still all the details you shared are appreciated, but also more or less well documented.
I understand all the extra complication introduced with ExpoKit, because of handling Android and iOS projects locally instead of building them on Expo’s servers, and I’d like to take another chance to pay my utmost respect to you guys and the work you do.

Now I can tell that my post was mostly useless without the extra information.

Basically, I was talking about Expo features that do or don’t work on ExpoKit, and the circumstances in which they do/don’t work,
for example; setting app icon in app.json works when using ExpoKit but only if you set it before detaching, after detaching all changes made to icons in app.json are ignored.
Another thing - you have to manually change app version before building/releasing, because once you’re detached, the APK/IPA version is not going to increase automatically.

I am aware that for some (most) of cases like this, there is a perfectly good reason why something doesn’t work, or might even be impossible to implement, but it would still be awesome to be able to see what Expo features do and don’t work, and under which circumstances, when using ExpoKit - after all, I don’t think anyone WANTS to detach, but for some things you still have to, and it would be nice to know that you can save some time if you just set the icon before detaching, or upgrade Expo version before detaching, or at least expect something to be different then it was when using plain Expo.

Updating ExpoKit on Android from SDK 25 to SDK 26 is, to my understanding, currently impossible without creating a new project on SDK 26, detaching from that, and copying all your files to the new project, while also having to link external libraries (react-native link, or manually edit files) - which is extremely time-consuming.
This seems to have been an issue before SDK 26 as well (Failed upgrading expokit sdk 25 on android - #9)

Thanks again!

This topic was automatically closed 15 days after the last reply. New replies are no longer allowed.