You are comparing web view apps to web view apps. “React Native” has muddied the waters here with intentional misuse of terminology. With React Native you still write a web view app - it just ahead of time compiles to run without the browser view on device. But it doesn’t use any native UI components, which is what “native app” used to mean.
I may have read your comment backwards but it seems rather wrong: react native DOES use native UI components, thats why it has “native” in its name. It’s also not compiled ahead of time per se, you still execute JS in the app (not in webview, yes) , but its mapped to native components
Thank you, it appears I was misinformed and/or conflating my knowledge of how flutter works. Mae culpa.
It does seem that many RN apps do React (not native) components when they need to do something custom, which may explain my sub-par, non-native experience with the RN apps I have used.
Even something “custom” is still a native component. The JSX you write eventually creates native views. Whether or not those views and components match the style and behavior of stock iOS or Android is a different story, and whether or not there are performance bottlenecks due to React Native’s bridge (now in theory no longer an issue because of a big architecture rewrite called Fabric) is another.