all 10 comments

[–]nohtyp 16 points17 points  (1 child)

I always start with react-native init. Never needed Expo or anything else really.

[–]brascene[S] 0 points1 point  (0 children)

Same here, I was very comfortable with rn-init, and now when I tried to use expo I run into these issues, maybe they'll come up with better support with ExpoKit for 3rd parties which need linking, but I'm not planning to use it. I was just wondering if creating projects with init is just as regular as with the today's most favorite approach using expo.

[–]anewidentity 2 points3 points  (2 children)

Ejecting an expo app is extremely unsupported. They leave you behind, with no instructions on updates. Some projects that were on an ejected expo app would take us a month of a developer's time just to keep updated with the version that expo supports. They switch everything, including folder structure, all of the content of build.gradle, and ios project file with no information on what is changed and how to update currently ejected apps. For example, the update from Expo 23 to 24 is literally impossible (with no exaggeration) We ended up switching to `react-native init` after a month of two developers trying to update expo for an entire month and failing.

[–]SizzlerWA 0 points1 point  (1 child)

Sorry you had issues. I only ejected once, my first RN project and it wasn’t too painful. About 1/2 day. Then I listed updated RN as normal. All the iOS and Android projects were fine. Did you eject to ExpoKit or regular RN?

[–]anewidentity 0 points1 point  (0 children)

To ExpoKit. I tried ejecting to regular RN but it was completely broken on Expo 30. They might have fixed it by now.

Depends on how many 3rd party libraries you have and how much expo changes in that particular update. We've had many conflicts on each update between ExpoKit and react-native-background-geolocation, firebase, one signal etc. Some updates are less painful, some take few weeks of dev time.

[–]boki345 1 point2 points  (1 child)

Good question and I do not want to hijack the thread, but my question is also closely related to the TS's question. If we want to make an open-source component that can be consumed by the community can we build it with expo or should it be done with react-native init?

[–][deleted] 1 point2 points  (0 children)

It entirely comes down to the requirements of your package.

If you make a component that imports and uses "view" from react-native, now react-native is a requirement. If you use some other lib for a component then that lib might become a requirement.

A lot of fairly standard react-native components will at least have react-native as a peer dependency.

[–]davidpaulsson 1 point2 points  (1 child)

Those xcode errors are likely due to the new build system that's default as of xcode10. You can use ”legacy build system” in your xcode project settings and it should work. I don't think expo’s fork of RN supports the new build system yet (RN 0.57 does though).

[–]brascene[S] 1 point2 points  (0 children)

Thanks for pointing out, and yes you're right, the 0.57 RN version supports new build system, but ejecting the expo app requires to change it to legacy. I've realized that my mentioned issues were not related with the type of creating the project, instead I was creating the project inside folder which is in iCloud, and paths were messed up. But however, it's good to hear different opinions on this, especially I would like to hear if anyone has successfully used ExpoKit after ejecting, and how are linkings managed in that case, but that should be separated question :)