4 ms·
I'm a bit unsure about this decision. Because this is tying React Native to a private entity, namely Expo, that has not open sourced it's toolchain used here. E
by RubenSandwich 10y ago
I'm a bit unsure about this decision. Because this is tying React Native to a private entity, namely Expo, that has not open sourced it's toolchain used here. Expo takes your code and builds it on their servers and then serves it to you. That toolchain unlike React Native is not open source. This is creating a walled garden around Expo who can easily decide to charge for their server fees. Yes it is a much easier of an boarding experience then installing Xcode and Android Studio but at least with Xcode and Android Studio you own the whole toolchain. Because of this fact I don't think this is comparable to React Create App, which is excellent.
Edit: Expo has open sourced their code, see below. And CRNA does not build code on their servers, I assumed it had the same workflow as their XDE tool. It does not. But I'm still unsure of this decision. It makes Expo a vital part of React Native, or at least puts them in the position to have that position.
- dikaiosune 10y agoHi! Expo is definitely a private entity, but the tools used by CRNA are also definitely open source: https://github.com/exponent/exponent https://github.com/exponent/exponent https://github.com/exponent/exponent-sdk https://github.com/exponent/exponent-sdk https://github.com/exponent/xdl https://github.com/exponent/xdl Also, the RN packager runs locally on your machine, there is no dependency on Expo's build services when working with Create React Native App. The concerns you raised were front and center when we were working on this project, and we worked hard to make sure that CRNA has no service dependency, it works completely offline.
- RubenSandwich 10y agoWhat about the build server?
- dikaiosune 10y agoWhich build server? If you have an Expo account you can create a "standalone app" with our service, but that's not a part of CRNA's workflow and it's certainly not required to use this tool.
- RubenSandwich 10y agoOkay I assumed that it followed the same workflow as the Expo service. I'll edit my comments to state that.
- dikaiosune 10y agoSorry for piling on! This is definitely something we could be clearer on in the docs.
- RubenSandwich 10y agoNo worries. I understand that you want to get the story straight. I do think you should specifically state in the blog update that this is a new tool and not a reuse of Expo's tools.
- hesarenu 10y agoCan i create a standalone app without Expo account?
- dikaiosune 10y agoYou do need an Expo account to create a standalone app. If you want to create an app for the App or Play Stores yourself (i.e. without an account), then you'll need Xcode and/or Android Studio.
- ccheever 10y ago(I work on Expo) CRNA doesn't use our app building service (which is free) or integrate with it, though you can take a CRNA project and use it with the rest of our tools like the app building service. Also, CRNA does support ejecting which gives you an Xcode project and an Android Studio project. You can really control everything you want to control here.
- jesseruder 10y agoLike dikaiosune said, the standalone app workflow isn't part of CRNA. The scripts used by the build servers are open sourced though: https://github.com/exponent/exponent#standalone-apps https://github.com/exponent/exponent#standalone-apps
- evv 10y agoI work on React Native Open Source at Facebook. We are not attaching React Native to Expo in any way. This tool simply helps developers get started with fewer dependencies than before. We are happy to collaborate with any company that makes React more accessible- not just Expo.
- RubenSandwich 10y agoI wouldn't go so far to say that you are not 'attaching React Native to Expo in any way', this tool which will soon be the default way to create React Native projects installs the Expo SDK. This is by definition attaching Expo to the projects I create using this tool.
- evv 10y agoIf you have all the native dependencies, you can always make a RN app the old-fashioned way- `react-native init`. This is not going away. The Expo client is open source, so you can fork it for your needs if you want. Also, if you do start an app with CRNA, and decide that you want to avoid everything-Expo-related, you can eject to a native app with one command. In summary, we have been careful to craft the CRNA solution to have absolutely zero lock-in.
- lacker 10y agoI wouldn't say that this tool "will soon be the default way to create React Native projects". We want React Native to recommend the set of tools that is most suited to developers, but not be tied to a particular one. For example, we have at times recommended Genymotion when we thought it was the best recommendation, even though it's tied to a private entity. We would like to hear from the React Native community what methods of getting started are the most well-regarded, before changing any recommendations on the React Native website. If you don't want to use Expo that is totally fine, you can just use `react-native init` which isn't going away.
- RubenSandwich 10y agoI believe that 'react-native init' is not going away. But I'm sure that in all documentation going forward 'create-react-native-app' is going to be used as it is a simpler tool to uses the verbs people know in npm. So by that logic it will be basically be the default way.