I think React Native is fantastic for getting out basic applications that may need camera, map, browser, and storage, etc capabilities. However, once you need more intricate functionality, I think it's best to write modules in Swift/(Kotlin/Java) and have your React Native UI communicate with your modules via the bridge.
I think React Native solves an organizational bandwidth issue. Building true native applications per platform will always outshine any results you get from React Native, both in performance and capability. However, if you have just a few developers, I think React Native is a practicable compromise.
Companies like Airbnb have the engineering bandwidth to develop bespoke platform specific applications, it's up to you and/or the company you work for to know what compromises can be made.
> I think React Native is fantastic for getting out basic applications that may need camera, map, browser, and storage, etc capabilities
The thing is, though, browser-based APIs let you do all of that now, in a way that is usually a lot simpler to access. In these cases it's often a lot easier to just build a Progressive Web App for Android (Google let's you put PWAs directly in the Play Store), and wrap that with a thin native wrapper for iOS.
One of the big "aha" moments I had was a couple years ago when I was trying out Stripe's Identity product, which lets you take a selfie and a picture of your ID for identity verification purposes. It's pretty amazing how Stripe was able to do the full image analysis (i.e. edge detection when you take a picture of your ID) solely with browser APIs.
With the big exception of games, there are a vanishingly small number of apps that really require native functionality these days, given what you can do in the browser.
It doesn’t really matter what can be done natively versus in a browser. For many folks, apps are the internet. This take is very developer-centric but it doesn’t account for the real world. Many people prefer using apps, especially middle-age to older demographics. That’s what our analytics say at least.
It's a shame a duopoly controls one of the most important functions of modern society. Controls it, taxes it, prevents you from having a direct relationship with your customers ...
Agree 100%, which is why I wrote "In these cases it's often a lot easier to just build a Progressive Web App for Android (Google let's you put PWAs directly in the Play Store), and wrap that with a thin native wrapper for iOS."
In other words, these browser-tech-based apps show up in the app stores like any other app.
The experience of said apps just doesn’t hold a candle to RN or native apps. People can tell the difference, for all but your sort of back office type apps you’ll want native views.
Completely disagree. For one, there are tons of native apps that are essentially of these "back office-type" styles. Think banking apps, most airline and hotel membership apps, real estate apps, etc. It's not hard (or I guess not harder than native) to make these apps look great using web technologies.
If you really do need the "slickness" of native apps, I wholeheartedly agree, go native, and use the native frameworks to do so.
The reason I don't like React Native much is that it occupies a "weird middle ground" - if you need the benefits of native, it's usually easier with less headaches to just go native (and big companies have announced ditching React Native due to this reason), but if you want to go cross-platform, there are other technologies that work better IMO.
Sounds like you sort of agree, given you agree with my back office caveat. Sure it's some percent, maybe even a third of apps that could get by with that, but it's far from the majority.
I can point to a ton of RN apps that have incredible UX and surprisingly nice animations/interactivity, with what I'd argue is much easier to work with codebases. Maybe I'm biased, but the Uniswap app is really nicely done with all sorts of native views. They shipped the Android version of their app in just a few months, sharing 95% of the code with iOS.
Maybe it's a cultural thing the in parts of the world where iPhones are common?
I Androidland I mostly see websites pushing user to use apps, and users not using the apps because they're functionally identical to the website except they ceaselessly spam you with irrelevant notifications. Like the google app store feels cheap like a bargain bin, I don't think anyone expects to find anything serious in there.
My perspective, from watching local (German) politics, is that business owners and the heads of government offices are who demand apps. They appear to think that to be hip and up-to-date, you need to have an app. (Possibly because that gives them an avenue to later spam people with notifications, though I would be surprised if they think that far.)
"and wrap that with a thin native wrapper for iOS", how does that work? I hope iOS browser and apple apps store can support PWA but that's unlikely, if a think-native-wrapper can get browser-api working for iOS that will be wonderful.
I’ll add I’ve worked on large scale RN apps used by millions per month. And the performance is awful. In fact I don’t think it would be possibly to make an advanced price chart like Tradingview for example, which runs perfectly well on a mobile.
> One of the big "aha" moments I had was a couple years ago when I was trying out Stripe's Identity product, which lets you take a selfie and a picture of your ID for identity verification purposes. It's pretty amazing how Stripe was able to do the full image analysis (i.e. edge detection when you take a picture of your ID) solely with browser APIs.
Do you have any details on that Stripe app? I've found the browser camera handling lacking on mobile if you want to overlay it with a "position the subject here" rectangle, or display instructions alongside, or detect QR codes as well as other subjects. I'd like this to be an out-of-date view. I've been considering React Native for the next version, using https://github.com/mrousavy/react-native-vision-camera as it seems much more feature complete.
I don’t think this is so true anymore now that you have such huge investment by the likes of Shopify, with many slick libraries, or for example Reanimated which makes very bespoke and interactive animations performant. Add something like my library which uses an optimizing compiler to make things much faster on native/web when sharing code and I think you can make just about any experience you want. People like Catalin Miron do tweets replicating native UX quite successfully across many examples.
You will still have to invest a lot to make a truly drop dead experience, but you have to do that anyway even in SwiftUI, which I found to be not so easy to just snap your fingers and have nice UX. There are many performance pitfalls there, and having to write your app 2-3 times means you have a lot less to invest into it.
> I think it's best to write modules in Swift/(Kotlin/Java) and have your React Native UI communicate with your modules via the bridge.
Wouldn't it be simpler to just write everything in Flutter?
The react + base swift modules looks like a maintainability nightmare, and especially consultants would never touch if the employee who wrote it ever left the company.
It’s difficult to pick flutter because Google has 0 goodwill left.
Even if flutter is good (and I don’t believe it’s all that great), you’re still taking a massive gamble adopting it, and that’s a huge leap that a significant portion of developers are not going to take.
Googles reputation for randomly ending the life of stuff makes flutter an impossible choice.
Isn't React Native a framework that generates GUIs using native frameworks by transpiling whatever React code you have down to the native frameworks you're targeting?
I get the point of reusing front-end expertise to develop other frontend code like desktop and mobile applications, but I struggle to understand the selling point of React Native. If I recall correctly React Native started as a personal project, and that's perfectly fine, but I don't understand who in their right mind would base their product on a convoluted and heterogeneous Jenga stack of technologies when all they need to do is just use the native frameworks.
I think React Native solves an organizational bandwidth issue. Building true native applications per platform will always outshine any results you get from React Native, both in performance and capability. However, if you have just a few developers, I think React Native is a practicable compromise.
Companies like Airbnb have the engineering bandwidth to develop bespoke platform specific applications, it's up to you and/or the company you work for to know what compromises can be made.