Replies: 5 comments 3 replies
-
I haven't really got anything to add beyond saying, from a purely selfish point of view as an RN user, this sounds like a good idea to me. From past experience with RN and native iOS development, forced Xcode upgrades for developers can be problematic as;
So the longer RN can support Xcode versions that are still valid for generating builds for the App Store the better, in my opinion. 😄 |
Beta Was this translation helpful? Give feedback.
-
Yup I think we should define rangers for each of the tool we support and have a CI job that tests lowerbound + default. |
Beta Was this translation helpful? Give feedback.
-
Yea I'm all for adding another configuration with the lower-bound Xcode tested. Would this have caught this issue though, was it just a 14.2 issue? Is it too costly to test all minor versions in between for building? |
Beta Was this translation helpful? Give feedback.
This comment was marked as spam.
This comment was marked as spam.
-
I tried to change the executor for a couple of jobs to Xcode 14.1, in order to have a lowerbound check: facebook/react-native#39602 It turns out, the executor which Xcode 14.1 comes with |
Beta Was this translation helpful? Give feedback.
-
Opening this conversation to collect some ideas about a problem we've hit a couple times recently in the 0.72 release cycle but that has been around since forever: there have been a couple of occasions in which changes have been introduced (in main) that would only be compatible with Xcode 14.3, forcing developers to update their toolchain if they wanted to use these new patch releases.
Namely:
In these specific scenarios, why is this considered a blocker if Xcode 14.3.1 is the latest stable release of the tool? Two data points:
So introducing those changes is an arbitrary breaking change that would disrupt VALID developers' workflows and product pipelines - which is not good.
In terms of compatibility tables, on the Android side of the world the AGP version creates the lowerbound of the Android Studio version that is supported, as described here developer.android.com/studio/releases#api-level-support (which makes it easier to track what tools will work with what version) and the Google Play requirements set the lower boundary for target API, for example right now from August 31st is going to be "New apps must target Android 13 (API level 33) or higher; except for Wear OS apps, which must target Android 11 (API level 30)".
It would be great if we could figure out a way to honour the lowerbound accepted configurations without necessarily forcing React Native itself to stick to these "older" versions. Or, to say in another way: how can we ensure that situations like facebook/react-native#38294 don't go undetected and get flagged only when developers hit the problem (which then force a rapid response to address)?
Me and @fortmarek have been discussing this and we were wondering if a good way to create a first check would be to expand the CI to test both what is being currently used ("latest") AND this lowerbound set up ("defaults" or "lowerbound"). We do have something in place for testing Node's current LTS and the previous (
nodelts
andnodeprevlts
) and Ruby (with versions 2.7.7 and 3.2.0).For example, if we had in place a similar thing for Xcode's CI config, those changes breaking in versions lower than 14.3 would have been detected.
These "compatibility checks" would need to be verified right before every branch cut - so that there is a clear signal of what a version of RN is compatible/expected to be compatible with (and so not to make the versions go stale/forgotten).
Thoughts? Opinions? Leave them below!
Beta Was this translation helpful? Give feedback.
All reactions