PWAs or progressive web apps are optimized to perform like a mobile app.
It is web code on the backend but with offline capabilities. This web app could be stored on your phone, without needing an internet connection to use it.
On the contrary, mobile apps are platform specific. For instance, a mobile app could only work on Android or iOS. You need 2 different codebases to be able to offer the app to both iOS and Android users.
It is good to know that mobile apps can be listed on the apps stores, this makes it easier for new users to discover them. For PWAs this is not available. Users have to find the apps on the web and then they have the option to install them on their device.
In addition, PWA installation process is not something that most users are used to. People are more used to installing an app through an app store than installing it using a browser.
But, the good thing about PWAs is that they are cost-effective. You need less time to develop them and they are already available to all OSses.
Also, something changed recently for PWAs:
Now they have support for iOS push notifications, in the past, it was only Android that allowed that. It was a show-stopper for many projects.
The cons of PWAs are that compared to native apps, PWAs have limited access to the device functionality. For example, PWAs can’t use your contacts or Bluetooth or NFC. Sometimes, it can be a huge roadblock.
In addition, PWAs cannot perform background activities, like real-time geolocation.