Well, that wasn't my experience, my experience is that each new release seriously broke my project, that Android React-native was in a sad state for a long time, that scrolling list and image loading performance was bad and had to be replaced with custom versions, that the attempts to write the Navigator in JS were bad and janky, and you invariably had to resort to native platform dependent ones, and one and one. The migration tool frequently failed for me.
And I'm not even referencing the sorry state of third party components as well. Something as simple as a map component or bluetooth component would break on every release.
Oh, and then there's Babel choking on large complex projects in hard to debug ways.
I agree that upgrading versions in react native is not as simple as increment it a number in package.json.
My advice to you in your case would be find the versions that work and then stick to them.
Only update when needed and treat migrations seriously (in a separate branch, migrate, test everything and only merge once everything works perfectly).
That’s what we do and we did rollback several migrations because of various problems. But given our complex stack I think this is fair enough.
And I'm not even referencing the sorry state of third party components as well. Something as simple as a map component or bluetooth component would break on every release.
Oh, and then there's Babel choking on large complex projects in hard to debug ways.