Totally agreed. As a freelance, it's really scary to invest time into a full stack of technologies. I should start a discipline to pick tools and not look back before n years went by. Maybe n = 2 or 3 ? (right now, I'm Objective-C - not even Swift - for native iOS, Ember for client, Rails for API/back-office and Heroku for deployment)
React native was not mature enough the last time I had to solve this problem. After writing and maintaining native clients in both Android and iOS for years, I decided to try something different. SPA app + Cordova + writing custom, native plugins for performance has worked out pretty well. Some things in the UI are not as fast as I would like, but develop/test/release cycle is so much faster (web, ios, android released nearly at the same time). It does help that I can write native Android or native iOS (obj-c/swift) to handle the plugins where needed. Cordova can also be a bit of a mess to deal with sometimes, but it is improving.
I also gave up on frameworks like Cordova because (1) who knows if they'll still be maintained in a couple of years, (2) how reactive/efficient can they be to offer access to new features from the native iOS and SDK apps. I feel like pretty much anything Cordova is really good at, you can do it with a webapp.
I still have a love/hate relationship with Ember (and other JS frameworks). They are simultaneously very powerful and quite restrictive. My most recent example: there's still no common and fast&easy way to integrate Google Analytics in a project. It takes some (reasonable) effort, like 1 hour for research and implementation, when it takes 10 minutes on good old server generated HTML/JS.
I sort of gave up on Android development by now.
My mindset is iOS first if I need an app. And then consider a good webapp (with Ember then) if I want to extend to all smartphone users. If I needed a native Android development, I would try to find a partner able to code it, I wouldn't do it myself.