When writing an app, which should run on many different platforms, mobile included, I try to fit it into a WebApp first. I can simply add a manifest file to the app, so it can have an icon on the user's home screen, which opens a separate browser in fullscreen (looks just like a native app). A browser gives me access to most-needed APIs, so I can do most things easily.
Only if I encounter a feature which is not useable from a browser, I try to rethink my strategy, usually setting up a hybrid app, which displays the WebApp, but also makes the needed API available. The browser version is missing that feature, then, however can still reuse most of the code and most of the time is 90% operable (maybe a bit more inconvenient to use, depending on the app).
I only go for native apps if a core-feature does not work in a browser (for example if you need file-access) or if the app needs a lot of performance, which is not available in the browser (for example 3D or maths, though those two use-cases are already being remedied by WebGL and WASM).
Imho, native apps are slowly dying out. We have so much technology (WebApp Manifest, Service Workers, WASM, WebUSB, WebRTC, MediaDevices, etc.), which allows for WebApps to work, to be stored and to be used just like a native app, with the power to run WebApps performant enough in most situations, that it just does not make a lot of sense to port an app to different platforms, when you can have them all platform independently with a unified code-base as a WebApp.