4 ms·
I've been using Expo for past 2 years and I enjoyed the experience overall. But make no mistakes that Expo is a SaaS with the ability to inspect some part of t
by paradite 3y ago
I've been using Expo for past 2 years and I enjoyed the experience overall.
But make no mistakes that Expo is a SaaS with the ability to inspect some part of the codebase.
(I stand corrected here) ~Everything important for building and distribution process is moving to EAS, cloud-based service that is not open-source and cannot be self-hosted. So if want to build your app using your own VPS, you are out of luck (at least for Expo managed workflow).~
Again I'm happy with their service and probably would pay for it when the time comes, but the open-source part is not really the big selling point anymore.
- vladev 3y agoYou can use the `--local` flag to build on your own computer/CI/VPS. `eas build --local -p ios --profile production` can locally build you an iOS bundle. Don't expect it to work out of the box, though. Your machine should have all the XCode tooling correctly installed and configured. Works for Android as well.
- artdigital 3y agoAFAIK using -—local still requires an eas account though.
- qazxcvbnm 3y agoIt does. It's possible to make a patchset that lifts this restriction, though. If you're interested, I'd be willing to make it available.
- benterix 3y agoJust to make sure: if the company goes bankrupt, will I be able to continue releasing updates etc.?
- jameside 3y agoThe Expo Updates protocol is an open standard specified here https://docs.expo.dev/technical-specs/expo-updates-1/ https://docs.expo.dev/technical-specs/expo-updates-1/ The hosted services offered by the Expo team called EAS has an implementation of an updates server that conforms to that protocol. If EAS went away or you wanted not to use EAS, you could write and operate your own server that conforms to the protocol instead.
- qazxcvbnm 3y agoThe Expo setup that I use never calls into Expo servers at build time. For OTA updates, I've managed to get my self-hosted Expo update server working too, although I'm not using it at the moment, as its incompatible with the React Native New Architecture (it's the last expo package to lack this support - hopefully they'll add it soon).
- psnehanshu 3y agoDo you have the self hosted OTA open-sourced? I tried implementating it, but it didn't work for some reason.
- qazxcvbnm 3y agoUnfortunately my update server contains a bit more stuff which I'm not planning to clean up at the moment, but the logic of the update server really is taken right from their https://github.com/expo/custom-expo-updates-server https://github.com/expo/custom-expo-updates-server repo. Perhaps you were blocked by this https://github.com/expo/custom-expo-updates-server/issues/12 https://github.com/expo/custom-expo-updates-server/issues/12 ? If so, its been fixed in the meantime, perhaps it works for you now?
- synergy20 3y agoplease do so, I would like to build it totally local and when I realize that outsourcing the build to the EAS cloud saves more time and money I will switch later, that sounds like a nice way to get more people use Expo.
- qazxcvbnm 3y agoI've put a link to it on my other comment. Hope it helps.
- petecoop 3y agoI believe it still uses EAS for certificates by default. You can use "prebuild" to get the ios / android directories. Alternatively start a React Native app and install their modules separately. These options still work well but require a lot more setup.
- Cthulhu_ 3y ago> Your machine should have all the XCode tooling correctly installed and configured. Works for Android as well. I mean that's the case for the 'regular' React Native workflow as well, and most mobile / crossplatform development. That said, yeah getting RN running is a bit more effort compared to Expo, but it allows for a bit more flexibility. We decided against using Expo because we had a number of 3rd party dependencies (trackers, analytics, chat, sigh) that had native components; it can work with Expo, but the dependency has to implement support for it, and that was a bit all over the place.
- paradite 3y agoThanks. I wasn't aware that eas build works locally as well (since they deprecated expo build). Is the build job also open source somehow?
- jameside 3y agoExpo is the free and open source framework and, separately, Expo Application Services (EAS) is the SaaS. Expo and EAS are designed to be decoupled while also working well together, optionally. The Expo framework gives you the module system, runtime environment, CLI tools, debugger, a suite of modules, navigation to build universal native apps. They're universal in that there is an Android build, an iOS build, and a web build, and, especially with Expo Router, they work together with universal links. They're native in that the user experience is native to the underlying platform, usually using system UI components and behaviors. EAS provides hosted services for building your app, submitting it to the stores, and updating it. Many developers will use both EAS and their own hardware. It is convenient and fast to build locally when iterating on a feature. And it is convenient in a different way to use EAS to make preview builds of your app on your PRs that change your app's native code or to make release candidates for production.
- paradite 3y agoHey. I appreciate that there is a distinction between Expo and EAS. However, as a user reading the Expo docs, I'm not sure if I can separate them easily without deviating from official docs. Look at the Expo docs on building and deployment, which are essential steps to getting your app distributed. I don't see any mention of how to achieve it without EAS. There used to be an expo build but it was deprecated a while ago. https://docs.expo.dev/develop/development-builds/installation/ https://docs.expo.dev/develop/development-builds/installatio... https://docs.expo.dev/deploy/build-project/ https://docs.expo.dev/deploy/build-project/
- jameside 3y agoA lot of the docs prioritize ease of getting started and EAS has a free plan generous enough to get you to production and often beyond. The Expo CLI docs have a section on building locally here: https://docs.expo.dev/more/expo-cli/#building https://docs.expo.dev/more/expo-cli/#building "npx expo prebuild" (covered in that link) is a good command to know. It generates "android" and "ios" directories with your Android Studio and Xcode projects, respectively. These projects can be built entirely locally and there is no dependency on EAS. As a side note, the old "expo build" command also ran on hosted servers. It was part of the old Expo CLI, which, for historical reasons from six or seven years ago, didn't separate the free & open source Expo framework from the hosted offering. We built EAS years later, with a major new feature being support for builds that have custom native code. Keeping EAS decoupled from Expo has been a conscious effort, and we've also designed EAS to work with any React Native app whether it uses Expo or not.