| PWA doesn't compare to React Native or Flutter as PWA is a web application whereas React Native and Flutter are cross-platform native widget approaches. The problem for React Native (and Xamarin) is that the more layers of abstraction you have the more layers that can get out of sync with the native OS. Xamarin and React Native take cross-platform UI definitions and map those onto native UI widgets and it's not unusual to run into problems with the abstraction mapping as expected and debugging is an exercise in frustration. Flutter is different animal in that it's not using native UI widgets but is a complete stack. My imperfect analogy: React Native/Xamarin is like bringing a translator with you to a restaurant to help you order: will probably work but there are edge cases. Flutter is like bringing your own kitchen staff, kitchen equipment, and food... as long as that's not prohibited you'll get exactly what you expected. In theory this works just fine but there's no guarantee that Apple won't protect it's walled garden (eg: keep your people, food, and cooking gear out of our kitchen!) by banning apps that bring their own Skia canvas and "runtime." Even if that doesn't happen there's the issue that you might not have all of widgets you want or need (though as time passes this is less of an issue). With cross-platform solutions you are on your own if things don't work: you cannot contact Apple and get help because the official answer is "Apps for iOS are written in Swift or Objective-C in Xcode." And yes I'm jaded after spending several years doing work with Xamarin and looking at React Native and finally deciding that betting on the web (PWA or Hybrid) is the way to go: HTML5 works the same on all mobile platforms (and in the case of iOS if your needed features aren't available with PWA the code and time need to convert that to a hybrid Ionic app is shockingly minimal). EDIT: Ever since Ionic switched from the legacy Cordova base for hybrid to their Capacitor project it's possible to mix fully platform native UIViews in with your hybrid app with minimal fuss just in case you need a feature set that requires "going straight to the metal" for part of your mobile app. |