PWAs on Samsung Internet
Published Updated
In one line: per Samsung Internet’s own developer documentation, the browser
supports installing a PWA through a manual “Add shortcut on Home screen” menu
item, and separately shows a “+” ambient-badging icon in the URL bar when it
detects an installable PWA whose manifest display is standalone or
fullscreen.
Where it is supported
Section titled “Where it is supported”Samsung Internet’s developer docs describe two related but distinct install signals rather than one:
- Manual add. The user can open the menu and choose “Add shortcut on Home screen”; if the manifest declares icons, “the chosen icon will appear on the home screen along with the chosen short name.”
- Ambient badging. Samsung’s docs state Samsung Internet “will dynamically
display a plus icon in the URL bar” when it detects a PWA, and that this “+”
icon “requires that the web app will be displayed as a standalone app,
without the URL bar” — i.e. the manifest’s
displaymember set tostandaloneorfullscreen. Web App Manifest support itself “arrived in Samsung Internet v4,” and ambient badging “was introduced in Samsung Internet 5.2.” - Samsung DeX. The docs also state that “in Samsung Internet running on Samsung DeX, web apps can be added to the desktop.”
How to use it
Section titled “How to use it”{ "name": "My App", "short_name": "App", "display": "standalone", "icons": [{ "src": "/icon-512.png", "sizes": "512x512", "type": "image/png" }]}How to detect it at runtime
Section titled “How to detect it at runtime”Samsung’s documentation does not describe a JavaScript API, event, or property
for querying whether the ambient-badging icon is currently shown, or for
triggering the manual “Add shortcut” menu item programmatically. Separately,
per MDN, the CSS display-mode media feature “can be used to test whether a
web app is being displayed in a normal browser tab or in some alternative way,
such as a standalone app or fullscreen mode.” MDN also notes that the
fullscreen value matches when the page “has been put in fullscreen mode by
the Fullscreen API or by using the fullscreen value of the display member
of the Web App Manifest” — so an ordinary web page that calls the Fullscreen
API on its own can match (display-mode: fullscreen) too, which makes that
value unreliable as an install signal on its own. The check below only treats
standalone as an install indicator for that reason:
function isRunningInstalled() { if (!('matchMedia' in window)) { // Fallback: no way to query display-mode here; assume not installed. return false; } // Only `standalone` is used here: `fullscreen` also matches a plain web // page that entered fullscreen through the Fullscreen API, so matching it // would misreport an uninstalled page as installed. return window.matchMedia('(display-mode: standalone)').matches;}
if (!isRunningInstalled()) { // Show in-page copy pointing at the browser's own menu, since there is no // documented way to detect or trigger Samsung Internet's install UI directly. document.getElementById('install-hint').hidden = false;}Practical checklist
Section titled “Practical checklist”- Set the manifest
displaytostandaloneorfullscreen— per Samsung’s docs, ambient badging’s plus icon depends on this value. - Provide manifest
iconsfor the manual “Add shortcut on Home screen” path — per the docs, that icon (and the chosen short name) is what appears on the home screen. - A registered service worker does not by itself mean the page is cached for offline use. Samsung’s docs describe a service worker as “like a network proxy that runs in your browser” that “could return a response from a cache” — offline caching only happens if your fetch handler actually implements it.
- Serve over HTTPS — per Samsung’s docs, “Service Workers are restricted to secure contexts.”
- Don’t assume the ambient-badging icon and the manual home-screen menu item are the same signal — Samsung’s docs describe them as two separate paths to installation.
Where to go next
Section titled “Where to go next”- PWAs on Chrome and Android (WebAPK, TWA) — another Chromium-based install flow with its own manifest-driven UI.
- Service Worker caching strategies — the caching behavior a service worker only provides once you implement it in a fetch handler.