DEV Community

Jon Stødle
Jon Stødle

Posted on • Originally published at blog.jonstodle.com on

PWAs are going to eat the (app) world

There's been a lot of talk around Progressive Web Apps (or PWAs) for a time now. Some people are condemning them and don't want to give the browser even more access to data and sensors, while others are heralding the end of the native apps. While these are extremes, I think there are some interesting ramifications that the PWAs are bringing with them.

PWAs are going to be versatile enough and robust enough that they're going to supplant some of the native apps you might have on your phone (or computer) today.

While some apps will no doubt have a benefit by running directly on the metal of your phone or computing device, a lot of apps don't really need all that computing power. These apps can be swapped for PWAs. And with PWAs having the ability to be added to your homescreen or desktop as if it's a regular app, there's going to be no difference for a lot of users.

If you want a good example of a PWA at work, check out mobile.twitter.com.

Users are going to have the benefit of being able to try a PWA before installing it - just navigate to it's location on the web. If they want to install the app, they can add it to their home screen. Another great benefit is that PWAs (and single page applications) are naturally inclined to only download parts of the application at a time - no need for a large initial download before even using the app. When the app is "installed" by adding it to the home screen, the rest of the application can be downloaded in the background.

One can't talk about web development without mentioning Javascript. A lot of native developers are very sceptical to Javascript. While there have been built massive applications with Javascript, there's still a stigma that it's not a good language to build large, heavy apps in.

This is where Web Assembly (or WASM for short) is going to make a difference. WASM let's developers use almost any language and compile it down to WASM. The compiled WASM code will run in the browser with far superior performance to Javascript.

With the ease of install of PWAs and high performance of WASM, I think we're also going to see some Electron apps moving to be PWAs. Some Electron apps genuinely need the higher level of system access Electron (and nodejs) gives them, but some Electron apps are mostly Electron apps because a "native version" of a web app is desired. And apps in this last category are going to make the switch.

I don't think Adam Pedley was far off when he recently said that PWAs are going to make up 70% of apps in the future. I believe it's less work to maintain a PWA across multiple browsers, than it is to maintain a native app across multiple operating systems. And that's going to make a lot of developers jump on-board.

Top comments (6)

Collapse
 
jvanbruegge profile image
Jan van Brügge

I hope this doesnt happen. People selling a website as a mobile app. Dont get me wrong, a PWA is great, but it's simply not an app. Javascript should be used for UI and UI only.

Collapse
 
jonstodle profile image
Jon Stødle

I think we're far past the point where Javascript is only used for UI. With node being used in back-end systems for a lot of apps and Electron apps running with node to interface with the host system and doing heavy work off the UI thread, Javascript is already doing a lot more than just UI.

Hopefully though, PWAs should be able to leverage Web Assembly, making it possible to write apps using other programming languages and with much better performance than what we're seeing with Javascript today.

Collapse
 
jvanbruegge profile image
Jan van Brügge

I know we are past that point, but this is not a good thing. Also, why should the UI have the rest (wasm) as a component and not the other/way round?

Thread Thread
 
jonstodle profile image
Jon Stødle

If I understand you correctly, you're wondering why wasm is controlled by the front-end Javascript (UI).

I'm not an expert in how wasm is implemented, but from what I've seen and read, the flow of control can go both ways: Javascript can make calls to the wasm component and have code executed (and return a result).

But it's also possible for wasm code to manipulate the web page directly. I've seen a demo of (a slimmed down version of) .NET running in a browser, running a complete Todo app, all written in C#. No Javascript needed.

Thread Thread
 
gmartigny profile image
Guillaume Martigny • Edited

@supermanitu , why do you say "this is not a good thing" for JS to be used for more than just UI ?

Javascript is a full fledge programming language as capable as others. Why couldn't it build an app ?

Collapse
 
kr428 profile image
Kristian R.

I'm not yet sure whether I want to see that happen on top of the flaky and partially broken tech pile that JavaScript is in many ways, but: I certainly hope something like PWA sooner or later will remove the need to build specific apps for specific platforms which seems a total anachronism in virtually every way possible (given on the desktop people go just the other way 'round and move everything into the browser). Right now, looking at our own development process, there's way too much time lost or wasted while fiddling with different build and deployment procedures, certain platforms for which apps can only be built and deployed on certain hardware and so forth.

Still I see quite some hurdles for these things, maybe related to our specific use cases. Performance possibly being one of them. Limited amount of local storage for (temporary) offline use cases being another one.