Native, quite reasonably, means the application is compiled to the CPU's native machine code. Take as an example the distinction between Java and native apps on Android.
What is a VM but an intermediate portability layer? That's what VMs are made for, to be able to run the same VM code on different machines or different OSs without having to recompile. You don't use the OS's APIs directly from Java or NET, that's the whole point of the exercise. And if you find a way to do it anyway, you have defeated the purpose of the VM and could as well have compiled to native code.
JVM is a virtual machine with its own instruction set. Java code is compiled to this instruction set and not the actual's CPUs instruction set, hence not native.
No one is asking for hand crafting, we are merely arguing that the absence of runtime environment which abstracts away from CPU's native instruction set.
Hence I mentioned C, C++, Rust. Even GO and Haskell qualify as they are compiled to native instruction set of the CPU on which they run.
There are probably a few reasons it might seem like web apps are faster. A few that come to mind are perceived performance https://developer.mozilla.org/en-US/docs/Learn/Performance/P... and optimization/offloading work to servers (caching, server-side rendering, APIs etc.).
I don't think it's possible. Native cuts closer to the hardware and web browsers are built on so much stuff.
I have noticed that mobile apps are replicating things like SPA for absolutely no reason, which actually lowers responsiveness. So it might be that. Perhaps there's a shift to writing code faster over performance.
True native is apps written in C/C++ or Rust that are compiled to run without a virtual machine. I haven't seen any webapps faster than native apps.