I have an Expo detached app (ExpoKit) which stayed unmaintained for some time as it was working fine in production. It is SDK 22 and now need further developments with an upgrade to SDK 28.
I see multiple paths possible for upgrading my app:
- The “official way”:
- read all the blog post instructions from SDK22 to SDK28
- apply changes mentionned from detached apps
- apply changes of the official doc for upgrading ExpoKit
- The “re-eject and compare” way:
- Delete /android and /ios platform folders and remove ejection related attributes from app.json
- Put back react-native-scripts eject script
- Compare the local files to the new ejection generated files and report changes manually
- The “re-eject and reinstall native libs” way:
- Re-eject, same as 2)
- Reinstall your native libs like you did with previous SDK
I’m not a native developer so I don’t really understand every details of the changes that Expo may have done since SDK 22.
I’ve actually tried to check the diff and can see there are many files updated, probably not all of them being breaking changes, and only some of them being documented into release notes (like deleting
[_rootViewController loadReactApplication] on AppDelegate etc…)
So I really wonder if the undocumented things that changed should be ported to my app, or should I just follow the release note instructions and make the minimal amount of changes to make my app work with SDK28?
Also, as I documented my app’s ejection procedure (ie, what have been changed to the platform files after ejection, libs added etc…), and I only have few native changes (Intercom, OneSignal and other little things) wouldn’t it be much easier to simply reject and reinstall all native stuff directly, to avoid manual migration?
Wonder if anyone already thought about these alternative solutions or what Expo team think about solutions 2) and 3) which require “re-ejecting”, which is actually not something officially supported but that works.
BTW, I think it would be great to have an #ejected chan on Slack for those like me who have an ejected apps and want to discuss about it together