People always say that they prefer native apps over cross-platform apps and such but the lines are starting to blur quite a lot. Often, when people complain about cross-platform apps and hear their wishes for native apps, what you realise is that they are just talking about bad apps. They often don't complain about apps that are also actually not native, because they don't realise it's not native. "Native app" has almost become synonymous with "good app".

Progressive web apps, are essentially the ability to install a "web app" onto your phone so that it behaves like a "native" app. This means that it has all of the bells and whistles that a native app has such as state storage and push notifications. Several improvements in web development over the last few years have lead to PWAs becoming more and more attractive, such as the JS service worker API and tools like webpack to heavily streamline and optimise the entire setup of a PWA.

The benefits of a PWA over a native app are obvious. Often, modern web apps are built to be "responsive". This means that they display and operate correctly when loaded in a mobile browser. With this comes with some serious advantages over having separate codebases and development teams.

There is an instant feature parity because all of the work is coming from the same codebase, so your customers never complain about the mobile or web app lagging behind on features from your "flagship" app. Users demand high quality mobile apps these days, even for web services that are clearly best experienced on a desktop. Development of a separate native mobile app, coordinating with the backend team for specific API requirements and even hiring specific mobile developers is costly on both a financial and time spent basis. Many companies are simply unable to pull this off and end up with one of the two falling behind which breeds annoyed customers.

Not only that, they are far easier to develop, at least, in terms of the raw numbers. The most popular technologies from the StackOverflow developer survey are literally JS, HTML and CSS. These languages are extremely commonly used in tech courses in colleges around the world, thus there are many people with some proficiency in them. Compared with native app development, web development is just far more common. The lower barrier for entry, as we've seen with technologies like NodeJS will certainly add to the future popularity of the PWA.

PWAs are also far easier to push out updates for. Since they are essentially just websites loading JS/CSS/HTML files, you can just pull down new ones as updates are pushed out. It's far easier to get users onto the latest version when in the worst case scenario, they see a page refresh and in fact you can even do some magic hot swapping, so the app updates when they change views seamlessly in the background. Far easier than convincing a user to download a new 400 MB binary from the App Store, right? We've often complained about the web becoming bloated, but have you noticed the size of mobile apps lately?

It's not all rainbows and sunshine

There are however, some issues with going all in on a PWA for your mobile app solution. PWAs can't do some stuff that native apps can do, yet, such as make use of the secure enclave on iOS or even send push notifications on IOS yet.

There's also an educational problem. Often, part of customer acquisition is finding you on the App Store. If you only have a PWA, then how do you educate the user on how to get your "mobile app"? Do you tell them, go to the web app on Chrome/Safari and it'll ask you if you want to install it as an app and click accept? It's not quite as normal and familiar for users and again, users have that perception that "native" apps are better and associate them with more professional products. Such a setup might result in loss of customer trust in your ability.

With that said, PWAs have improved dramatically in the previous years as APIs, libraries, tools, phones and browsers have been fleshed out to make it easy to work with. To me it's clear that they are inevitably going to become a huge part of the mobile app space over the coming years.