8 ms·
This 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
by enra 4y ago
This 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 :)
- dimmke 4y agoYeah they think they know React Native until they have to debug something that is outside the happy path that is provided to them. These people probably have never worked on a production RN app or done upgrades and maintenance for one.
- dimmke 4y agoI want to clarify since this is getting upvoted, I still think RN is a better option than maintaining two separate apps in the vast majority of cases. It just suffers because everybody "knows React" so how hard could it really be and people get hired into roles working on RN with very little understanding of how it's different from a web based React project.
- metadat 4y agoThe promise of achievable unification with high-quality polished UX ends up being empty. React is complex.
- programmarchy 4y agoI wouldn’t call Swift (or Kotlin) antiquated. I’m sure it’s easier to hire JavaScript developers to hack on React Native because the talent pool is larger, but I’d wager your app quality will suffer. Depending on the app, sometimes a first class user experience just isn’t a high priority, in which case native-focused developers aren’t going to be attracted to working on it.
- dimmke 4y ago>I’d wager your app quality will suffer. I really dislike this argument, and it comes up every time React Native is discussed. I think it's a holdover from Ionic style mobile applications that simply emulated native UI in a webview. It was awful - especially when the native UI changed and the Ionic apps didn't. It's likely you use RN apps every day and don't even notice because they're indistinguishable from native apps. React Native is designed to compile down to native code and it uses native UI frameworks. The documentation on how it does this is very thorough. The problem is not React Native in my opinion. It's the native UI frameworks for iOS and Android. These frameworks have a lot of issues and taming them often requires developers with a lot of time and experience in that specific domain. Which is stupid and wasteful. Here's a story from yesterday of how Apple's SwiftUI (their much vaunted successor to UIKit, a very flawed framework itself) is struggling to construct basic settings views in the new version of MacOS: https://daringfireball.net/linked/2022/08/15/ventura-system-settings-tonsky https://daringfireball.net/linked/2022/08/15/ventura-system-... Not to mention the criticism of Swift as a language and how it has evolved, including the original creator leaving. And how complicated doing a fucking substring is: https://stackoverflow.com/questions/39677330/how-does-string-substring-work-in-swift https://stackoverflow.com/questions/39677330/how-does-string... In my opinion, Flexbox is a perfect way of laying out elements on a 2D screen. It's way less confusing than the complex constraints system that UIKit used. React Native's implementation of it works well. Kotlin and Swift as DSLs do not need to exist. They are solutions in search of a problem. Designed by big tech to moat their platforms. Unless you're building an app that has a very non standard UI or a game, it doesn't make sense not to use React Native in my opinion.
- tmpz22 4y ago> Timelines were often tight I wonder if those tight timelines seem justified in retrospect. The stress. Missed social events.
- weq 4y agoThis is what u get for jumping on a bandwagon, instead I got my company to invest in a Software companies tech. The same Xamarin app i built in 2014, still runs, on .net7. MS nailed crossplatform in a way that an ad company is never going to invest in. They needed to nail cross-platform to keep themselves as a company relevant; they lost the platform war, then redefined it. Just launched more apps on the platform this year, love it to death. SAme skills i learnt in silverlight, still relevant 10yrs later. Share 90% of code across every platform; and that 10% is built on native wrapped libraries which are generated off every release. MS has the infrastructure and investment like no ad or book store would ever.
- brianwawok 4y agoRight. They also extend, embrace, extinguish. They also make very clunky tools for people that like to click to code.
- Mertax 4y agoXamarin/MAUI doesn’t get the buzz/love from HN audience that React Native and Flutter get. I think there is a lot of historical bias here. My company has found success with the dotnet stack. We are able to keep a small team of 5 developers that maintain 3 mobile apps (Xamarin), 2 desktop apps (WPF transitioning MAUI), and 1 web app (Blazor) all sharing about 50-80% of the code base. These are apps that bring our company about $7+mil in annual revenue if you include the associated hardware which dotnet/C# is well suited to interact “natively” with.
- programmarchy 4y agoYou’re on to something. I did a stint at a .NET shop and C# is still my favorite language. Dabbled with a Xamarin project a few years ago, and although it seemed like it would be fragile, it actually “just worked”.
- hamstergene 4y agoI have never seen cross-platform UI that would work and/or look close enough to native. It has always been classic "choose any two": cross-platform, UI, great. There were many people who claimed they have achieved all three, but at the close examination all of them, 100% without exception, were missing many little things like standard shortcuts, respecting color preference in user settings, or just couldn't see the difference between 11pt and 13pt fonts while looking directly at them. 10 years ago I worked on rewriting Qt interface of a desktop app back to native for a similar reason, and now I am reading all the same story except it's about React Native in mobile apps.
- retor 4y ago> I have never seen cross-platform UI that would work and/or look close enough to native. But wouldn't knowing that require that you investigated the tech choices of all the apps you are using? If not, there's a slight fallacy in that you only _know_ that the app is cross platform when you can see that it is. So then obviously all the apps you know is cross platform will look out of place, because that's how you know they are cross platform. Not sure I'm making the argument very well. For instance, I'm don't think that the Discord app for iOS and Android looks out of place [0]. > Switching to React Native for the Android app means an experience that is ever-improving at a more rapid pace across every platform Discord is available on, while still retaining Android and iOS specific patterns in the UI. [0]: https://discord.com/blog/android-react-native-framework-update https://discord.com/blog/android-react-native-framework-upda...
- FlyingSnake 4y agoThe discord user complaints rose exponentially after the switch to RN, and almost all users felt a perceivable difference in the quality of the new apps.
- retor 4y agoHehe, I guess I was too late to party to experience the good ol' days. It has a good rating in app store today. Better than Slack, even. And although there are probably many reasons for that, atleast RN hasn't killed the ratings.
- ec109685 4y agoOne more thing covered in AirBnB’s blog posts is that they did eventually create a framework to make it easy to launch new experiences across platforms (versus the old way of needing to coordinate across 4). They just built it themselves and customized it to their needs versus using RN.