13 ms·
Why did Airbnb dump React Native? (2021)
- candace20 4y ago
- Apocryphon 4y agoAirbnb switched away from React Native at a time when a lot of other high-profile companies did as well and wrote technical blog articles about it. Discord was one of the few dissenters: https://news.ycombinator.com/item?id=17619609 https://news.ycombinator.com/item?id=17619609 Looks like they're doubling-down further still: https://news.ycombinator.com/item?id=32310392 https://news.ycombinator.com/item?id=32310392 Looks like Shopify also picked up RN: https://news.ycombinator.com/item?id=22181873 https://news.ycombinator.com/item?id=22181873
- googlryas 4y agoI sometimes wonder if all these independent companies who appear to make coordinated technical decisions are just hitting the same frustrations at the same time, or if engineers just read each other's blogs and and then pitch the blog ideas at their meetings. And then write a blog about it, which other engineers at other companies read and pitch at their meeting. So basically it becomes a self-perpetuating meme.
- ClumsyPilot 4y agoI thought I was going to be an egnineer, and my decisions would be based on physics. But I am more of a writer and decisions are driven by fashion
- Apocryphon 4y agoThe intersection of technology and liberal arts, baby
- dspillett 4y ago> So basically it becomes a self-perpetuating meme. Sometimes many people in different places have had concerns, or ideas for a better way forward, for some time but have either but spoken up or have had the "everyone else seems to be dealing with it" reaction. In such cases it takes a certain critical mass of information supporting the change to get movement, that critical mass builds slowly but once it is reached the immediate reaction can appear explosive, and there are sometimes aftershocks back & forth, much like an earthquake caused by plate movement. So while there is some self fulfilling chain reaction feeding into it, there is usually some true need involved for a lot of the teams concerned.
- awb 4y agoI’ve worked on several projects with relatively new web/mobile tech and the line: “Here’s how we solved it at my previous company” or “Here’s how [similar size, well marketed company] is doing it” is extremely persuasive to management and fellow engineers as it de-risks the situation. By the time the new idea has its new problems, the company you followed (or one similar) has probably already posted about solving it, or shared a newer new idea you can try.
- yellow_lead 4y agoMost companies tend to have some development "thought leaders" that propose big shifts like this (and use some politicking to advocate their views), and sometimes the "big thing" ends up working, and sometimes it ends up being a disaster.
- sandofsky 4y agoThe way Discord tamed React Native was writing its chat view entirely native. This is the area in which users probably spend 99% of their time. Similarly, in the Facebook and Instagram apps, React Native is banned from the home timelines and other areas where performance matters. Recently Discord finally ported their Android app over. Even if you separate the "change is bad" factor, many users report it's quite laggy and a major regression from their previous native version. I find it funny when people cite high profile companies as success stories without having a benchmark for failure. "The users didn't abandon the product in droves" is a very low bar when you have externalities that would prevent them from leaving even if they wanted to. You could find the Amazon app total garbage, but just how bad does it have to be to pass on free two day shipping?
- jimmygrapes 4y agoDiscord on Android has absolutely taken a step backward since the shift. Just a little bit in UX/I (text input is larger than it used to be and doesn't scale with any appearance settings), but significantly in assigning messages to the correct person. Many a time in the past few weeks where a chunk of my messages in a DM get attributed to the other person after a minute or two, presumably due to some sync issue. I ain't impressed.
- hitekker 4y agoReact Native has two kinds of proponents: managers who don't want to deal with expensive mobile engineers and frontend web developers who don't want to learn mobile engineering. It's labor-saving and over-engineering combined into one seemingly respectable package. And I'm saying this as a manager and a former web developer. Flutter seems to have more respect for the craft of mobile engineering, which alienates managers and developers looking for an easy fix for their jobs and their careers.
- bko 4y agoDoes anyone know if Facebook is written in React Native? Also what's the role of React Native in Oculus/AI/AR apps?
- geuis 4y agoRight near the beginning: > Till the year 2012, Airbnb was just a React website. React wasn't released until 2013.
- godot 4y agoFirst thing I noticed as well! I think nowadays younger developers mostly simply equate "web frontend" with "React" subconsciously. :)
- hunterb123 4y agoWas the same way in the jQuery days with equating it to JavaScript. It's a compliment to the tech of how useful and prevalent it is.
- _greim_ 4y agoI don't think even young devs think this way. More likely the writer is just being lazy, and filled in gaps in their own knowledge with faux history-salad.
- jonny_eh 4y agoOr they meant a different year, like 2015, when React-Native was released.
- dakial1 4y agoPoor things, they missed the glorious Macromedia Flash days...
- frank_nitti 4y agoI do miss the games from shockwave.com in its heyday
- enra 4y agoIt was Rails and React was maybe adopted more broadly after 2016
- hunterb123 4y agoSeems strange to write an article about why they switched without mentioning one of the main technical reasons Airbnb said themselves: > Many of the difficulties we encountered were due to the hybrid model approach we took They had about 220 screens in RN, 880 native screens total. They found it difficult to juggle that, essentially developing 3 platforms instead of 2. Personally I prefer to do pure RN, with native extensions. Not a lot of native screens, because yes, you then are developing your targets plus RN. Also keep in mind they were early adopters and they probably had to do a lot of heavy lifting. RN has matured a lot since then, both thanks to Airbnb and to the rest of the community.
- meitros 4y agoThat always surprised me a bit, because part of the initial intent of react native was to be hybrid. Facebook had a lot of php developers that they wanted to enable to be able to write mobile screens. Not the core experiences, which you wanted dedicated mobile folks to write native for performance/transitions, but secondary things like the reporting flow. But it probably takes a dedicated developer focused team to manage hybrid. And in terms of pure react native…I don’t know if react native is now able to feel as good as a native app, but even for a few years after Airbnb’s post react native would not have been up to the task of rendering all the little animations and transitions that Airbnb had in their mobile app. (Though these days I would 100% write a new, less fancy mobile app in react native/expo - it’s constantly improved throughout the years)
- hunterb123 4y agoI think it depends on how you structure your code and your team. RN is mixed into the Facebook apps and they do quite well. Generally a small team is going to do pure RN, with limited extensions and views. A larger team you really have to know how to split everyone up while still being able to bridge views simply. JS triggered animations and other native features are performant now via JSI, nowadays most people use react-native-reanimated to achieve this. I think most of the issues Airbnb had were growing pains of RN and have long been resolved.
- HelloNurse 4y ago
- detaro 4y agoThis seems to mostly rephrase things from Airbnbs engineering blog at the time? https://medium.com/airbnb-engineering/react-native-at-airbnb-f95aa460be1c https://medium.com/airbnb-engineering/react-native-at-airbnb... (part 1 of 5)
- bornfreddy 4y agoThank you! The linked article explains their problems with RN much better.
- wly_cdgr 4y agoTL;DR: * React Native caused problems for AirBnB because they needed more complete and efficient support for native geolocation/mapping features than RN provides * More generally, frameworks like RN and Flutter are a good choice if your app doesn't need extensive/precise/efficient access to native platform features and a bad choice if it does
- hunterb123 4y agoThat's accurate to the article but not accurate to modern RN or even most of Airbnb's reasoning when they switched. With JSI now you can get efficient access to native platform features. Before you were able to bridge pretty much any native feature with a native view or extension, but you were bottlenecked by the JS bridge. Nowadays you can use JSI for anything intensive. As far as Airbnb, it was more they were trying to mix 80% native views with 20% RN views and they found they were doing more work than pure native. If you do mostly RN though you don't have that problem.
- zodester 4y ago> With JSI now you can get efficient access to native platform features. Before you were able to bridge pretty much any native feature with a native view or extension, but you were bottlenecked by the JS bridge. Nowadays you can use JSI for anything intensive. JSI indeed makes things more efficient, but you still have to maintain code to translate between native and JS.
- hunterb123 4y agoYes, but only the minimal to provide that specific native functionality, instead of a full blown native app. Unless you're doing something uncommon, there's most likely a 3rd party lib for that functionality. But yes, if you want to use a native platform feature that the standard lib doesn't expose of course you need native code either by you or someone else, that's the flexibility of React Native.
- mhoad 4y agoI’m not familiar with RN ecosystem specifically but in the Flutter universe at least getting down deep into native code is built in with well defined and first class extension points. Not sure the point you’re making actually applies unless maybe I misunderstand something.
- ajkjk 4y agoWeird title. The correct English would be "Why did Airbnb dump React Native?". All of the sub-headings have this strange construction as well. Is this 'correct' in some other country and I'm just not aware of it? I was gonna say, it's also weird because the text of the article seems nearly-native quality.. but actually when I went back and looked more closely it's semi-broken English as well. I guess it's in big wordy paragraphs that you skim and don't notice the grammar of.
- drc500free 4y agoI don't know what's even considered correct in Indian English, but it tracks with some of the non-standard word ordering I see working with folks from the subcontinent.
- acchow 4y agoMerriam-Webster shows plenty of examples of usage at the top https://www.merriam-webster.com/dictionary/dump https://www.merriam-webster.com/dictionary/dump "He dumped his clothes on the bed. She dumped the contents of her purse on the table. I dumped the old coffee down the drain."
- yupper32 4y agoDumped as word isn't the incorrect English. The formation of the question is the incorrect English. Correct: He dumped his clothes on the bed. Incorrect: Why he dumped his clothes on the bed? Correct: Why did he dump his clothes on the bed?
- seiferteric 4y agoI am not a front end developer, but when reading about these kinds of switches in front end frameworks... isn't that an incredible amount of work? How could it be justified? It must have created some really serious unsolvable problems in order to switch right? You would think it would be easier to improve the existing one instead of switching, but who knows. Either that or the amount of front end code really isn't as much as I imagine.
- frank_nitti 4y agoProbably not “unsolvable” but I imagine not well documented and a million footguns to make RN work in the scenarios described in the article. This would entail working in a new fork of React Native to add implementations for the underlying Android and iOS SDKs where the native functionality exists. That might include language bindings at multiple levels, e.g. from JS to Java, and potentially Java to C if NDK is required (and that’s just for android) In my experience, writing those bindings is very bug-prone and user-friendly documentation can be hard to come by. We wrote some Python extensions in C for a very simple functionality where we wanted native speed. Could definitely see it having been easier to just write the dang program in C, since you had to understand C as well as some fundamentals about how the Python runtime works in C along with its special data types and execution patterns. And if they mainly hire app developers and not interpreter/OS developers that could become entirely untenable
- galaxyLogic 4y agoThe front-end should be just the (user-) interface. The main logic is best kept on the server. In the early days of the web there was such a thing as "text-based browser". (Don't recall its name right now). You could interface with the WWW via a text-console. The point was user-interface shouldn't be the main thing of the application, it should be just a shell around it.
- danielrhodes 4y agoMade a relatively complex React Native app last year, and gained a lot of perspective on it. I don't think Airbnb made a bad choice at the time they did it. They tried embracing a technology that was at the time half baked. When you are operating at the scale of Airbnb where there are lots of engineering hurdles and a high quality bar, it's challenging to absorb nascent tech. Since then a couple things have happened: - Devices have gotten much faster and this has covered up a nice chunk of the performance tax that existed previously - The framework has gotten more mature and performant Having said that, there are still a number of rough patches so it really depends on what you need. Shopify, for example, seems to be quite happy with it. But as usual, it depends on what you're making. If you want something with heavy animations, lots of gestures / high touch responsiveness, really fast startup time, etc. - RN might not be the best choice (but still way better than it was before because of lots of great work). If you're creating something that is more on the CRUD side, RN is more than suitable and a great choice.
- deleted 4y ago[deleted]
- blkhp19 4y agoWeird to see this poorly-written blog post make it to the front page. It misses so many details that the official blog post includes https://medium.com/airbnb-engineering/react-native-at-airbnb-f95aa460be1c https://medium.com/airbnb-engineering/react-native-at-airbnb...
- djkivi 4y agoWhy does Airbnb host their engineering blog on Medium?
- honkdaddy 4y agoShort answer, eyeballs. Most engineering blogs are ultimately just a small part of their talent pipeline.
- jslakro 4y agoOne of the conclusion from the article: is React Native bad, No. It depends on the type of app your are developing... Of course!, since the day 1 of any web framework running as a native one. A post without any contribution
- sandofsky 4y agoIt looks like the author has zero connection to AirBnB and is entirely speculating on what went down based on what the company themselves wrote. You're much better off just reading AirBnB's own long, detailed series on what happened: https://medium.com/airbnb-engineering/sunsetting-react-native-1868ba28e30a https://medium.com/airbnb-engineering/sunsetting-react-nativ... That said, I find it perfectly represents about 90% of React Native evangelism: someone who has never shipped an app copying and pasting talking points to shill their YouTube channel.
- labrador 4y agoYouTube is in danger of becoming the video site of last resort if they keep allowing SEO engineers to drive good content down and instead drive garbage to the top Also, I got my first DMCA takedown the other day. They said I'm allowed 3 before they delete my site. All my videos passed the copyright check when I uploaded them so I relied on that as fair use. It occurred to me that my site will inevitably be taken down if 3 is the limit so I've lost all motivation to use it for anything.
- TakeBlaster16 4y agoI'm sure you've thought about this already, but you might want to `yt-dlp` your videos now if you care about preserving them.
- azangru 4y agoWhere would you host them?
- poulsbohemian 4y agoNot perfect for everyone but for my commercial content, Vimeo has been a good choice in terms of presentation, storage, and cost.
- Datagenerator 4y agoOpen, pro user platform? 1) 1) https://odysee.com/ https://odysee.com/
- ram_rar 4y agoIts a bit disingenuous of the author, who didn't even work @ AirBnb to speculate about their tech decisions. While not citing AirBnBs blog (https://medium.com/airbnb-engineering/sunsetting-react-native-1868ba28e30a https://medium.com/airbnb-engineering/sunsetting-react-nativ...) on sunsetting react native.
- deleted 4y ago[deleted]
- dang 4y agoRelated: Airbnb Is Moving Off of React Native (2018) - https://news.ycombinator.com/item?id=23558730 https://news.ycombinator.com/item?id=23558730 - June 2020 (61 comments) Airbnb is 'sunsetting' React Native, reinvesting all efforts back into native - https://news.ycombinator.com/item?id=17365451 https://news.ycombinator.com/item?id=17365451 - June 2018 (20 comments) React Native at Airbnb - https://news.ycombinator.com/item?id=17348215 https://news.ycombinator.com/item?id=17348215 - June 2018 (248 comments)
- enra 4y agoThis is very inaccurate in many aspects, not sure if actually anything accurate in this except the fact that Airbnb did use and eventually dumped RN (source: I worked at Airbnb 2015-2019 on the platform team). As others have linked, Airbnb actually did write a summary about this. Basically what went down: For years Airbnb had actually pretty strong native mobile engineering both on iOS and Android (some of the best engineers I’ve worked with) there was no issue investing more in to it. The had the resources, platforms were working well. The main challenge however was that anything the company needed to launch, needed to be built on 3 platforms at the same time (4 if you count tablet). Timelines were often tight which made the overall coordination between the platforms tough. One the main examples of this was when 2015-2016 team I was part of basically redesigned and rebuilt the mobile apps, and created a design system/component/layout library at the same time for each platform. It was a huge effort. At the same time, there was one guy basically hacking on React Native and ended he built the whole component system by himself in few weeks, compared to the months it took in native platforms. This was obviously impressive and company decided to experiment if we could use RN more to speed up development. I think the idea was never to fully replace the native platforms or even core flows, but there were lot of random flows and screens in guest and host apps which only minority of the users see. So 2016-2019 there was a core team working on a RN adoption, and different people and teams used it in different projects. There were some technical issues at times with performance and navigation that got eventually solved. However where it all came down was there wasn’t that much adoption and there wasn’t clear group who would actually use RN. Mobile engineers didn’t want to write RN code and web engineers didn’t want to build on mobile. RN also requires understanding of the native platforms, and if the point is build both for iOS and Android, then you need to understand both platforms which is a rare skill set. So in the end it was just more complicated than it was worth. I think new company/product can build the team and culture around RN will have better success. I’d still think if it’s the right choice given what you are building. No matter how good you are I think the RN/Flutter apps can be ok it’s really hard to make them feel fully native.
- gigel82 4y ago> Mobile engineers didn’t want to write RN code and web engineers didn’t want to build on mobile That's interesting. In our experience, we're having a difficult time hiring folks that want to write native (including UI) in antiquated languages and frameworks - but it's much easier to hire JavaScript folks that just hack at RN. Of course, someone still needs to stand up the actual platform, as well as write shared (and sometimes platform specific) pieces of functionality mostly in C++ so for now I guess us oldtimers still have some job security :)
- LAC-Tech 4y agoI don't mean to be too edgy here, but it has to be said. Why does anyone care what technology AirBnB uses for their mobile apps or websites? AirBnB is an incredibly successful company because of their marketing, ability to scale, and the fact they offered the right thing at the right time. Their website however, is slow and clunky. Their apps are slow and clunky. What about that side of their company is worth emulating?
- breakfastduck 4y agoI mean you've made the fantastic point for why people care already. People care especially if they feel a very successful business has slow and clunky apps. It's research. How did they end up in the position they're in? What good/bad decisions do they feel they made? Obviously it's interesting to people in the space. Where is anyone saying it's because they want to emulate it?
- LAC-Tech 4y agoBut my point is the success of airbnb clearly had very little to do with the quality of their mobile and web apps. It borders on irrelevant. It'd be a bit like customer service people diving into how google does it because they're so successful. They are. But not because of their customer service.
- deleted 4y ago[deleted]
- forlorn 4y ago> Now, one resort for them would be to use Airbnb’s web application on the web browsers of their phones, which doesn’t make much sense. I never understood why one needs 20 separate apps (100 Mb each) instead of just using a single standard pre-installed web browser. Mobile UI everywhere is fine and functionality is the same.
- mr_toad 4y agoWeb browsers don’t let you track users the way mobile apps do.
- woodysee 4y ago> Till the year 2012, Airbnb was just a React website I stopped reading after this. Websites released in 2012 were typically PHP, server-rendered, written with jQuery. Angular JS was considered cutting edge and go-to option for SPA projects. React was released later and only popularised around 2017-2018, and even at that time I remember most frontend developers were hesitant to use it in production due to the licensing ambiguity at that time (It wasn't MIT).
- 8n4vidtmkvmk 4y agonoo, can't have been that late?? i quit my last job in 2018 and we had already been using it for a couple years by then
- yakshaving_jgt 4y agoI helped introduce React at UXPin, and that was in Q4 2015. By that point it had already been broadly hyped for at least a year. The parent comment is broadly correct though. AirBnB couldn't have been a React website in 2012 if React's initial release was May 29th, 2013.
- hdjrudni 4y ago0.14.x was when I adopted React. And yeah, I think it was getting quite popular already. That was released in 29/10/2015, so that matches what you said.
- tomduncalf 4y agoI’ve been writing React since 2015 and it was already gaining some decent momentum then
- spoonjim 4y agoWhen your company is making billions of dollars a year from mobile apps it makes sense to have native teams. React Native is for development efforts with fewer resources.
- Traubenfuchs 4y ago> Now, one resort for them would be to use Airbnb’s web application on the web browsers of their phones, which doesn’t make much sense. Why? A proper web app would be sufficient.
- kbcool 4y agoDid they actually dump it in the end though or just announce it? Appbrain still lists React Native in the list of SDKs for the current version. https://www.appbrain.com/app/airbnb/com.airbnb.android https://www.appbrain.com/app/airbnb/com.airbnb.android Seems if it was all that bad it would be gone by now.
- contentboot 4y agocough https://news.ycombinator.com/item?id=32487190 https://news.ycombinator.com/item?id=32487190
- DanielHB 4y agoI have personally made an ios+android react native app that used native maps functionality (google maps from google cloud services in android and apple maps in ios). Not even using expo all the app was 100% react native EXCEPT the maps it was a bit awkward, but not really a HUGE issue (note this was in 2016, it seems it is easier now to integrate native code and expo today exposes a lot more functionality without needing native code). The main problem is that, for the very specific parts you need to do native you do need native developers (I did the android native part as I was a bit experienced with android native, but we had to get help for the ios part) Honestly the hard part was making ios and android maps feature-compatible. We wanted heatmaps and apple maps and google maps have completely different algorithms to render heatmaps
- DanielHB 4y agoMost of these stories of companies dumping react native are from apps that didn't start out as react native. Adding react native to an existing app and organisation is MUCH harder than using react-native or full-native from scratch Not only on the engineering aspects, but on the people as well. You will have a lot of attrition with devs not wanting to switch I would say that the only 100% safe way to succeed in this endeavour is to fire ALL your native developers and rewrite the app from scratch instead of introducing RN gradually. Obviously that is impossible for any app that is already big So unless you are willing to do a full rewrite and fire all your native developers and hire some people with RN knowledge (you need at least a few people with RN specific knowledge even if you have web-only devs) you will most likely fail Also if you DO want to share code between your RN apps and your web app that is ALSO somewhat harder and might need significant rewrites of your web codebase So in short, DONT DO IT, it is very unlikely you have the in-house experience and political will within your company to pull it off