>Why? firstly HTML/JS is a very slow presentation layer compared to native, which means less battery. You still can't multithread, so any heavy lifting is serverside, which means latency in anything other then decent bandwidth areas (so no travelling for you....)
This was the case a decade ago, but not anymore.
I have been writing medium complex web apps using Angular/React, Web-workers and RxJS which runs on mobile (Android 4.4+ and iOS 9+) from last 4 years with no extra battery draining side effects and native (like) look and feel. You just need to choose write framework and responsive design UI guidelines. Today most frameworks provides it out of the box. JS, DOM and CSS engines in mainstream browsers are getting more and more performant.
Moore's law is getting us out of a hole. The processing power, and performance per watt on mobile has increase exponentially. Those people who who are stuck on three year contracts feel the pain of this idea. Yes, JS engines are getting faster, but they are being asked to do more and more stuff.
React native is a marvel of engineering, where the bridge intercepts UI calls and diverts them to native. But thats not a webapp, that re-invented version of QT, Wx, tk or whatever java uses.
My point is this: a native app on a underclocked pi zero, can animate UI items at 60FPS. Via a browser, no where near. HTML is many things, but efficient is not one of them. HTML/CSS/JS is a marvel of engineering to get it anwhere near as fast as it is, but its comes from a very slow base.
Performance is a detail which is often lost from the mobile/web discussion. Yes there are many reasons for good web-apps to exist, and they can often deliver a very good experience on modern hardware. But conceptually, the idea that all software should run on top of a compatibility layer, with many restrictions and performance considerations compared to running directly on the OS is a strange one.
It’s an ecological concern as well: how many gigawatts of electricity a day is spent fetching react.js?
> It’s an ecological concern as well: how many gigawatts of electricity a day is spent fetching react.js?
I've been asking questions like this for years now, mostly as rhetorical devices, but I swear one day I'll try to get data and compose a chart of "how much your bloated product is contributing to climate change".
I have to think that bitcoin etc are far worse offenders.
And it seems that server usage consumes around 1% of the USA energy budget. Heating, industry and transportation are most of that list. Not sure apps are going to show up.
Yeah, ceilings should be easy to establish. The max possible cost of bloat on mobile is (number of mobile users * average phone battery) / average charges per day. The max possible waste on backend will be roughly constrained by the energy use of data centres, and that value is available.
I don't expect the answer to come out very high, relative to other things. But it would be good to see an absolute value, if only to drive home the point that everything your software externalizes to your users has costs multiplied by the number of those users.
How much electricity is used to power casual games on mobile phones? People should stop playing games, they are contributing to climate change.
How much electricity is spent by developers using Electron based apps like VS Code and Slack and npm packages during their work hours? We should all develop in terminals, with no GUIs and no GPU usage. Only in non-bloated languages like C and ASM. Anything else is crime against the climate.
All sites should also be text only (like the motherfucking website), no images, especially hero ones.
I think nobody reasonable would argue that you should stop all use of energy, period. The question always is, what does the energy use buy you? Does it buy you food? Safety? Entertainment? Or is it just pure waste created by a combination of greed, laziness and bad engineering?
This was the case a decade ago, but not anymore. I have been writing medium complex web apps using Angular/React, Web-workers and RxJS which runs on mobile (Android 4.4+ and iOS 9+) from last 4 years with no extra battery draining side effects and native (like) look and feel. You just need to choose write framework and responsive design UI guidelines. Today most frameworks provides it out of the box. JS, DOM and CSS engines in mainstream browsers are getting more and more performant.