
Airbnb is 'sunsetting' React Native, reinvesting all efforts back into native - dsgriffin
https://medium.com/airbnb-engineering/sunsetting-react-native-1868ba28e30a
======
merricksb
Discussed in this thread 2 days ago:

[https://news.ycombinator.com/item?id=17348215](https://news.ycombinator.com/item?id=17348215)

------
olfactory
Doing a hybrid app in the way that the articles describe sounds like a recipe
for tremendous complexity.

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.

~~~
dcow
I don't think you're giving them enough credit. They built an either eng org
on RN. I'm sure they made calculated decisions about how to address their
stack. In fact IIRC Gabe said they always preferred pure RN when possible but
conceded that someimtes it wasn't. I doubt it was some _hybrid free for all_
like you're suggesting.

~~~
olfactory
> I doubt it was some hybrid free for all like you're suggesting.

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.

------
megamindbrian2
I thought it was pretty amazing how much they hype up designing. Airbnb uses a
CI workflow where they can practically draw a shape on a piece of paper and
create a React component out of it. At least that is what I took away from
their design bloggings. What I found truly amazing is that there were no
instructions to set up their environment for my own product. What a waste of
energy. Every marketing site and app I write has some part of utility for
other applications. This is not the case with Airbnb.

------
edge17
AirBnb app was one of the primary examples of large organizations using React
Native. They are simply saying they are sunsetting their React Native app.

------
WorkLifeBalance
I thought react native was a facebook technology, is it theirs to 'sunset'?

~~~
wccrawford
They're sunsetting their use of it, not the technology itself. (The title is
very confusing.)

------
el_isma
'Sunsetting' means they won't use it anymore? I've never seen that expression
before. Does it carry any more meaning?

~~~
bovermyer
"Sunsetting" is a very common term (in America, at least) for deprecating or
discontinuing something.

~~~
_Codemonkeyism
But from my imperfect understanding if you own the technology/product, not if
you just use it. So Facebook may sunset React Native? But I'm no native
speaker.

~~~
ummonk
Native speaker here. You're correct. "Sunsetting" is when the creator slowly
phases out manufacturing / support for a product, so FB would need to be the
one sunsetting React Native. AirBnB should say they're "transitioning away
from" React Native.

