By now, you’ve probably heard that Progressive Web Apps are the future of all mankind. They’ll bring world peace, end hunger, save the rainbows and unicorns, bring balance to the force, and a whole lot more. In the process, they might even push the mobile web forward, bring parity to web and native apps, and help mobile developers reach more users beyond the confines of the app stores.
That all sounds great…but what are Progressive Web Apps, exactly?
“A Progressive Web App uses modern web capabilities to deliver an app-like user experience.”
Progressive Web Apps bring features we expect from native apps to the mobile browser experience in a way that uses standards-based technologies and run in a secure container accessible to anyone on the web.
The really exciting thing about PWAs: they could make app development less necessary. Your mobile website becomes your app.
Work for every user, regardless of browser choice because they’re built with progressive enhancement as a core tenet.
Fit any form factor: desktop, mobile, tablet, or whatever is next.
Enhanced with service workers to work offline or on low quality networks.
Feel like an app to the user with app-style interactions and navigation because they’re built on the app shell model.
Always up-to-date thanks to the service worker update process.
Served via HTTPS to prevent snooping and ensure content hasn’t been tampered with.
Are identifiable as “applications” thanks to W3C manifests and service worker registration scope allowing search engines to find them.
Make re-engagement easy through features like push notifications.
Allow users to “keep” apps they find most useful on their home screen without the hassle of an app store.
Easily share via URL and not require complex installation.
The Move Towards Web Apps
It’s easier now than ever to create web applications using frameworks like React, Angular, and Aurelia. But these frameworks will never be as powerful as native applications that connect right into the device’s OS.
So what’s causing this attraction towards web apps? There isn’t one main answer but there are many factors:
– It’s easier to create web apps using one stack (HTML/CSS/JS)
– Web apps do not require an app store submission
– Most web apps run in all browsers for all devices from desktops to smartphones
It’s far easier to create a simple web app for checking brand names rather than building separate native apps for Android (coded with Java) and iOS (coded with Swift). Plus those native apps are fixed to those environments whereas web apps can run on desktops and laptops.
This is also part of a rapid rise in technology where mobile browsers now support geolocation, vibration, microphone access, and many upcoming specs for HTML/DOM APIs like device orientation. Mobile browsers are quickly rising to support many native features, and it’s only been about 10 years since smartphones were first created. I don’t see this as a complete takeover where native apps go the way of the dinosaurs. Actually quite the opposite. I see an upcoming ecosystem where developers have the freedom to choose which type of app best suits their project.
Browsers vs. Native
There’s a big difference between building for a native environment and building on the web. They both have stringent requirements but for different reasons.
Native apps usually require a new codebase for every platform: Android, iOS, and Windows Phone all require separate applications and different libraries/programming languages.
You can save time by creating native hybrid apps but these still don’t support desktop environments.
A web application uses the same languages for all devices. The biggest issue of creating a web app isn’t learning multiple languages, it’s learning to support multiple browsers.
Not only do many people run outdated browsers but they also run many different versions of those browsers. Granted rendering engines have come a long way towards a unified style but the web ecosystem is far from perfect.
Obvious limitations happen when you’re talking about web-based games, video streaming, or interactive apps. These will always be much better as native applications because they have more CPU power and offer greater integration for database systems.
Again this question comes back full circle: what do you want to build?
A while back the answer was always a native app. But now you can launch fairly simple ideas as powerful web apps completely sidestepping app store restrictions.
The use case
Let me be clear before I get into this: for most people, a PWA is something you don’t need. That’s important enough that it bares repeating, so I’ll repeat it:
You probably don’t need a PWA.
The reason for this is that most websites don’t need to be able to behave like an app. This isn’t to say that there’s no benefit to having the things that PWA functionality can bring, but for many sites, the benefits don’t outweigh the time it takes to implement the functionality at the moment.
When should you look at a PWA then? Well, let’s look at a checklist of things that may indicate that you do need one…
Signs a PWA may be appropriate.
– Content that regularly updates, such as stock tickers, rapidly changing prices or inventory levels, or other real-time data
– A chat or comms platform, requiring real-time updates and push notifications for new items coming in
– An audience likely to pull data and then browse it offline, such as a news app or a blog publishing many articles a day
– A site with regularly updated content which users may check in to several times a day
– Users who are mostly using a supported browser
Hope you found it interesting. Do not hesitate to contact us if you have any inputs!