pull down to refresh

Both React Native and Flutter produce native applications:
React Native apps ship with a JS engine that runs the logic, but the widgets are actually native (OS-supplied).
Flutter compiles the Dart code to native ARM binaries directly (via LLVM, skipping Kotlin and Obj-C) and the views are constructed from custom platform-specific components.
And just because Flutter has custom components doesn't mean it's not "native". There are, for example, multiple frameworks for Windows (MFC, WPF, UWP, Qt, Swing, and many more) - they are just different renderers, but only Windows API/MFC/WinForms could be considered "truly native" (as in, OS-supplied). Noone writes apps using that anymore (because DirectX exists) but we call all those .exe's "native" apps anyway.