DEV Community

Cover image for PWAs are our future

PWAs are our future

Stefan Dorresteijn on May 30, 2019

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...
Collapse
 
vuild profile image
Vuild

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.

Collapse
 
stefandorresteijn profile image
Stefan Dorresteijn

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.

Collapse
 
vuild profile image
Vuild

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.

Thread Thread
 
stefandorresteijn profile image
Stefan Dorresteijn

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.

Thread Thread
 
vuild profile image
Vuild

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. 😃

Collapse
 
anaganisk profile image
Sai Kiran • Edited

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.

Collapse
 
stefandorresteijn profile image
Stefan Dorresteijn

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.

Collapse
 
anaganisk profile image
Sai Kiran

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.

Thread Thread
 
lesha profile image
lesha 🟨⬛️

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

Thread Thread
 
anaganisk profile image
Sai Kiran

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

Thread Thread
 
maowtm profile image
maowtm

PWAs can be very easily injected with scripts

Try injecting scripts into a HTTPS connection, which PWAs must use.

Thread Thread
 
msamgan profile image
Mohammed Samgan Khan

hi mao,

here I created a detailed step by step article for creation in PWA. I guess this will help

Thread Thread
 
selase profile image
selase

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 ?

Thread Thread
 
msamgan profile image
Mohammed Samgan Khan

Hi selase,
i will me more than happy to help.
please DM me with all your quries.

Collapse
 
lazarljubenovic profile image
Lazar Ljubenović

With the way PWA are currently working, their performance will never be even close to what you can do by building a native application. This is especially true for games and generally anything that has complex UI and thus requires multiple threads in order to work properly.

Either web browsers or mobile operating systems need a fundamental change in the way they work for PWA vs Native to be comparable in terms of performance.

Soon, there will be no real difference between the capabilities of a native app vs those of a PWA.

I can always tell the difference. And many other people can tell the difference, although they aren't sure exactly how it's called and why some apps feel less smooth and look less polished than others.

I always know when an application I download from the store was built with something like Cordova. You can feel the laggy way the webview scrolls, where the whole application is rendered.

Also, this seems really weird:

your native-like applications using JavaScript, without having to go through difficult build steps

Are you saying that projects which end up being a PWA don't have a complex building step? You even mention Vue CLI: there's your difficult build step.

The tone of the whole post seems to somehow put JavaScript and web development “above” developing native applications. With no explanation and no good rationale you conclude that people prefer working in JavaScript instead of building native apps in different languages, and that PWA will somehow save us from... what exactly?

Native applications aren't going anywhere anytime soon. Improving your web app and making it as best as possible is obviously a good thing, but thinking that this somehow replaces a native application in every aspect is just plain delusional.

Collapse
 
vuild profile image
Vuild

These are the arguments that have usually resulted in choosing native so far. Dev pain is ignored.

PWA can replace for other gains but pros can see (little details, ordering, performance, render etc).

The gap is closing for most infoapps.

Collapse
 
d1p profile image
Debashis Dip

The only thing that concerns me about PWAs is
S E C U R I T Y

Collapse
 
stefandorresteijn profile image
Stefan Dorresteijn

Could you expand on this concern? Would love to learn about your specific worries

Collapse
 
d1p profile image
Debashis Dip

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.

Thread Thread
 
skyrpex profile image
Cristian Pallarés

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.

Thread Thread
 
d1p profile image
Debashis Dip

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.

Thread Thread
 
msamgan profile image
Mohammed Samgan Khan

more or less the approval process is just a formality, in case fo play store at least.

Collapse
 
stefandorresteijn profile image
Stefan Dorresteijn

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.

Collapse
 
dnesteryuk profile image
Dmitriy Nesteryuk

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.

Collapse
 
gualtierofr profile image
Gualtiero Frigerio

I do like native apps, both as a user and as a developer, but I think you have a point. Most apps could be replaced by their PWA version and we won't really feel the difference.
Almost all of the apps I build now are hybrid with a custom framework I made for my company, and I like that approach. The native framework handles offline usage and hardware access, but the presentation layer is mostly made by webviews, except for a few native controls we use for some customers.
The advantage is having a web developer work on the presentation layer and give him freedom to use CSS for any visual effect he needs, and you can share code with the website.

Collapse
 
mfcarneiro profile image
Matheus Felipe • Edited

Nice article and the comment sections is awesome!

But a month ago, I was decided to implement a PWA for my company and started some upgrade and stuff. But something told me, "take a time to see a little bit of Flutter" and was a right decision too.

