What is a progressive web app?
Native, hybrid and now the progressive web app – with so much confusion over app development platforms these days, our Chief Technical Officer Adam Fleming continues his “What is…” series with a look into this recent buzz-term in mobile development.
A Progressive Web App (PWA) is another great example of tech being re-born.
Whilst there’s a lot of noise around PWAs right now, it’s interesting to know that PWAs ‘originated’ back in 2007 with the advent of the first iPhone.
As Apple didn’t release a native SDK initially, the only option for developers at that time was to develop web-apps which could then be saved to the home-screen – appearing to be native applications.
Once the native SDK was released and the App Store landed, pretty much all development shifted over and web-apps – at least on iOS – pretty much died a death. Wind the clock forward and the progressive web app is becoming a viable alternative for certain kinds of app development.
Before getting into the nuts and bolts of what a PWA actually is, it’s worth spending a little time talking about the motivation behind them.
PWAs are emerging in response to a couple of friction points in the app development world.
App development is hard, app developers are expensive
Developing mobile applications using the native platform directly will always give scope for the best possible experience – but, it’s a specialised and often expensive process.
Unless you have an in-house development team with the relevant skills, you’ll either need to build one, or engage with a third party. This is often a pain-point, especially for organisations with existing web or server development teams.
Whilst the advent of cross-platform technologies such as Xamarin and ReactNative goes some way towards allowing non-mobile development teams to work with mobile, they have their own learning curves.
It’s also something of a misnomer to view cross-platform technologies as an alternative to native development – often, native developers will still be needed at some stage, to create and support those areas of a project which require access to native platform elements.
So, without going into too much depth at this point, a progressive web app is a kind of specialised website that can be developed by web-developers.
Whilst there are different APIs for different platforms, development of PWAs can take place in a single paradigm. Whilst it’s not as simple as making a mobile-optimised website, it’s a logical extension which doesn’t require a wholesale re-think, or the development of a completely new skill-set.
The App Store as gatekeeper
For native applications (and cross-platform apps which package to native formats) the primary – and possibly only – way to get installed on user handsets is through app stores.
While app stores serve to give a consistent experience for users – installing your app is the same as installing anyone else’s – it puts your app on the virtual shelf next to all its competitors.
Marketing and promotion that’s executed perfectly will bring customers flocking to your website where your products and services are showcase however you like. But, when it comes to installing your app, users must go to a generic app store where your app is presented the same as every other – possibly even with links to your competitors right there on the same screen.
Assuming your customer goes through to install your app, there’s still a whole additional sequence of actions – logging into their app store, setting up payments and finally downloading the app.
Every “next step” in the process is a barrier to download, providing more chances for users to give up. But worse still is the fact that the app store is the gatekeeper. They’re the one dealing with those interactions.
It’s a process you can do nothing about, and you have very limited visibility of just how many users are dropping off, and at which stages.
Here’s the benefit to PWAs: you host the app on your servers and you can control the installation flow to a certain degree – for example, you can define the installation banner that appears when the user lands, but you cannot control the ‘Add to Home Screen’ native dialog.
What is a progressive web app?
A PWA is a new(ish) type of website – one that’s been developed to make use of a number of APIs and capabilities which are provided by mobile platforms. They allow that website to do a number of things that would otherwise require the development of an app.
The key benefits of a PWA are:
- It’s downloadable and lives on the home screen just like any other app, and it doesn’t require the user to go to a website in the browser.
- It works offline, so it will open and show something sensible regardless of connection availability or speed
- It’s responsive, adapting to screen size and configuration, just like a normal app
- It has a native look and feel during operation
But there’s a catch… or two
As you’d expect though, the picture isn’t all rosy.
Before you jump on the PWA band-wagon, there are several issues with PWAs, and they broadly fall into two categories…
- There’s no app store. Love or hate app stores, the user trusts them – they’re a consistent and familiar mechanism for downloading apps. A progressive web app works outside of this framework, and the process of installing one – at least at time of writing this – is not obvious. To make PWAs work, you’ll need to educate your users on the process they must go through in order to get the app onto their device – whilst it’s simple when you know how, it’s an experience that will differ considerably depending on whether the user is on an Android or iOS device. For example, Google invest a huge amount of support into PWAs (see here) to ensure that the installation process is as slick as possible for users – it’s often just a couple of taps. For Apple however, the support for PWAs is a little more limited and is restricted to Safari.
- A PWA is not an app. A PWA runs within the context of a web-browser, usually Safari or Chrome, which means that from a system perspective, it’s not an app. It doesn’t directly access system resources or manage them, and at a high level, this has a couple of major implications. Firstly, it’s not really possible to run in the background, so developing features like music-players isn’t possible. Secondly, access to a lot of the native services on the platform – things like payments, access to hardware, Bluetooth etc – is very limited. There’s also a fair amount of variation between what you can do within a PWA on Android vs iOS. For example, on Android, a PWA can make use of notifications and background sync – something not possible on iOS. with Android being the more capable platform from a PWA perspective.
So, when should you consider a progressive web app?
Well, the answer to this question depends on:
- what you want your app to do
- who your target audience is
- what your budget is
If you want your users to be able to view content offline with little integration into the native experience, then a PWA may be perfectly adequate. If, however, you want an immersive experience that utilises the native capabilities of the device, then a PWA is probably isn’t the right direction.
Given the differences in experience between iOS and Android, you should also consider your target audience. If you’re already building or already have a single page application (website), it can be a very simple process to turn this into a fully fledged PWA, and this may allow you to give your Android users an ‘app’ at a much lower cost.
If you’re primarily targeting iOS users though, a PWA is probably not the best choice.