This is actually a good question (quoted below), and I have a good answer for it.
I was an iOS native dev from 2012-2015 (Obj-C days) and really, really loved it. Xcode was annoying but I could get around that with various tooling (RubyMotion, cocoapods, etc) that made it so I could be in Xcode less. And I shipped native binaries. I had no intention of changing.
But I run a consultancy, and my clients increasingly started asking me for Android versions as well — their users were demanding it. So I started learning Android development in 2014-2015.
The problem was that my team was clearly going to have to go through a transformation:
1. I’d have to double the size of the mobile team
2. Half would be iOS, half Android
3. We were still doing web at the time, so I’d have a whole other separate team doing web
4. The costs would go up tremendously — good for me, but bad for my clients
In 2015 I was also preparing to merge my company with another company to become the new Infinite Red. As we were doing our due diligence, we realized both of our teams were facing this same potential issue. And with the doubled team size, it was now magnified.
Because of this, my cofounder
@twerth started researching alternatives in September 2015. We had heard of React Native but our assumption at the time was that it wasn’t good enough to deliver the level of user experience that we were used to.
But his evaluation when he came back was “This is actually quite good.” (Remember, early days for RN! But he saw where it was going.)
The primary reason it made sense was from a business standpoint. We could use the same team for all three platforms and share code, devs, training, tooling, and more. We could ship apps for about 60% of the cost (half the time with iOS plus a bit to tweak for Android). This is by far the biggest reason.
But the second reason was technical. React Native is native, and the JS layer is just orchestrating UIViews and Android native views via React’s brilliant “UI as a function of state” paradigm. That meant views take up the same amount of memory as native (because they literally are native) and feel and look native to the user.
With that decision made, we converted two native projects that were just kicking off to React Native and have been focused on that from then on.
Now, what about personally? Truth be told, I still like iOS native dev the best. Swift is cool, and the SwiftUI declarative UI system (stolen shamelessly from React) is a good improvement over previous interface builder and xibs and programmatically / imperatively built UIs. If I was an individual dev, I’d probably lean that direction.
But I’m not, and there’s almost no business case for doing native mobile dev these days when React Native exists. It’s plenty good enough in most ways and even superior in a few ways — the third party ecosystem is vast, libraries like Reanimated and Vision Camera have no equal in native land, etc.
That’s why I use React Native. It is a native app in the end, just running Hermes with some bytecode to orchestrate the native UI. And I still enjoy it 8 years later!