6 ms·
Airbnb Is Moving Off of React Native (2018)
- GiorgioG 6y agoThis is from 2018...update the title please.
- faitswulff 6y agoYou can read the four part saga directly from Airbnb here: https://medium.com/airbnb-engineering/react-native-at-airbnb-f95aa460be1c https://medium.com/airbnb-engineering/react-native-at-airbnb...
- freejoe76 6y agoWeird 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.
- freejoe76 6y agodoes nobody tell them it's slow and they just don't know
- alasdair_ 6y agoI 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.
- dmix 6y agoReact 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 6y agoOr 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.
- grensley 6y agoAirbnb 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 6y agoHave 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.
- ranci 6y agoThey did need them at one point. And the product was successful enough that nobody in management ever had to get around to cost cutting, in the cases of Netflix, Facebook, etc. But that doesn't mean engineers are doing anything important.
- diab0lic 6y agoI asked a similar question to a sibling comment in this tree but have you considered that there's a lot more than meets the eye at these companies? If the product seems "simple", "done" or "just works" that's a good thing and intentional.
- rurp 6y agoAll of this is valid and I don't really disagree, but would add that a lot of these longer lived companies do seem to spend a lot of resources on projects that are nothing like the items you listed and do seem rather pointless.
- shiv86 6y agoAnother perspective; Shopify adopts React Native: https://engineering.shopify.com/blogs/engineering/react-native-future-mobile-shopify https://engineering.shopify.com/blogs/engineering/react-nati... and https://softwareengineeringdaily.com/2020/04/15/shopify-react-native-with-farhan-thawar/ https://softwareengineeringdaily.com/2020/04/15/shopify-reac...
- lukevp 6y agoI’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 6y agoYour 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.
- siquick 6y agoReact 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.
- cwhiz 6y agoThis was an interesting blog series when they originally wrote it, in 2018.
- nsonha 6y agoI'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
- julius_set 6y agoEvery 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
- enra 6y agoI 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?
- kevsim 6y agoI'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 6y agoIs 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 6y agoThat’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