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.
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.