One line in one of the linked articles that really struck me was "Often times, it is not clear whether code should be written in native or React Native. Naturally, an engineer will often choose the platform that they are more comfortable which can lead to unideal code."
Without a top down vision of the proper role for React Native vs native code, how could anyone possibly expect things to go well?
Even within React Native there are a lot of existing "boundaries" where native code is used in a way that allows the general contracts adopted by React to be used without worrying much about the implementation details.
The quote above suggests that Airbnb expected a cohesive and sensible approach to emerge, when clearly there were (as the articles mention) many developers who were strongly opposed to React Native from the beginning.
While it's not necessarily the case, it seems that if there was debate about where "models" should live, there was really a need for a CTO to simply make that call and allow the rest of the team to coordinate around the tradeoffs associated with the decision. Without that, the battle will be fought with every pull request and other social and organizational factors (like bro culture, intimidation, etc.) will dominate over the technical merits of the decision.
I love Airbnb, and use the app extensively both as a host and as a traveler. It's not clear why it ever seemed sensible to go down a "hybrid" path. The app has pictures, scrolling listings, and photo views. I'd be curious to read an article that discussed very frankly the decision to go hybrid and where the lines were drawn that turned out to be problematic.
I certainly would not have expected it to be a free-for-all, but the quote I pasted suggests that there was not necessarily a perspective on how the decision about the boundary (or boundaries) between the technologies would have an impact over time.
We've all been there. You hire a super smart native developer who has been doing nothing but native for a long time, and he/she can work magic that makes the equivalent (probably a bit immature) implementation in RN seem pedestrian. Then, because the native dev is experienced and respected, the consideration of boundaries is ignored in favor of gratifying the feat of engineering that was just done.
Repeat that a few hundred or thousand times and the code is going to need a full rewrite, but since that is hard to accomplish politically the most likely outcome is to preserve the "value" of the native code, since it cost more (in salary) to have built, and to blame RN for the problems.
I use the Airbnb linting guidelines for JS and while they are generally useful they suggest a culture of pedantry and a failure to see the forest through the trees. One of the React core team members recently ranted on Twitter about the robotic desire some people have to pretend that moving components to functional components counts as work, etc.
So based on that I would not be terribly surprised if the decision making was locally optimal but globally crippling... or, suggestive of a devaluing of systems thinking in favor of pedantry and the petty tyranny it installs in its zealots.
Scrapping it, ditching it, dumping it, etc, sounds too much like React Native is crap and someone made a mistake choosing it.
The original meaning is more like "slow phase out" or similar but now nothing gets "cancelled anymore". Everything gets "sunsetted" so the original meaning is lost.