< Back
calendar

Mar 10, 2020

Progressive Web Apps Will Replace Your Native App

There’s no way back, but we’re not there yet.

Header for posting Progressive Web Apps Will Replace Your Native App
Photo by William Iven on Unsplash

When Steve Jobs introduced the very first iPhone in 2007, he spoke of how developers would be able to create amazing apps for the iPhone, using only web technologies. There was no App Store yet at that time and no notion of native apps.

What Jobs envisioned is the concept we now know as Progressive Web Apps, basically websites that have an app-like behavior and are able to work offline.

Unfortunately that idea never took off and a couple of months later the App Store was launched. Developers now had to use a native SDK to build an app for the iPhone.

Fast-forward to 2020 and Jobs’ original vision is finally becoming reality.

The state of native apps

Jobs’ intention to have developers build apps for the iPhone using only web technologies was called his biggest blunder by Forbes in 2014 since the App Store has been a smashing success ever since it was launched.

It’s hard to overstate this fact since there are now millions of apps in Apple’s App Store and Google’s Play Store and mobile users now spend 80% of their time using mobile apps.

Great! So mobile apps are popular, right?

Well, the problem with this number is that these app users spend 77% of their time on only 3 apps and even 96% of that time on their 10 favorite apps. This means that it’s extremely difficult to get users to even use your app. And it doesn’t end there.

Before users can use your app you need to get them to download it first. So you will need them to:

In each of these steps you can lose 20% of your potential users.

So this is basically what your app is up against: millions of other apps in the same store, a cumbersome installation process and users who spent virtually all of their time on just ten apps.

On top of that, building a native app is expensive. Unless you build a hybrid app you will need to build two versions of the same app: one for iOS and one for Android. Considering that most apps lose 77% of their users within 3 days, you might want to think twice about even building one.

Of course the most popular apps do much better, but even the top 100 apps lose almost half of their users in the first 3 days after installation.

Which begs the question…

How valuable is your app anyway?

When I visit the LinkedIn website on my phone there’s always a banner that asks me if I want to install their mobile app. Same goes for Medium and a lot of other websites. Usually there’s no option to dismiss it once and not be bothered again. It’s always there and it’s annoying.

See, for me there is no value in downloading a mobile app when the experience of the mobile website is good enough and the app doesn’t add anything to that.

It makes you wonder why certain websites even have an app. It seems to me they have an app just because everyone else has an app as well. But they’re not sure what to do with it, so the app gives you virtually the same experience as the mobile website.

When potential users don’t see any value in your app you’ll have a hard time convincing them to even download it.

Here’s a radical idea:

Why not just optimise the mobile experience of your website?

An increasing number of your users are on mobile devices and an increasing number of these users are on mobile devices only. So you need to make sure that your website provides a good user experience on mobile.

What if you could even turn that mobile experience into an app-like experience?

Well now you can.

Steve Jobs was ahead of his time

Jobs didn’t coin the term “Progressive Web Apps” but the concept he described back in 2007 was exactly that: apps built with only web technologies, delivered through the web. And this is now something that you can start doing today.

Any website can be a Progressive Web App

A Progressive Web App (PWA) is just a website with some extra features. Adding these features will turn your website into a PWA so this means that basically any website can be a PWA.

There are actually only two features you will need to add: a service worker and a manifest.json file.

A service worker is just a JavaScript file that enables your website to work offline. It acts as a proxy server between your browser and the network and can intercept network requests and serve custom responses.

This means that whenever you’re offline you can still send a request to your website and it can serve a cached response for example. You could have an app that edits a document on a remote server. When offline, it can save the requests to edit the document locally and send them to the server later when the app is back online.

This way, you can make your website provide an app-like user experience without having to build a full-fledged native app.

The manifest.json file lists the icons your app uses, its start URL and screen orientation among other things.

Technically speaking, serving your site over HTTPS and having a service worker and manifest.json file is all you need to turn your website into a PWA.

For a more in-depth introduction to PWAs, see this talk I did for Dutch Developers & Designers:

Now, PWAs are not necessarily intended to replace native apps, but I still think that eventually they will, and here’s why.

There’s no way back

The benefits of PWAs are just too great compared to native apps. When you have a website that’s optimised for mobile, you can easily turn it into an app. This means you don’t need to build separate apps for iOS and Android anymore.

Since your app is technically just a website, people can simply find it through Google. If you want someone to install it, just give them the URL, no more need to go through the app store submission process.

Your users won’t need to install tens of megabytes of code anymore to use your app. Your PWA is built with just HTML, CSS and JavaScript and can therefore be lightweight and fast.

This also means that you no longer need to get your users to install updates. When there’s a new version of your app, you just deploy it to your webserver and the next time users visit, they will automatically get the new version.

But we’re not there yet

PWAs can do most things native apps can and many native apps could easily be replaced by a PWA. But ironically iOS, the platform of the company whose co-founder first presented the idea of a PWA, is lacking behind.

Android has significantly better support for PWAs and is developing rapidly, while support on iOS is limited and inconsistent.

But even iOS has made significant improvements recently and continues to improve, even though Apple chooses to be silent about it.

Meanwhile, we’ll have to deal with these limitations which are not insurmountable.

In particular, Maximiliano Firtman is a developer and author who spends a lot of time testing PWAs on various platforms and finding new features and bugs.

The state of PWA today

So what exactly can a PWA do today? How does it function on different platforms?

I created a PWA that showcases what is possible right now with PWAs, called What PWA Can Do Today.

It’s inspired by What Web Can Do Today and showcases features that you can use with a PWA.

You can install it on your mobile phone, tablet or desktop, play with it and experience yourself what is possible. I created a repo on Github to collect bugs and will continue to develop it further.


Join Modern Web Weekly, my weekly update on the modern web platform, web components, and Progressive Web Apps delivered straight to your inbox.