Tips on migrating vanilla React Native to Expo

Hi,

I have inherited a vanilla React Native IOS/Android app that I would like to migrate to Expo. It’s important for me to move it to the managed workflow, even though there will be a considerable effort, because of the ease of publishing to both IOS and Android.

There’s a gist by Brent that gives a rough guide to migrating to Expo, you can see it here. He links a list of libraries that are a part of the Expo SDK and says:

Compare that with your package.json.

Here’s my package.json. I’m not sure how to review which libraries I can/can’t use in Expo. Is it that I can only use libraries in the list provided by Brent? Looking at the libraries in my package.json, which are the ones that I need to replace and do you have suggestion on what to use as a replacement?

I know that I can’t use react-native-firebase which is used only for notifications in this project, so I’ve already started research on migrating to Expo notifications.

But, for the rest I will need some help and suggestions.
Thank you

Hey @bzhr,

A good rule of thumb to determine if a library is compatible with Expo is if you need to run react native link or make any native code modifications, it won’t work. As for the react-native-community libraries, you can compare with our API reference https://docs.expo.io/versions/latest/ to determine which ones we have pulled into our SDK.

Cheers,
Adam

1 Like

Thanks, this is helpful.

Until now I needed to run two manual links (even though 0.6 version is in use).
These are react-native-firebase and react-native-device-info.

For Firebase it’s mostly clear what to do from reading the Expo docs.
What’s used in Expo to get device info?

it depends on what device info you would like:

maybe others…

1 Like

I was just reviewing the docs on Device, this will be enough for my use case. :100:

1 Like

Glad to hear we’ve been able to help the migration efforts! Let me know if you’ve run into any hiccups or have additional questions.

1 Like

Thank you. I actually need your opinion on this thread:

Basically, I want to know what will I lose if I migrate from managed to bare workflow in order to setup Stripe payments in IOS? I can leave this feature for the end of the development process, since it’s just one place where the user is paying for the subscription. In the meantime I will focus on getting the rest ready and investigate how’s the sanest way to setup payments in Expo that work on both mobile platforms.

Hi

Have a look at the following. I haven’t tried it myself, but I think it sounds like it might help with what you’re trying to do:

https://docs.expo.io/bare/using-expo-client/

2 Likes

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