As a fairly green React Native dev, I don't know that I've ever believed React Native to be "write once, ship twice" framework. Mostly due to some of the constraints you outlined. I'm more a believer in the "learn once, write anywhere" approach, where, designed correctly there could be a lot of reusable components and then some specific to each device, but mostly I only have to learn the nuances of the language once.