I always had this idea that a PWA was a site/app that works without js.
I have a PWA that creates html/css in the build process. If JS is enabled, it acts as an SPA. If JS is disabled, it's a simple static site. If ServiceWorker can be used, caches the html/css I built which both the SPA and static site versions can use. If no SW, then fallback to AppCache/LocalStorage/etc.
The hardest part was finding a CSS framework that doesn't use JS and still can do menus/etc nicely.