
Airbnb Is Moving Off of React Native (2018) - memexy
https://softwareengineeringdaily.com/2018/09/24/show-summary-react-native-at-airbnb/
======
lukevp
I’m an engineering manager, and made the call to build a new mobile
application for our company in React Native in early 2019. I read this article
back then and considered various options before picking RN.

I have built apps in native iOS (pre-swift), Android (Java), windows phone
(c#), phonegap/Cordova/ionic capacitor (cross platform web w/ native plugins),
and Xamarin.

I did a POC of the app in RN before my team started building it, and I fell in
love with it. We moved to the beta with Fast Refresh and the experience of
building the app was great. Expo is huge too if you don’t need custom native
like we did (we’re building an order processing app for a custom Android
scanner).

Overall I feel that React is the best tech for building frontends that we have
so far, and TypeScript makes JS quite nice.

Downsides to RN were the entire package dependency tree getting messed up
every time we upgraded (could have been our newness to the platform at play),
and the first version of the app that was not built with react best practices
was really slow and had a lot of bugs. We had to go through a rearchitecture
once we learned how to properly use immutable state, redux, selectors, slices,
etc. we use redux toolkit and redux saga, and it has full offline support with
automatic resyncing when it reconnects. It is a very slick, high performance
app now. I’m not sure we saved any time doing RN because of the learning
curve, but now that the team is spooled on this architecture, it’s paying huge
dividends as we build electron desktop apps and websites with React as well.

~~~
wh-uws
Your use case is the situation where React Native thrives. You get code
sharing across platforms and a leg up with election and stuff like that.

I view Airbnb's failure with it more of a (justified) lack of will.

They already had native apps rolled out and were tacking things on with React
Native.

I feel it's best to invest in the largess of the codebase being in React
Native and digging into native apis when needed

"A common misconception is that when Airbnb decided to use React Native, that
they made a complete switch. This is not only not true, but to this day the
React Native code represents only 15-20% of the codebase and developer
resources. It was never a majority platform for the company, and part of that
was the immense upfront cost to enable even the first set of components for
the mobile platforms.

Even though React Native is a framework and vastly simplifies mobile
development, it is not trivial to get up and running, particularly if you have
an existing codebase. Expect to invest a substantial amount of time and energy
to integrating React Native into your existing mobile codebase"

Airbnb decided it wasn't a priority to finish the job.

That's a fine choice I just don't see it as wholesale indictment of React
Native as it was originally sold in that article.

~~~
tspike
This topic seems to bring out the worst in programmer religious wars.

Small company, limited resources, greenfield app that needs to be on all
platforms: React Native is a no-brainer that'll help you survive and thrive.

Large company, large existing native codebase, no shortage of resources: RN
will be an expensive, divisive distraction that doesn't gain you anything. It
can make a lot of sense for prototype projects, but that use case is pretty
similar to the former.

------
grensley
Airbnb suffers from a problem I call "Too many engineers". All that's really
left is scaling issues.

The product is effectively done. It was done years ago. Now you just have
engineers inventing problems for the sake of creating work. Same deal with
Uber, Netflix, and Facebook. Core competency was dev complete forever ago.

~~~
echelon
Have you ever worked at a large engineering org? Your impression might change
unless you've seen dysfunction firsthand.

There is work to be done everywhere!

\- Keeping the lights on

\- Deprecating old and broken systems, finishing migrations

\- Tweaking the product. Small optimizations can create massive windfalls at
scale.

\- Maintaining and updating business logic. Imagine the complexity of laws in
all 50 states and abroad.

\- Improving product performance so customers don't get a bad impression.

\- Improving support flow so fewer supporters can get more done.

\- Exporting data, doing ETLs, etc. for analysts.

\- Doing greenfield development of new products and features to further growth
and deepen the moat so that competitors don't encroach.

Most businesses wouldn't pay for engineers if they didn't think they needed
them.

~~~
grensley
\- Open Sourcing an animation library for After Effects
([https://airbnb.design/lottie/](https://airbnb.design/lottie/))

\- Making a plugin for exporting After Effects to JSON
([https://github.com/airbnb/lottie-web](https://github.com/airbnb/lottie-web))

\- Porting their open sourced animation library for iOS
([https://github.com/airbnb/lottie-ios](https://github.com/airbnb/lottie-ios))

\- Porting their open sourced animation library to a mobile framework that
another company created that doesn't really have anything to do with its core
business. ([https://github.com/react-native-community/lottie-react-
nativ...](https://github.com/react-native-community/lottie-react-native))

\- Writing a 5 part blog post on why they're moving away from that technology

Look I love Lottie, but it's hilarious to me how far outside of "Facilitating
short term rentals" it is. Facebook has the same thread to pull with React. I
get that they're "trying to contribute to the ecosystem" but it's like an
extension of the PhD for these coders.

~~~
robbintt
That’s also recruiting and media as well as retention work for skilled experts
due to the competitive space.

~~~
grensley
For sure! Need a skilled expert to port it to Expo.

------
shiv86
Another perspective; Shopify adopts React Native:
[https://engineering.shopify.com/blogs/engineering/react-
nati...](https://engineering.shopify.com/blogs/engineering/react-native-
future-mobile-shopify) and
[https://softwareengineeringdaily.com/2020/04/15/shopify-
reac...](https://softwareengineeringdaily.com/2020/04/15/shopify-react-native-
with-farhan-thawar/)

------
enra
I worked at Airbnb during this time, and basically it came down to the fact
that it just didn't make sense to invest in RN.

The company already had 50-100 native engineers already productive and
passionate about iOS/Android with internal tooling, large code base and
support from Google and Apple (like you could contact Apple when there was a
performance problem on Swift and they would sometimes come over to diagnose).
Most native engineers didn't want to do React Native and most web developers
didn't want to deal with native mobile both on iOS and Android. There was
always some edge cases, navigation quirks or performance problems, where in
order to fix it, you had to know the platform somewhat well. Most engineers
are not that familiar with both iOS, Android and RN. So who would want to do
it? Also just to support RN as a platform, you needed 1-2 engineers full-time
just keeping it working and resolving issues with the platform (which is not
that different from iOS/Android).

To get it fully adopted, you would have to basically restructure the mobile
teams, recruit new people, rewrite the code base and tooling to make the
switch. RN was experiment to see if teams would be more productive and make
sense for the company but it didn't since the company had already invested so
much native.

There is also something to be said about building a new app in RN vs trying to
build an performant app that has over 10 years of functionality, runs both
Guest and Host experience in the same app, is internationalized to 30
languages/locations (each city in the world has their own regulation which
affect taxes, what data needs to be collected etc), is run on wide range of
devices and runs hundreds A/B tests and gradual feature rollouts. It's classic
"I could build X in a weekend" if you only focus on the very common surface
level features.

With many frameworks or languages people often love the experience of building
a new app. After maintaining the app over years with several developers,
platform upgrades etc the feeling might change. I wonder what are largest,
most widely used and longest running RN apps out there?

------
siquick
React Native 2020 is far superior to RN of 2017/18.

I built an app in RN in 2017 and it was a real headache actually getting
anything to build. I've since built another one, far more complex than the
previous one in the last few months and it's been a real surprise as how
stable and dare I say, easy, it actually is.

Saying all that, I haven't attempted to upgrade from RN 0.61 to 0.62 and
expect issues from this.

------
dmix
React Native is "re-architecting" and claims to be significantly improving
performance and revisting other architectural choices:

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

I've long been curious whether Airbnb was too early adopting or it simply made
more sense for such a big company to go native (also factoring in Swift/Kotlin
making native mobile dev less-bad in the meantime), from the article:

> Many of these features were built at a time where we simply did not have
> enough native engineers to achieve our goals.

> we’ve grown our team to more than 100 mobile engineers to enable new
> experiences and improve existing ones.

Or maybe React Native truly added more baggage than it's worth going cross-
platform.

Cross-platform has always been sort of a pipe dream that has haunted
programmers since forever, but especially since mobile browsers and non-shitty
JS became a thing (Linux and MacOS/OSX are still having their perpetual moment
as well).

I plan to revisit the Airbnb series regardless since I forgot most of their
reasoning...

~~~
shallowthought
Or maybe they hired a bunch of engineers to move fast and break things,
promoted them, and now those same people are leading their engineering efforts
and trying really, really hard to do something they suck at, which is writing
maintainable code.

------
faitswulff
You can read the four part saga directly from Airbnb here:
[https://medium.com/airbnb-engineering/react-native-at-
airbnb...](https://medium.com/airbnb-engineering/react-native-at-
airbnb-f95aa460be1c)

------
kevsim
I've always worked in relatively large companies, and I've led several mobile
teams. I've always ALWAYS been a native mobile purist. I had iOS people
writing Obj-C and Swift, I had Android people writing Kotlin/Java. I had
budget to have at least 2 of each and things moved along.

Now I find myself a CTO of a startup where mobile is less crucial (we're
building an issue tracker to take on Jira/Trello/etc) and I don't have a big
budget anymore. I need to seriously consider something like RN or Flutter.

Anyone else been in this situation where picking a cross-platform toolkit is
not a matter of trend or religion but rather one of necessity? Any learnings
to share?

~~~
ranci
Is there even any evidence that RN or Flutter are better for smaller budgets?
Like actual data that doesn't live in the mind of a RN/Flutter enthusiast?

~~~
kevsim
That’s a very good question. The reality may be that if one cannot afford at
least one native iOS dev and one native android dev (given the size of the app
that person could share other duties) then one is not in a place to launch a
mobile app

------
GiorgioG
This is from 2018...update the title please.

------
freejoe76
Weird that the site is still as slow as it's always been, how have they not
fixed this, it's slow on desktop it's slow on the app it's always the slowest
thing. Slower than local news websites. S l o w.

~~~
alasdair_
I gave up using them when they switched from showing places to stay to showing
(by default) all kinds of crap that I didn't care about.

I was a business user, with a business account and business credit card. Why
am I being shown "experiences" as the default behavior?

In the end I was forced to quit due to my account being in some weird state
that they STILL haven't fixed (I checked today, a year and a half later). All
that happens when I log in is I see "We’re reviewing your info Someone from
our team will review your account and follow up with you soon at <email>"

This is after many years of bookings and absolutely zero disputes or
complaints etc. Emailing them gets me nowhere - just no response at all.

------
julius_set
Every time there’s a thread about React Native the RN fanboys come in droves,
the reality is that RN is an abstraction over Native Mobile and will always be
inferior to it.

You will end up debugging issues for supporting multiple platforms via one
codebase.

I like React just not for Native Mobile, nowadays stick to native Swift or
Kotlin and wait for SwiftUI and Jetpack Compose to make Mobile development
seamless

------
nsonha
I'd love to use a better language like Swift or Kotlin for cross platform
development but in reality, between Typescript which is a ubiquitous language
with a lot of traction and potential and Dart, a me too language with limited
usecases that Google tries so hard to shove down our throat, I know what I
prefer.

Dart lost to Typescript before in the javascript war, btw

------
cwhiz
This was an interesting blog series when they originally wrote it, in 2018.

