Getting lost with the best branching strategy / updates since eas

Hello everyone,

An old client asked me to fully update its app that was running on an older SDK.

TLDR: eas update will only update the version of the app with matchind version (including ios and android version) on any version with matching branch ?

I fully recreated the project and now I am getting a bit lost on how eas update works compare to expo publish. The documentation is huge with so much information about different flows and so on but at the end I feel very overwhelmed with the documentation and get lost between branches, channels, versions etc… This is how I anticipated to do my flow and I’d like to know if it seems OK.

Github:

  • one main branch that is always in line with the production build and its latest update
  • one branch for each main release as history (if update needed on older version) according to the expo.version number in app.json when I create the new version.

App:

In my app config files, for each major update of SDK I change in app.json:

  • expo.version (now 4.0.0)
  • expo.ios.buildNumber (now 18)
  • expo.android.versionCode (now 18)

Now I am getting confused with the eas.json and the channels. Right now I have:

{
  "cli": {
    "appVersionSource": "local"
  },
  "build": {
    "development": {
      "developmentClient": true,
      "distribution": "internal",
      "ios": {
        "simulator": true
      }
    },
    "production": {
      "channel": "production"
    }
  },
  "submit": {
    "production": {}
  }
}

Not sure how the channels interact with the version number. My ideal plan would be to have my ‘production’ app built and then first put to testflight and after test moved to release. In case of update during this process I’d use the eas update whether still in testflight or in production mode. Until I don’t update SDK or add packages my understanding is that I do not need to change version numbers.

So my process would be:

eas build --profile=production

And then either submit manually or using eas submit for submission.

In case I need an update I’d do

eas update --branch production

And that’s where I am very unsure: will this update only the production branch where Sdk, version, buildNumber and versionCode are equivalent ?

What if I have two published app with simiar SDK version because I needed to add a package, is there a risk this update will change both even with different versionNumber. As far as I remembered with expo publish you could only affect app with all the same version numbers, is it still the case ?

Or if you have a clear explanation of a simple flow with one developer managing:

1/ Major SDK updates every 6months
2/ Simple updates regularly

and how you manage your git repo and your app configs, that would be great.
Thanks for helping out on this.