Add to the list Flutter which is not yet production ready as far as I know, but good enough now from what I've heard. Then also, Kotlin is aiming to offer iOS options with Kotlin Native and then Kotlin already supports Android natively.
So depending when you're planning to build it, there are two more options.
I've tried Cordova, Phonegap, Ionic and for simple apps, they work fine, for more complex apps, the user experience is not that great. React-native has horrible documentation last time I checked and native is a can of worms on its own.
Also ask yourself, does it have to be pixel-perfect since this will make your life even harder.
None of them are great, phonegap / cordova / ionic can probably do those things for you, but you'll be limited to what their plugins offer and the experience is often laggy unless you do plenty of work and add some third-party plugins to get around the lag. Native gives you more control, but then your code-base will probably be fragmented into a code-base per platform.