Why native applications are better than webapps

Lately I read a post at mastodon, where guy told, that his life is in browser: he manages project there, does code review, read articles and news, even writes code in browser-like environment. It's kinda great, because there can be developed greater products cross-platform out of box, fast and beautiful. And people spend less time adopting one single piece of software for specific platform.

I totally like it.

Yet still prefering desktop applications. And the reason is very simple: it is better. Really native (I mean really native apps, like built using native tools) applications can work faster, use resources more effective and do more things thanks to deeper integration with environment it's running on.

“Duh, JavaScript is really fast nowadays”, you can say. And it's truth. Yet, it is a wrapper over wrapper. It's dynamic nature makes bad joke of it, killing it's performance in bad hands. I've written some heavy things computations in JS which were running slower than in Python. And, moreover, usage of ES2018+ features make it run even more slow... And the memory – the simplest application written using Electron uses at least 30-40MB of ram. While simple native app can use about 1-2MB depending on which technology you use.

About beauty of whole system. It is easier to make beautiful web application using web technologies. But, mostly it doesn't fit the system's style at all. Same issue with Qt+QML applications. It just look like something taken from out of ecosystem and make all the things look strange. Also, web technologies have huge issues with building layout (yeah, I know about flexbox and grids, but they are pretty new here): they are sometimes ineffective and not so responsive as people do it with hacks. Qt QML has much better one, yet it has some issues, but it's not about them.

Integration of system does not end on beauty. It's also effective resource management, minimizing actions without purpose. For instance, I used to make awesome pkill -INT slack to increase battery lifetime about 2x while it is not active. Just because it keeps comsuming CPU just while it is open. I would kill it if startup time was not so awfully slow. Then comes configuration handling, database storage and more. It also can be reusage of libraries people have already installed inside the system, which will make application smaller, faster and do more.

Yet, web technologies allowed to make a lot of things, inavailable before. Web became and operating system, shared to any platform and user. A computer without browser literally becomes 10x less useful than without it. It's like Java's manthra “Write once, run everywhere”, but for real, with more beauty, less pain and easier. Way easier.

But when it comes to advanced usage, native apps should be preferred to web ones, because it will allow you to consume your computing power and resources more effectively. Just try and you will see, how huge amount of computer resources can be saved just for running a native version of application instead of web one.