Seems like you are right, the caching for proper offline usage and use with very limited internet connections is all done trough service workers. Their main job seems to be system integration and while Firefox Android kind of sucks at that too it doesn’t seem like they ever cut that down so they just dropped it for desktop users.
Regular websites can do that too using service workers - Lemmy’s webapp uses this to show an error when an instance is unreachable
What we call a PWA is usually just a webpage with a webmanifest, and a service worker script to manage loading those cached resources you mentioned
Seems like you are right, the caching for proper offline usage and use with very limited internet connections is all done trough service workers. Their main job seems to be system integration and while Firefox Android kind of sucks at that too it doesn’t seem like they ever cut that down so they just dropped it for desktop users.