The abstraction issue you're talking about doesn't exist. You can always drop down to custom native components for anything you need to do. That's one of the best parts.
I spent 5 months rewriting my game Falcross from Obj-C to React Native, and it functions exactly the same (even better in some places because of RN's wonderful Animated API). Try the game and tell me if you "feel the JS": https://www.falcross.com/
As a solo developer, RN allows me to share 95% of code between platforms and still customize that ever so important 5% with native modules. And I'm iterating 2-3x faster than I was with Obj-C.