I have built production app with EAS Build and published to app stores.
Build versions uses channel production which is linked to branch production
I want to build new version, download it and publish via store in "traditional way" so I build new production app on channel production.
What will happen with the app already installed on users devices? Will expo build add new update to branch production so users will download the update just after build finishes?
Or old app version will not receive an update and new version will be available only after app store review?
Thanks for clarify!
Edit:
As I found here it depends on runtime version. If the same runtime version is specified, update will be applied to installed apps.
Related
Before i continue, let me let you know that i know the code to deply to a targeted build for codepush
appcenter codepush release-react -a aountName/appName -d Production -m --description "CommentHere" -t versionName
I have tried to figure this out on my own and i have not been able to.
I have several versions of my app which i have deploy using CodePush and everything works well but I started having fears of crashes when i installed new packages on the latest build.
This implies the current code base would have new native differences as compaird to the old version.
The question is how can i deploy my new build with new native codes
and packages present to an old version of my app which does not have those
native packages without running into several crashes from all the users using the old version of the app...
I ask this cos i have a feeling if i push the new build with the new changes in UI and native chnages to the old version of my app, the app old app would crash.
If a bug comes in for an old version, how do I fix it and deploy it
for the old version only? Bugs may be critical and not everyone will
have the latest version of the app Or, the bug may only exist on a old
version of the app.
I await your response.
Code push will not affect any native code written within the Android or the iOS projects of a React-Native application. If you read the documentations carefully, it specifically says that it does not change / modify / update the native portion of the app.
Why?
This is because of the way the CodePush mechanism works. In essence, CodePush only stores and triggers the update of the JS bundle of the React-Native application.
This is why we wrap only the JS main app instance with CodePush HOC (Higher Order Component). This is what's happening when you do:
CodePush(MyApp); //wrapping the js bundle at app-root
So, unfortunately in your case, if there are native codes involved, regardless of deployment to a new or old version of the app, it has to be a AppStore / Playstore driven deployment.
I have a testing and production release channel, on TestFlight and the App Store, respectively. I want the ability to run both on the same device. Otherwise if there is an issue with my testing release channel me and my beta users are blocked from using the working production channel (as least without constantly downloading and overwriting the TestFlight vs App Store versions)
I tried https://medium.com/#ywongcode/building-multiple-versions-of-a-react-native-app-4361252ddde5, but it seems like most of the configurations were reverted on build, and I wound up with the same bundleIdentifier and therefore I could not download the TestFlight testing version without removing the App Store version.
I think your best bet is to release multiple apps from 1 source code. We ran into this problem as well and ended up releasing separate test (internal testing), beta (external testing) and production apps. Each with their own app logo, app name and expo release channel. As far as I know, there is no way to switch release channel after your app has been built.
Alternatively you could (beta) test your app by pointing your users to https://exp.host/#username/yourApp?release-channel=. This way your testers can test most of your app’s functionally in the Expo Go app.
You can use iOS Build Configurations and Android Build Variants to easily create different apps within one project.
I have two standalone APP building by Expo, one for iOS which push to testflight so internal iOS users can test it, another is just an APK let Android users can download and test.
Like Expo document said, I publish code to release-channel 'staging' then build these two APP by release channel staging, all are good and my users can start testing with testflight/APK.
But when I modify code and publish again, no OTA update happen, and in my Expo dashboard, the version code is just the previous one (I've also updated version/android.versionCode/ios.buildNumber in app.json).
What should I do to make the OTA update works? If need any other information please let me know, any suggestion is appreciated!!
I'm using Expo.io for publishing my over-the-air updates. I have submitted several new official updates (so new SDK/IPA files) to the App and Play store. I'm still using the same version of Expo as before. Will my over the air updates go out to the previous versions(people haven't gotten the offical app/play store update)? Or are the old versions stuck until the user manually updates to the latest version so that they can get OTA updates again?
If you upload a new build to the app store and play store, the user will need to download the build in order to get OTA updates for that build.
If you just build and push to the expo server, the user will be able to get OTA updates without any download.
The standalone app knows to look for updates at your app's published url.
From the documentation : Publishing Guide
When you build the binary, the current version of your app JavaScript
is bundled so that it loads immediately the first time the app opens.
But you’re not stuck with that version of your code, you can publish
updates at any time after that without needing to re-build the binary.
For example, if you find a bug or want to add some functionality to
the app after submitting the binary.
The standalone app knows to look for updates at your app’s published
url, and if you publish an update then the next time a user opens your
app they will automatically download the new version. These are
commonly referred to as “Over the Air” (OTA) updates, the
functionality is similar to CodePush, but it is built into Expo so you
don’t need to install anything.
Core expo team member #ide answered your question in this comment:
The way Expo, the publishing system, and versions work is this:
The Expo client and standalone apps support multiple SDK versions (ex: 18, 17, 16, 15).
When you publish your project, the Expo server saves your project bundle and the "sdkVersion" value in exp.json or app.json.
When the Expo client loads your project, the server sends back the latest bundle with the greatest SDK version that your client supports. So if your client supports SDKs 15 through 18 and you've published your project with SDK 15 and SDK 16, the server will send back the latest bundle for SDK 16.
So if you had published your project with SDK 16 before but then went back to SDK 15, any client that supports SDK 16 would still receive the old SDK 16 bundle.
The old Play Store versions will still get OTA (exp publish) updates as long as the published URL hasn't changed, which you can set in your app.json. This is because that URL is hardcoded into the native code (it's in MainActivity.java for Android).
Your published URL will be expo.io/#your-username/slug. From app.json's documentation:
slug
Required. The friendly url name for publishing. eg: expo.io/#your-username/slug.
I have uploaded a build v1.0 at app store before approval I have removed the build due to some bugs. Now when I am trying to upload build again its giving me error of duplicate. Is there any way to upload the same version
I am not sure if there may be a way do this. But you don't have to change the app version, you can just bump the build version and upload again.
EDIT: You can bump the build version from Project > General > Build. (http://tinyurl.com/lzrffoe)