> Has anyone built PWAs, and if so, why? Do they work cross-platform/mobile well?
Works cross platform great. Construct 3 is a sophisticated productivity app, although it works on mobile devices it's not the ideal environment to get lots of stuff done with it.
Coming from a Windows native app, main advantage in developing a PWA is that it allows easy cross platform support (Chromebooks especially good for educational markets) and much more agility in developing compared to say a native app.
It was all built from the ground up though. I think we were well ahead of the curve when it was started to be developed 3-4 years ago.
Mentioned in another comment yesterday that we decided against using third party UI because we were worried about bloat, third party dependencies and general responsiveness. Whole app is usable in ~1mb of network load (less than lots of big-corp homepages) and we get comments from users saying after using it for a while they forget they are in the browser which is great and a strong indicator we've hit the mark.
If we were to start again today, we'd still roll our own UI.
My brothers blog is very good and often technical and goes into a lot of interesting web tech stuff relating to Construct 3 and PWA's: https://www.construct.net/en/blogs/ashleys-blog-2?orderID=1
There are a whole raft of benefits of PWA's, probably too many to list especially coming from our native predecessor Construct 2. Auto updating users to latest versions, no download/installation which helps significantly with converting users into just trying the product, faster load times than our native Windows predecessor, easier distribution etc etc.
Cross platform support is an incredible competitive advantage in some markets such as education where Chromebooks are common and competition is sparse/non-existent. It even runs on Raspberry Pi's and we're confident we're future proofed for new devices.
Making your PWA fully functional online is tricky but doable and I believe particular care needs to be taken here from the beginning. Retroactively implementing offline support would be difficult.
It's also important to not get too fancy and building it for offline use helps you avoid these traps. We've seen some PWA's record every user interaction within the PWA which appears to be the basis of some features such as undo - this brings in a huge raft of complexities.
A few shortcomings, but the gaps are being bridged slowly but surely. For example copying images to clipboard: https://bugs.chromium.org/p/chromium/issues/detail?id=150835
For someone like me, who has been trying off and on to use the web as a common application distribution platform for many years, being able to just pop up an install prompt and then have it installed like a regular desktop application seems very huge. I wonder why people aren't making a bigger deal about it.
It's a big deal because the simple fact of having to visit a website in order to access a web application was one of the main differences that affected the user experience versus native applications. Some applications will see more users because of this change.
Since it is somehow still controversial, I will go ahead and review my own perspective on the benefits of the web as an application platform. This is really down to programmer worldview so I realize some other people are always going to see things differently.
1. The web platform allows you to create one code base rather than having to maintain source for Windows, Mac and Linux.
2. The web platform has a set of APIs that are comprehensive and well designed.
3. The web platform handles distribution. Trying your application is as simple as one click.
I can actually see this as gradually taking share away from Steam for distribution of games (that can be created for the web).
PWAs appear to be a very good solution for typical CRUD style performance apps, specially with Web Components now being available across Chrome and Safari on mobile devices.
On Windows 10, PWAs have replaced UWP JavaScript apps, meaning if a PWA is properly signed and packaged into the store, you get to access the UWP APIs directly.
I haven't used ChromeOS, but I imagine similar functionality is available.
So you get to combine Web and native APIs with the runtime doing the necessary FFI for you.
This seems a good compromise when the native features aren't fully required, e.g. WebGL 2.0 vs ES 3.x / Vulkan...
I use it daily on my Android and it works well for my needs. I get caching and push notifications, my app is right on my home screen so just one click away. All this is very cheap (writing a service worker) compared to trying to figure out Cordova or Electron.
Aside from that, simply integrating individual apis into your pages can also be a solution if you don't want a full blown miniapp