But I'm back to the first step, PWA is awesome but Flutter gives me more productivity and direct to the business part, doing even less customization (CSS) and layout decisions.

I guess the navive x PWA anyone can search and study the differences, but has a new guy in town and his name is Flutter, and the page was turned (again).

Now we need to discuss another topic, Flutter vs PWA hahahaha

Collapse
 
ciclosoftware profile image
Stefan Riedmann • Edited

Nice article, nice discussion!

I agree to all the pros and cons regarding performance, native UX, security and so on.

My point of view comes mainly from working in a young Startup, and our system contains 2 web based frontends, one of which is stand-alone, and not fed by an online server. Thinking of adding 2 native apps to this architecture would kill us. So PWA's are just awesome, not to forget Web Assemblies when it's about higher workload.

Anyway, the part I most like in PWA's is the first word - progressive. To reach a full fledged native app, you need to invest much more than when you can start with a pure web app at first, closing the circle to the user early, adapt the design .. and let it grow step by step into a offline supporting app. That also sounds more natural to me, like a child learning to walk and grow up...

But thinking of the bigger picture. Native apps vs. PWAs is like C/C++ against C#. The latter will never replace the basic technologies, which let us stay closer to the hardware / native interfaces.

Collapse
 
kobbyknight profile image
KobbyKnight

My point of view comes mainly from working in a young Startup, and our system contains 2 web based frontends, one of which is stand-alone, and not fed by an online server. Thinking of adding 2 native apps to this architecture would kill us. So PWA's are just awesome, not to forget Web Assemblies when it's about higher workload.

Yes I do share a similar view, being also in a young start up. PWA's cut down extra development time by a huge margin when the development commences on a web app basis. However, I do prefer native. The only reason PWA's are a go to for most young startups has to do with the workload and human resource available.

Anyway, the part I most like in PWA's is the first word - progressive. To reach a full fledged native app, you need to invest much more than when you can start with a pure web app at first, closing the circle to the user early, adapt the design .. and let it grow step by step into a offline supporting app.

Yes, that may be so, but so is any development life cycle progressive. Developing natively can take a progressive approach. Identifying and aligning the right requirements to start with can help make native feel as progressive as well. All apps have room to improve overtime.

Collapse
 
stefandorresteijn profile image
Stefan Dorresteijn

I'm actually working on a site that will have all this information (and more!) listed per browser. I know for iOS a user needs to turn on sensor information themselves, but I'm not entirely sure how much sensor information you get access to. I do have a project I need to use sensor data for though, so I'll find out and get back to you!

Collapse
 
krsilas profile image
Silas

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 😄

Collapse
 
gee5ive profile image
G.Becks

My dream come true for the future of mobile app development would be something g along the lines of flutter, but that is based on webassembly. This would open the door to more languages being supported, and also the ability to write high performance games, of anything else you could imagine. I doubt it will happen, but it would be pretty cool imo

Collapse
 
karan_shah89 profile image
Karan Shah

I am skeptical if this for the only reason that iOS hasnt followed suit and I guess it won't do it as well. They have a big engineering team and if they wanted to support PWAs, they would have done it by now (not having push notifications, native add to home screen and a few others)

I feel they want to exert a better control over the ecosystem and with PWAs working out of the box, their 30% commission would be in danger - also with the risk of ruining user experience and lack of security thereof.

PWAs are here to stay but to beat them on iOS would be tough.

Collapse
 
sleeplessbyte profile image
Derk-Jan Karrenbeld • Edited

Apple is actually behind on multiple fronts but finally catching up (which was showing during the last WWDC).

If you look at Jake Archibalds: Is ServiceWorker Ready you can see that it has been updated to YES, since iOS 11.3 (this all started with 11.1 and later), which quietly shipped full Service Worker support.

The next big update came with iOS 12.2 adding a PWA browser and other full-fledged support features. Yes, it was all in Beta but this shows the intent of Apple.

In short: iOS is following suit .

Collapse
 
karan_shah89 profile image
Karan Shah

If that was the focus, it would have come up in iOS 13 - unfortunately, it did not. Until web push and background sync is done perfectly, none of it matters IMO

Thread Thread
 
sleeplessbyte profile image
Derk-Jan Karrenbeld

Those features we're not present in Chrome when PWAs landed; the whole point is that all these features are additive. They are progressively enhancing the applications.

PWAs are much more than those two, and it matters, even if it doesn't matter to you.

