I created some POC for application in React Native.
I used create-react-native-app as the base for it. It's wrapped with Expo app.
Now I need to create some pipelines for it. I am using Gitlab as my CI.
I suppose that I should eject this application from Expo. But app's development with Expo is really good, I can quickly debug many things there and I have many things out-of-the-box.
How I should create whole flow if after ejecting I need to test it and deploy to Google Play/App Store?
Is it possible to eject this app as the CI step?
There’s no need to eject your app, if all you want is to deploy it to Google Play and Apple App Store. To do this you can use Expo to build a standalone app. The Expo CLI includes commands you can use to build your app to get the .apk and .ipa files for deploying it to the stores.
Related
I used to run expo build:android (or ios) to build and publish my react-native application.
The app in the app store automatically updated doing this.
Since I updated my expo version to 38.0.8 it doesn't seem to be working anymore?
Does anyone know what's the problem here?
Generally you have to run
expo build:ios(or android)
to generate an expo build, and then run
expo upload:ios(or android)
to upload to the App Store or Google Play Store
Just looking for clarification about how react-native apps are intended to be deployed to a platform's native app store (as opposed to being downloaded 2nd-hand from the Expo app) from a continuous-workflow perspective (as opposed to the mechanics of it).
Looking at the expo docs for standalone apps, it seems like the way a project would be continually (re)published would be to rebuild the app into the target platform and upload to the native platform's app store. Have not used react-native in some time, but I had initially thought that if you wanted to publish the app on a native platform's app store, you needed to eject the app and publish the platform's version of the ejected expo app to the native app store (and from then on, work on the app from the ejected version).
Could anyone with actual experience continually deploying react-native apps to native app stores enlighten me how what the standard workflow is here?
Expo provides a method for generating .ipa (iOS) or .apk (Android) without ejecting. You simply run expo build:ios (or build:android) to generate the standalone bundle which can be uploaded to the Play Store or App Store.
It is also worth noting that Expo provides internal over the air updates meaning you only need to publish your application to the App or Play store once. After the initial install, you can deploy updates through expo publish. Then, as per the documentation:
Expo will check for updates automatically when your app is
launched and will try to fetch the latest published version. If a new
bundle is available, Expo will attempt to download it before launching
the experience.
There was create-react-native-app just like create-react-app
However I see https://github.com/react-community/create-react-native-app has been merged to expo.
Since I need native (android or ios) support, I can do either of theses
expo bare workflow
https://docs.expo.io/versions/v34.0.0/bare/exploring-bare-workflow/
react native init
https://facebook.github.io/react-native/docs/getting-started (react native cli quickstart)
What do I gain by going through expo bare workflow?
If you use Expo, you can use the module in Expo. Of course, Expo needs to install modules for APK availability starting with SDK33. However, you do not need to link the Expo separately.
If you use Expo, it will automatically reload the code when it is refreshed and not restarted, making it easy to see the code change.
And with fast feedback, the development cycle will be faster. Because the process of communicating from simulator to native apps is still slow, build time will be increased when using Web versions that run directly into the browser, until HMR creates a basic framework for the app because it is fast and fully available with Chrome Developer tools.
Also, if you want to install a React-native module that requires a link, you can use the 'expo eject' command to eject Expo. Then you can use React-native.
i am using create-react-native-app
there is no android / iOS folder
how to generate signed apk and deploye to google play store
Here are the instructions for create-react-native-app app deployment.
https://github.com/react-community/create-react-native-app/blob/master/react-native-scripts/template/README.md#sharing-and-deployment
If you want to build and deploy your app yourself, you'll need to eject from CRNA and use Xcode and Android Studio.
This is usually as simple as running npm run eject in your project, which will walk you through the process. Make sure to install react-native-cli and follow the native code getting started guide for React Native.
Generating key
https://facebook.github.io/react-native/docs/signed-apk-android.html
If you don't see android/ios folders in your directory. Then type in your terminal react-native upgrade then react-native link
I have build an app using react native(detached) but the thing is I would want to completely get rid of Expo. The reason is, what if one day EXPO service get shut down or no more supported.
So in this case I would not want the app to be affected.
Currently I need to publish my app thru ExpoKit to see the latest changes, how would I build my android app so it would not have any reference to Expo but still be able to work properly
Currently this is how I understand how the react native and expo works: first u build ur app using react native code and then a bundle.js is generated somewhere on cloud(EXPO) using publish command so the app communicate with that bundle.js.
Note I am not using any feature from Expo so why would I need Expo in this case?
Edited: If I am detaching my app from expo, I mean why would I still need Expo? Can't I just build the app and run the app without expo at all?
You can build your whole application without using expo, just follow the steps from facebook documentation in "Building Projects with Native Code" tab.
or
you can run "npm run eject" in your project root directory folder.
After this, you can build your appliaction using react-native cli commands, like
react-native run-android.
edited :--
For building apk for production, you can follow steps given in facebook documentation as generating signed apk and for released IPA for iOS yo can follow building your app for production for IOS.