I don’t really know what makes an app “native.” React Native apps are considered “native” because they are using the native UI toolkit. (C++) Qt apps are native because they are “native code,” and compile down to machine code with native binaries for their platform.
Web is distinctly not native because it’s a different runtime abstracted from the underlying OS. Electron introduces wrinkles in the distinction since they put the abstraction layers into the application package. React Native does that and then also introduces the idea of “native” meaning native widgets.
But what is the native UI toolkit? Win32 has a controls system, but even many Microsoft apps built into the OS don’t use it… so if your app does the same thing the built-in OS does, and uses say, WinUI or what have you, it’s hard to argue it’s “non-native.” Likewise for Linux. There’s no actually standard UI toolkit in any given Linux desktop setup.
MacOS and iOS largely stand alone as the platform where the “native UI” distinction stands strong, but I do think Flutter challenges it a bit on iOS, if at a high cost.
This all to say, I think the word “native” is surprisingly unclear.