Nowadays (for almost 20 years actually), Windows supports and encourages programs to deploy their dependencies in their own folder.
It is trivial to do for developers and works perfectly for users.
Some people claim security updates are a problem, but many apps do not deal with untrusted input for starters. For those that do, like browsers, servers or your office suite, you really should be using one that is supported and updated automatically.
It is true that a web app needs a browser. But a native app needs an operating system (OS). Something that I find fascinating though are apps that you can boot into, eg. they do not require an OS. But if you want graphics, mouse support, play sound etc, it becomes quite complicated. Compare that to a web app where you get all that functionality for free, with no libraries needed. And in between we have the shared lib utopia with Debian et.al and dll-hell with Windows. Each stack have their advantages and disadvantages. I however don't see bundle sizes on the web as a huge problem, at least not yet. With service workers you can download the app once, then even use it offline. Everything is just one click away and can be reached via an URL. And if you stick with "vanilla" it can also be fast and lightweight.
The problem is that the solution space grows super exponentially, and if you need to find an exact one, then the number of samples too.