FWIW, I have an experimental open-source implementation of offline-capable PWA protomaps. Haven't advertised it much, because I haven't sorted out performance (particularly on mobile), and it's a bit buggy still. Also, don't have cache invalidation. But it does work. Usually. xD
I didn't dig too deeply into it, because explicitly storing locally just gives a bit more control. Also, since I was kind of imitating the style of Organic Maps, I wanted to give the ability to download entire tiles. I view caching responses more like a performance enhancement, whereas I wanted explicit offline support.
That makes sens. Both features combined would be cool. In any case, a cache invalidation feature should be always visible to the user, so that he knows that clicking this button will switch to online mode.
app: https://maps.bpev.me
source: https://tangled.org/bpev.me/maps
Based on results from indexeddb pmtiles work:
https://github.com/jtbaker/pmtiles-offline
https://github.com/protomaps/PMTiles/issues/395