Description
I feel like (from looking at the issues that get open constantly) there is an overall incomprehension/misunderstanding of how many moving parts are interconnected to make a React Native app project run.
In particular, there are two kinds of issues I see appearing every now and then:
-
the FOMO effect: people see a new version of a tool, install it right away without any necessary reason (but simply because it's the latest) and then flip tables because their app breaks.
example: React Native apps fail to build since NDK update to r17 (due to removed support for ARMv5/armeabi) react-native#19321 -
the Overlord rollout: some external tool gets 'force updated' / a new minimum version gets enforced and hell breaks lose.
example: React Native version mismatch (on app that was working a couple of hours ago) - Android react-native#19259
IMHO, a way to potentially decrease / reduce these effects - which go beyond the control of react native - is to better communicate and educate developers about the existence of these tools and the overall approach to them. In particular, I think it would be a good start to add a table with the 'we know this version of this tool works' approach (ex. tool / creator / latest know version to work well) and a page in the docs with a brief description of each one (or a mix of both?).
So I decided to open this issue - Here is what I would like to discuss:
-
Does this reasoning make sense?
-
What approach should we communicate as the 'best/safest/approved'?
I think the overall reasoning should be "don't update unless necessary, and before upgrading run a search on open issues".
- What tools should the list comprehend?
My current take of this is 'all of the ones we can think of' - and here's a list of the ones that come into my mind at the moment:
- Metro (+ Haste)
- Watchmen
- iOS (Dropping Support for iOS 8 react-native#19346)
- CocoaPods
- XCode (Cannot build react-native project with Xcode 9 server react-native#16850)
- macOS (Unable to run Vanilla App in High Sierra with 0.55.4 react-native#19218)
- Android ([META] Roadmap of future Android(s) react-native#19297)
- Gradle (React Native version mismatch (on app that was working a couple of hours ago) - Android react-native#19259)
- ProGuard
- JSC (which I think is the only one that has "its" doc page: https://facebook.github.io/react-native/docs/javascript-environment.html)
- Android's NDK (React Native apps fail to build since NDK update to r17 (due to removed support for ARMv5/armeabi) react-native#19321)
- Yoga
- Flow