I am confident in predicting that we will see Progressive Web Applications (PWAs) take over from native applications in the next few years. In fact, I believe at least 80% of new non-gaming apps on mobile phones in the next 5 years will be created using web technologies.
PWAs have been around for 12 years
Steve Jobs was right in 2007. Not only was he right about what mobile phones would look like for at least the next 12 years, he was also right about what mobile apps should look like. He announced that the standard format for apps on iPhones would be what we now call HTML5. Apps would require no SDK, have easy access to native functionality, and thus be easily buildable by anyone with a web development background.
It didn't take long for Apple to decide this was no longer the direction they wanted to go. They introduced the iOS SDK and native development became a lot more complicated. Functionality that was intended to work in-browser became native-only, forcing developers to learn new languages and shift towards becoming native developers.
Since then, web development has grown a lot. Many web applications are now more feature-rich and impressive than their native counterparts. JavaScript has become a force to be reckoned with and with the introduction of PWA support in both Android and iOS, there's a real future where web developers can build native-ready applications without needing to learn an entirely new language.
PWAs are the best of us
A Progressive Web Application is not like any other web app. There are a few characteristics that these specific applications have, and a couple requirements that need to be met in order for an application to be considered a real PWA.
R E L I A B L E
A progressive web application needs to be accessible even when there is no internet connection available, and that doesn't just go for one "We are not currently available"-page. Every URL needs to be accessible, even if it's just to show the data that's been cached. On top of that, PWAs have to be served over HTTPS, need to be responsive on tablet & mobile devices and the entire site has to work cross-browser.
F A S T
A progressive web application needs to be quick. It needs to be quick enough to not drive a person insane when they try to load it on a 3G network for the first time. So get that async script loading up and running, remove some render blocking CSS and optimize the code that's still there!
E N G A G I N G
Last but not least, a PWA needs to be engaging. It needs to feel like a native experience, that's smooth and acts consistently. No janky scrolling, no waiting for navigation to happen and when there's an important update you need the user to know about, your PWA can even support push notifications. Maybe most important to the native experience is launching the app. These apps live on the user's home screen, meaning they need to have a manifest containing all the necessary icons and have functional splash screens while your app loads in the background.
Support is growing
While originally designed to feel native to mobile devices, PWAs are being supported more and more, including a recent update to Chrome (73) that made it possible for PWAs to be installed on Chrome OS, Linux, Mac and Windows PCs. Of course not all features are supported immediately, but as PWAs become more popular, so too will their features increase per platform. Currently, only Chrome on Android supports all major features you would want in a PWA, but Apple's Safari (on iOS) is quickly following suit. Soon, there will be no real difference between the capabilities of a native app vs those of a PWA.
It's so easy
Building a PWA is incredibly easy. If you have any experience working with VueJS and their CLI, you'll have probably made a PWA already, even if you don't know it yet. Yes, PWAs have strict requirements and need to work really well, but it's no longer difficult to make your pages feel quick and smooth.
PWAs are not some obscure technology anymore that you need to figure out by combining 12 different StackOverflow posts. There are plenty solid guides out there for writing these applications and optimizing them for every OS. Google has an incredible guide on how to create your first PWA without using a JS framework, and there are many guides like it for different frameworks and standards.
In future articles I'll write a guide on how to get started with PWAs in VueJS so if you're as in love with Vue as I am, then stick around!
In conclusion
PWAs are the future, as they are our past. Google might have coined the Progressive Web App term, but Steve Jobs envisioned them over 10 years ago. There's a future out there where you write your native-like applications using JavaScript, without having to go through difficult build steps and frustrating app stores. With nearly full access to a device's native functionality, PWAs are bound to take over from native applications and become our #1 way of creating incredible experiences on all devices.
Oldest comments (60)
To take a counter point.
The purpose of native apps is to supplement the slow progress & feature lacking options of web/pwa etc.
Access to the latest APIs & features, extra testing, robustness, security, performance come from being full native. For most basic data apps, PWA is good & cheaper from a dev standpoint but native is native (different OS handle different rendering/animation etc). The gap is smaller but still there.
In the end, they want thin client but I want thick. I will always buy thick so I think both will exist (my data, my device, my rules, my lockout vs their control). We are already seeing a shift back towards individual control.
Thanks for your comment!
I think this is true at the current time. PWAs are being supported, but features tend to come later to them. However, as more, larger companies start using them (as Uber, Spotify and AirBnB already are), they'll be prioritized when it comes to rolling out new features as well.
When it comes to individual control, I don't think there's an actual difference between running a PWA or running a native app. Both contain code you have no control over, both do things with your data you're unable to see and both have to ask for permission to use your native functionality. I believe a majority of app users won't even be able to spot the difference between a PWA and a native app, let alone decide not to use something because it's web-based.
This is it. If you are sending a bunch of listings & a couple of clicks, then PWA can do.
But if you want an AR with Facescan Siri video morph that has pencil support, PWAs always lag (browser/spec/companies etc). Unity/Unreal/3D worlds/sensor access are more reasons.
For me, it is the same as it as always been (built a lot of apps since store launch)... use the right tech for the job you need. Native, webview, hybrids, pwas, voice, framework whatever. I don't really care for trying to define it with words & just try to pick the right one. It's all just 0101010s.
PWAs have a big future. Native has extra/leading edge. Stadia & Arcade are coming for extra considerations.
Oh I completely agree that PWAs are not going to be competing with the significantly more advanced apps out there. Use the right tools for the job, but I think a lot of apps out there that are currently native could easily be PWAs and would actually improve if they were written as PWAs.
That is 100% true, with better resource allocation, speed, progress etc. Almost all listing apps can be PWA, many will be better faster. This applies to the web even more so. A million frameworks of thousands of lines to deliver 400 words, a couple of pics & btns.
Big tech politics plays various roles too.
Native is basically the default 'never wrong' right now (PWA & break your business vs "I did it the traditional way, it's not our fault") plays in too.
I like competition so I like all options. Be nice if there were more mobile operating systems, browsers, datasets, UIs, methods etc.
80% sounds about right, I'll make some of those. And some of the 20% too. 😃
The only thing that concerns me about PWAs is
S E C U R I T Y
Could you expand on this concern? Would love to learn about your specific worries
As a developer point of view, PWA is so much awesome for me. I can see building myself for the web and making the application reach a lot more users.
However, When I am using a PWA application as a user, I have no idea what's in that PWAs code. There is nothing such as google play store or app store to check and verify the content of the app and how they might be using all the permissions and the device.
I don't think you can trust all apps in the store, anyway. You can't check what's the code in a native app but you could inspect the assets of a PWA.
Yes, I definitely can not trust all the apps in the store. However, It puts a sense of security in the users' mind that the app went through an approval process.
more or less the approval process is just a formality, in case fo play store at least.
I'll be a bit frank here, but I really looked around for dev.to android app, eve though its PWA = Android APP.
Call me Ol Fashioned but good old apps feel good. PWAs have this weird scroll, and dont feel as seamless.
Plus exposong every other api to web is a honeypot.
Right now when I give a certain permission I know, some app is using them but I've seen carriers injecting scripts into webpages, so a big no to PWAs from me. I would rather permit a shitty app to send a notifications to me than a PWA.
Thanks for the comment!
I'm not sure your argument against PWAs is entirely fair. Yes, when bad people want to do shady things, they can use PWAs to do those things. You still need to give the web app the permissions it needs to use the native functionality it's asking for so you have a decent amount of control over what the app is allowed to do.
When it comes to the quality of the PWA, that's where Google's standards come in and should be followed rigorously. Scrolling should feel completely natural and feel exactly as seamless as a native app. This is an achievable standard but it takes some attention from whomever is developing the app.
If we are going to turn PWAs into another walled garden(google standards etc), dont you think native apps already are there? Im sure we can have good things with Web assembly etc, but aren't we just coming to the same concept back to a kind of containered, "controlled" experience?
Somehow I think PWAs will end up just like how apps are like now, sandboxed, monitored and walled.
Unless an average Joe can Code. Companies will always want to protect their users's experience?
Somehow we end up going up and down the same lane/cycle.
The good part is that pwas don't need to be delivered through walled garden type of environment that is Google play or app store so you've got some freedom here
I think you misunderstood me here,
PWAs can be very easily injected with scripts, which can run unauthorized code onve permissions are granted, which will create a scenario where we will revert to a "verification process" and we are back to walled gardens
Try injecting scripts into a HTTPS connection, which PWAs must use.
hi mao,
here I created a detailed step by step article for creation in PWA. I guess this will help
Do you have the article here on dev.to ? I checked it out and have some questions. It's now 2021 do you have an update to that procedure? and can you explain how to pre-cache pages(blade.php) with regards to a Laravel PWA? or they don't need to be cached ?
Hi selase,
i will me more than happy to help.
please DM me with all your quries.
Great article - we very much agree! What the PWA needs is a high quality platform for organizing and sharing of the many great PWAs. We solved it with weshareapps.com. 🙌
Thanks for the article, Stefan!
I also agree PWA is the future. Since some features of PWA might be automated, for example, prefetching, offline first, smooth navigation, I started an opensource project for that automation github.com/sirko-io/engine. There are more things to do, but first steps were already made.
I didn't remember Steve Jobs talking about Web Apps. Heres the video: youtube.com/watch?v=ZlE7dzoD6GA
It really sounds like he's talking about PWAs 😄
Can you please share some resources so that I can start learning about it since I'm a junior developer some resources or articles seem like alienated and doesn't explain the need of certain things
Native: access to latest tech. d/l before, built for device, optimized, more features. AR/VR etc. More API access.
Progressive web apps: easier dev, less features, better workflow, cheaper, getting better. Can do most Airbnb type stuff. "web, for apps".
Writing tip: Don’t assume your readers know what an acronym means, even if it’s common in your domain of expertise. Particularly if it’s common in your domain of expertise. Don’t bury the definition 1/2 through your article.
Good point! I've edited the first line to include the definition. Thanks!
Yep, this is exactly why I love the idea of PWAs so much. I often lose internet access in the train and then suddenly I'm unable to access the websites I was previously looking at? That doesn't make much sense to me. With PWAs you can do a decent amount of caching and give the user access to anything he's loaded before his network went down. Or, you can even prefetch a bunch of content for the user, so your entire app keeps working.
Some comments may only be visible to logged-in visitors. Sign in to view all comments.