This post was written on January 4, 2022 and as PWA Studio is continuously updated so some of the following information many not be up-to-date. I'll try to update this post later with latest information. Last updated: January 4, 2022.
Progressive web applications (PWAs) are web applications built using modern web development practices. They boast impressive performance, seamless installation, offline functionality, and the ability to send notifications, among other noteworthy features. If you are looking for a basic guide to PWAs, the best place would be MDN web docs.
As for the Magento PWA Studio, it was introduced in 2018 via a public Github repo and it has been actively maintained since then. The PWA Studio is not a finished product, instead it is a set of development tools to help you create your own Magento PWA storefront. However, it comes with Venia storefront that gives you a quick start.
Over the years Magento’s PWA studio + Venia has covered most of the eCommerce functionality. It comes with a working category listing, product page, customer login, add to cart & checkout functionality. But if you have a live Magento store that has a bunch of 3rd party modules you should take your time to figure out the development & maintenance effort which PWA studio might cost you.
The first challenge with PWA studio would be the availability of the payment methods. Out of the box PWA studio only supports cheque/money-order and Braintree payments. In case you are using Stripe, AuthorizeNet, Square, AmazonPay, Paypal etc. then you’ll be required to write your own integration for that payment module and for that the official payment module must also support GraphQL API because that will be used as data source by your PWA integration of that module.
Next challenge would be the shipping methods, as not all shipping methods are supported as of now. PWA studio supports Flat Rate, Table Rate and Free Shipping methods. But it does not support “In-store pick up”, USPS, UPS, FedEx, and DHL.
Even though the catalog is supported by PWA Studio, but if you have complex products, for instance products with customizable options, or products managed by a 3rd party module (Which in our case is the Advanced Product Options APO module by MageWorx), it can require some custom development to get that to work.
Besides that, if you are using any 3rd party module which updates the frontend, you’ll have to write a custom integration for that module in your PWA storefront. So, for instance, we are using a product subscriptions module and an Advanced Reviews module among other. For these to work these modules must support GraphQL and then we’ll need to write custom integrations for these.
Writing custom integrations and maintaining them, while PWA Studio, Magento, and 3rd party modules continue to update at a fast pace, can become very time consuming and challenging. And then there is limitation for the modules that do not Support GraphQL.
Based on this, in my opinion, the PWA Studio is not ready for a complex website that is using a bunch of 3rd party modules and custom modules, unless that company has a dedicated in-house team of developers to work on this. It may be a good option for a new store that is ready to accept the limitations and challenges in exchange for the performance and loads of benefits of PWA.