[HN Gopher] Minimal files and config for a PWA
___________________________________________________________________
Minimal files and config for a PWA
Author : rcarmo
Score : 132 points
Date : 2025-10-01 13:14 UTC (9 hours ago)
(HTM) web link (github.com)
(TXT) w3m dump (github.com)
| afavour wrote:
| I've been pleasantly surprised by how much is possible with an
| iOS PWA these days. It certainly doesn't cover all bases but it
| would cover a lot... if only they'd make it easier to actually
| install one. With iOS 26 they've put it yet another tap deep!
|
| It's often argued that Apple doesn't make PWA installs obvious
| because they want to preserve the sanctity of the web or
| something along those lines but I'd say that argument is
| invalidated by the "smart banners" for installing an App Store
| app that you can set via meta tag:
|
| https://developer.apple.com/documentation/webkit/promoting-a...
|
| In my experience they're far more intrusive than a PWA install
| banner!
| CharlesW wrote:
| For me it's still just Share > Add to Home Screen, so 3 taps if
| you count the tap to reveal the menu.
|
| Also interesting: "Now every site can be a web app on iOS and
| iPadOS." https://webkit.org/blog/17333/webkit-features-in-
| safari-26-0...
| tshaddox wrote:
| > With iOS 26 they've put it yet another tap deep!
|
| Yes. By default iOS 26 Safari has a new "Compact" tab menu
| which requires tapping the ellipsis menu button, then Share,
| then Add to Home Screen. Previously the Share button was
| located directly on the tab menu.
|
| I've gone into Settings -> Apps -> Safari -> Tabs section and
| switched from "Compact" to "Bottom". This switches to a larger
| tab menu with single-tap access to the Share, Bookmark, and tab
| switcher buttons.
| alex_suzuki wrote:
| Interesting that it's possible to do it with a single HTML file,
| the icons and manifest being dynamically generated in JS and set
| as data URLs. I wonder if that works reliably.
|
| It's in the same repo: https://github.com/chr15m/minimal-
| pwa/blob/main/single-file-...
| edoceo wrote:
| Favicon defined as SVG in the HTML then converted to PNG.
| That's a neat trick.
| pseudosavant wrote:
| I've been using this technique for years in this project:
| https://github.com/pseudosavant/player.html
|
| A single HTML file with favicon, manifest, SVG icons, etc.
| alex_suzuki wrote:
| Neat, thanks for sharing!
|
| Having no build step and no dependencies is such a power
| move. ;)
|
| Any gotchas with this approach that you're aware of?
|
| Can this approach handle updates? I thought the way to do
| that was usually to check some hash in the manifest and
| prompt the user that an update is available if it has
| changed.
| smusamashah wrote:
| This is awesome. Tried to search for other HTML only repos on
| Github using "language:HTML NOT language:JavaScript" but it
| doesn't return anything. Not even this repo. Was following
| https://docs.github.com/en/search-github/github-code-search/...
| pcdoodle wrote:
| Fantastic minimal example. For those wondering what you can do
| with PWAs, check out https://whatpwacando.today/
| senoal wrote:
| hey thanks for this. do you know if we can also do this: when
| signing up we send the confirmation link to the user's email.
| however, when the user clicks the link in the email it
| redirects to the website and not the pwa. is there a way to
| redirect to the pwa? thanks
| s_ting765 wrote:
| Chrome has a flag for this but I haven't tested it
| personally. #enable-user-navigation-capturing-pwa
| jeroenhd wrote:
| You can use something like https://developer.mozilla.org/en-
| US/docs/Web/Progressive_web... to handle the verification
| part inside Chrome.
|
| For opening HTTP links in the PWA itself, you rely on the way
| the browser deals with links. I don't think you can reliably
| open any link in PWAs in a cross-platform manner today.
| JimDabell wrote:
| That website is full of non-standard things. For instance Web
| NFC and Web Bluetooth are not standard web platform APIs, they
| are Blink APIs that have been rejected on privacy and security
| grounds by both Mozilla and Apple. Nothing apart from Blink has
| implemented them.
|
| Mozilla on Web NFC:
|
| > We believe Web NFC poses risks to users security and privacy
| because of the wide range of functionality of the existing NFC
| devices on which it would be supported, because there is no
| system for ensuring that private information is not
| accidentally exposed other than relying on user consent, and
| because of the difficulty of meaningfully asking the user for
| permission to share or write data when the browser cannot
| explain to the user what is being shared or written.
|
| -- https://mozilla.github.io/standards-positions/#web-nfc
|
| Mozilla on Web Bluetooth:
|
| > This API provides access to the Generic Attribute Profile
| (GATT) of Bluetooth, which is not the lowest level of access
| that the specifications allow, but its generic nature makes it
| impossible to clearly evaluate. Like WebUSB there is
| significant uncertainty regarding how well prepared devices are
| to receive requests from arbitrary sites. The generic nature of
| the API means that this risk is difficult to manage. The Web
| Bluetooth CG has opted to only rely on user consent, which we
| believe is not sufficient protection. This proposal also uses a
| blocklist, which will require constant and active maintenance
| so that vulnerable devices aren't exploited. This model is
| unsustainable and presents a significant risk to users and
| their devices.
|
| -- https://mozilla.github.io/standards-positions/#web-bluetooth
| ajross wrote:
| Never really understood Mozilla's position on remote device
| access.
|
| Yes, it's a risk, essentially by definition. It's no less so
| (and in particular absolutely not helping your browser
| product or the web platform!) if you just punt and force
| everyone to use a proprietary iOS/Android/Windows app
| instead.
|
| Innovation happens on the physical side of the design wall
| too, you can't just put your head in the sand and figure
| someone else will solve it. That's how we got the walled app
| gardens in the first place.
|
| And just to make this concrete: QMK keyboards configure
| magically by pulling up a web page ("use.via") on the device.
| Lots of gadget-space open source hardware uses similar
| tricks. This is not an obscure or useless feature. And it's
| deeply sad that Firefox[1], in its senescent obsolescence,
| doesn't even want to pretend to play for a piece of that
| action.
|
| [1] The archetypical hacker's browser in its prime!
| coupdejarnac wrote:
| How is asking for user consent insufficient? I smell Apple
| propaganda.
| thedumbname wrote:
| How to do a minimal cache busting? That is what stops me from
| "minimal setups"
| giancarlostoro wrote:
| Versioned cache names.
| giancarlostoro wrote:
| I've done this before, its a lot of fun, you learn a lot about
| the browser. Especially caching. If you ever suspect caching
| issues for a bug / issue, open up Chrome Dev Tools, go to the
| "Application" tab, then "Storage" if you click the Clear site
| data button, it will wipe all cache, then right click on the
| refresh button, and "Empty cache and hard reset" if you do both
| of these (though one's probably enough) you will start over with
| nothing cached. Cache becomes very tricky when building a PWA.
|
| I don't know if its been fixed since, but I really needed to tell
| if I was offline, only way was to make requests, if they failed
| assume offline, keep retrying till online to sync data to
| backend.
| butz wrote:
| I wonder how long will PWAs will be viable option for sideloading
| own apps without notarization and developer account?
| jckahn wrote:
| Ugh why would you put that out there?
| ajross wrote:
| The walled gardens go up around _paid_ app stores because of
| the way court decisions landed in the US[1]. PWAs are an open
| standard, they aren 't really part of the analysis.
|
| But yes, if you want them to stick around maybe consider using
| platforms that best support them.
|
| [1] Apple disallowed open access and so couldn't be a
| "monopoly" per the court and could charge whatever license fee
| they wanted; Google let people sideload their own apps and so
| was forced to allow entire third party app stores. Yes, this is
| just as insane as it sounds.
___________________________________________________________________
(page generated 2025-10-01 23:02 UTC)