I think PWA and "packaged" versions in app stores are absolutely the right route for a significant majority of apps. Obviously anything "game like", apps that needs extensive native features or is incredibly performance critical would be better as a native app. However so many apps are just a version of the web experience anyway, whether it's a content consumption app, something like an online sore, or a business/enterprise data app.
The old thoughts about the performance of PWAs and apps built with PhoneGap/Cordova are complexity superseded now. The performance of webkit/blink on mobile devices is so impressive a well made app will be indistinguishable from a native mobile app.
If you are looking at packaging a PWA for app stores take a look at PWABuilder (https://www.pwabuilder.com) and Capacitor (https://capacitorjs.com). I particularly like Capacitor as it is so extendable, you can easily have extra functionality using native features for your packaged app. Combine Capacitor with NativeScript (https://capacitor.nativescript.org/introduction.html) and you have one codebase in one language (JS or TypeScript) that covers all your font end, on all platforms, including all native apis.
Packaging a PWA for app stores is also the best way to make them discoverable right now - he majority of users will default to looking there.
On top of that, with WASM you can increasingly use things such as SQLite (https://sql.js.org/) as you local datastore for PWAs and then, with Capacitor, use native SQLite for the packaged version, unifying your entire front end.
The old thoughts about the performance of PWAs and apps built with PhoneGap/Cordova are complexity superseded now. The performance of webkit/blink on mobile devices is so impressive a well made app will be indistinguishable from a native mobile app.
If you are looking at packaging a PWA for app stores take a look at PWABuilder (https://www.pwabuilder.com) and Capacitor (https://capacitorjs.com). I particularly like Capacitor as it is so extendable, you can easily have extra functionality using native features for your packaged app. Combine Capacitor with NativeScript (https://capacitor.nativescript.org/introduction.html) and you have one codebase in one language (JS or TypeScript) that covers all your font end, on all platforms, including all native apis.
Packaging a PWA for app stores is also the best way to make them discoverable right now - he majority of users will default to looking there.
On top of that, with WASM you can increasingly use things such as SQLite (https://sql.js.org/) as you local datastore for PWAs and then, with Capacitor, use native SQLite for the packaged version, unifying your entire front end.