Collapse
 
rubberduck profile image
Christopher McClellan • Edited

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.

Collapse
 
stefandorresteijn profile image
Stefan Dorresteijn

Good point! I've edited the first line to include the definition. Thanks!

Collapse
 
vagoel profile image
Varun

PWA's seems very promising the way its being nearing the gap towards Native apps.Saying PWA's will uproot(in next 5+ years) the native apps and the related ecosystem is entirely wrong and neither PWA's will be dusted away as well.For any organisation to come up with a mobile app ,tough choices has to be made like
Time to Market,Cost Effectiveness, Maintenance , Performance.

These factors play a pivotal role in choosing native over PWA's or vice-versa.If cost effectiveness is the priority over optimal-killer performance , PWA's is wining the battle already and its trending.More and more companies are leveraging their developers already known web technologies to build PWA/Hydrid Apps using React native/Phonegap/Ionic.

On the contrary, building data rich & enhanced user interaction apps with multi-threading rendering screen in micro seconds Native is clear winner.

Apart from these factors, companies like Apple and Google earns a major slice of revenue from app stores and google stores.They wont encourage axing their revenue slice by letting PWA's becoming a major threat.Both PWA's and Native are evolving and giving a tough competition, leaving behind choices to user to use their due diligence.

Collapse
 
nick5454 profile image
Nick

1) web games suffer from too much performance issue and apps like Unity blow it away. Never happen

2) Xamarin forms are so much faster to develop cross platform that many companies have drop web apps for it. I’ve been a few. Sorry web, on Spa’s at most

Collapse
 
eugeneh82317893 profile image
Eugene Hill

Amazing Article..!!! The loading time of PWA is approx. 2-3x faster compared to responsive designs. Google mobile-first indexing helps it to express the high speed of PWA.PWA is the future of mobile app development.

Collapse
 
skyjur profile image
Ski

It's not true that building web apps is easy. Web is one of the more difficult platforms to build rich interactive UIs.

Collapse
 
elie222 profile image
Elie

Isn’t Apple support for pwas still pretty bad? Like you can’t even do push notifications for pwas on iOS

Collapse
 
stefandorresteijn profile image
Stefan Dorresteijn

iOS has some serious catching up to do, but it's coming. They've been making solid progress on their PWA support.

Collapse
 
mcgrealife profile image
Michael McGreal

where do you follow iOS PWA updates?

Thread Thread
 
stefandorresteijn profile image
Stefan Dorresteijn

Currently following WWDC19 very closely to see if they announce push notifications for iOS, but mostly I follow all the big dev blogs.

Collapse
 
oathkeeper profile image
Divyesh Parmar

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

Collapse
 
vuild profile image
Vuild

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".

Collapse
 
weshareappscom profile image
WeShareApps

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. 🙌

Collapse
 
phil_lgr profile image
Phil Léger

but Apple's Safari (on iOS) is quickly following suit

PWAs on iOS are not viable. Apple just announced major investments in the Swift ecosystems (SwiftUI) they won't cripple their own app store.

It just won't happen, they will always make sure that PWA can't be as good as native iOS apps.

On Android the picture is different, on desktop PWAs are great for perfs and to deliver a better UX.

I'm a front end with 6 years of experience and design too, next thing I'm learning is React Native or Swift.

Collapse
 
deaddoctor profile image
deaddoctor

is there any plan to add PWA to smart TVs? writing an app for smart TVs is a pain in the ass.

Collapse
 
veebuv profile image
Vaibhav Namburi

Much like the many have said here. It's not there yet, but like you've mentioned. In the near future I see no reason why PWAs won't be logical for many use cases

Collapse
 
devarjunan profile image
dev-arjunan

Thanks for sharing detailed article :)

Collapse
 
levkach profile image
levkach

But what about bleeging edge technologies like AR and VR? Can the possible leave native?

Collapse
 
stefandorresteijn profile image
Stefan Dorresteijn

These types of technologies are one of the reasons why I see 20% of apps still going for Native. Web is super strong, and very useful for most apps, but there will still be use cases where you need that native boost.

Collapse
 
martinstreicher profile image
Martin Streicher

What do developers consider best practices and productive tools for building PWAs? Has anyone written widely on engineering such solutions?

Collapse
 
stefandorresteijn profile image
Stefan Dorresteijn

There are many articles on building PWAs and a few standards set by Google. I'm going to be writing my collection of best practices on Dev.to soon as well, including tools I use and results I'm looking for.