commit 7323a8bbd1d3eb22e923c7b17e596f999e7cd311
parent 81decfc9cf3fad81f6304a01a3eb22e102cc5e05
Author: Hunter
Date:   Sat, 31 Jan 2026 23:06:13 -0500

iOS Safari PWA walkthrough

Diffstat:
Mpages/pwa/index.html | 143+++++++++++++++++++++++++++++++++++++-------------------------------------------
Apages/pwa/infrared.png | 0
Apages/pwa/ios_safari/add.jpeg | 0
Apages/pwa/ios_safari/add_to_home_screen.jpeg | 0
Apages/pwa/ios_safari/dots.jpeg | 0
Apages/pwa/ios_safari/scroll_down.mov | 0
Apages/pwa/ios_safari/share.jpeg | 0
Apages/pwa/ios_safari/view_more.jpeg | 0
8 files changed, 66 insertions(+), 77 deletions(-)

diff --git a/pages/pwa/index.html b/pages/pwa/index.html @@ -80,6 +80,10 @@ padding: 10px; } + .auto-detected #detected-link span { + color: #0000EE; + } + .lightbulb { text-shadow: 0px 0px 1px black; font-size: 1.4em; @@ -103,6 +107,29 @@ padding-bottom: 6px; } + #pwa-emoji { + float: right; + margin: 15px; + margin-top: 40px; + font-size: 70px; + line-height: 1; + cursor: default; + user-select: none; + } + + #pwa-infrared { + display: none; + float: right; + margin: 10px; + margin-top: 15px; + margin-right: 7px; + padding-left: 10px; + width: 100px; + image-rendering: pixelated; + cursor: default; + user-select: none; + } + .big-letter { font-size: 1.25em; font-variant: normal; @@ -248,6 +275,10 @@ .note code { font-style: normal; } + + .walkthrough-image { + width: 100%; + } /* Dark mode styles */ @media (prefers-color-scheme: dark) { @@ -283,12 +314,10 @@ a:visited { color: #80d4ff; } - - /* code { - background-color: #3d3d3d; - border-color: #555; - color: #e0e0e0; - } */ + + .auto-detected #detected-link span { + color: #80d4ff; + } .ui-element { background-color: #3d3d3d; @@ -356,55 +385,22 @@ padding-bottom: 6px; } - .pwa-icon { - margin-right: 5px !important; - } - .auto-detected { margin: 20px 0; padding: 12px 16px; border: none; border-radius: 0; } - } + } </style> </head> <body> - <!-- <h1>PWA Installation Guide</h1> --> - - <!-- <div class="toc"> - <h3>Table of Contents</h3> - <ul> - <li><a href="#about-pwas">About PWAs</a></li> - <li><a href="#chrome-desktop">Chrome (Desktop)</a></li> - <li><a href="#firefox-desktop">Firefox (Desktop)</a></li> - <li><a href="#safari-mac">Safari (macOS)</a></li> - <li><a href="#edge-windows">Microsoft Edge (Windows)</a></li> - <li><a href="#chrome-android">Chrome (Android)</a></li> - <li><a href="#firefox-android">Firefox (Android)</a></li> - <li><a href="#safari-ios">Safari (iOS/iPadOS)</a></li> - <li><a href="#troubleshooting">Troubleshooting</a></li> - <li><a href="#try-these-pwas">Progressive Web Apps You Can Install Right Now</a></li> - </ul> - </div> --> - <div id="about-pwas" class="section"> - <span class="pwa-icon" style="float: right; margin: 15px; margin-top: 40px; font-size: 70px; line-height: 1; cursor: default; user-select: none;">📲</span> - <p><b><span class="big-letter">P</span>rogressive <span class="big-letter">W</span>eb <span class="big-letter">A</span>pps</b> (PWAs) are websites that can be installed like native apps, but without reliance on or approval from centralized app stores.</p> - - <p>You can use the browser-specific instructions below to install PWAs directly from supported websites. - <!-- Once installed, they work just like regular "app store" apps. --> - </p> - - <!-- <p>To explore the full range of PWA capabilities, visit <a href="https://whatpwacando.today/" target="_blank" rel="noopener">What PWA Can Do Today</a>.</p> --> - - <!-- <h3>Creating PWAs</h3> - <p>To make your web application installable as a PWA, it must have the following:</p> - <ul> - <li><strong>Web App Manifest:</strong> A JSON file that defines app metadata, icons, and display preferences</li> - <li><strong>Service Worker:</strong> JavaScript that runs in the background to enable offline functionality and caching</li> - <li><strong>HTTPS:</strong> Secure connection required for service worker registration</li> - </ul> --> + <span id="pwa-emoji" class="pwa-icon">📲</span> + <img id="pwa-infrared" src="infrared.png" alt=""> + <p><b><span class="big-letter">P</span>rogressive <span class="big-letter">W</span>eb <span class="big-letter">A</span>pps</b> (PWAs) are apps that can be installed directly from supported websites, independent of centralized app stores.</p> + + <p>You can use the instructions below to install PWAs directly from your web browser.</p> </div> <div id="auto-detected" class="auto-detected"> @@ -413,9 +409,22 @@ <div id="safari-ios" class="section"> <h2>Safari (iOS / iPadOS)</h2> - <p>Navigate to a website that supports PWA installation, then tap:</p> - <p><span class="ui-element"><span class="dots"><span></span></span></span> <span class="arrow"></span> Share <span class="arrow"></span> More <span class="arrow"></span> Add to Home Screen <span class="arrow"></span> Add</p> - <p class="note">Note: on iOS, Safari is the <a href="https://open-web-advocacy.org/walled-gardens-report/#ios-web-app-installation---a-well-hidden-safari-exclusive">only browser</a> that can install PWAs.</p> + <p class="note">Note: on iOS, Safari is the only browser that can install PWAs.</p> + <p>Open Safari and navigate to a website that supports PWA installation, then tap:</p> + <p>1. The three dots button in the bottom right corner of the screen:</p> + <img src="ios_safari/dots.jpeg" class="walkthrough-image"> + <p>2. Share:</p> + <img src="ios_safari/share.jpeg" class="walkthrough-image"> + <p>3. View More:</p> + <img src="ios_safari/view_more.jpeg" class="walkthrough-image"> + <p>4. Scroll down to reveal the hidden "Add to Home Screen" button:</p> + <video src="ios_safari/scroll_down.mov" autoplay muted loop playsinline class="walkthrough-image"></video> + <p>5. Tap the "Add to Home Screen" button:</p> + <img src="ios_safari/add_to_home_screen.jpeg" class="walkthrough-image"> + <p>6. Tap "Add":</p> + <img src="ios_safari/add.jpeg" class="walkthrough-image"> + <p>The app will be installed directly to your home screen.</p> + </div> <div id="chrome-android" class="section"> @@ -458,32 +467,6 @@ While Firefox Beta 141+ has introduced <a href="https://www.omgubuntu.co.uk/2025/03/firefox-nightly-supports-web-apps-taskbar-tabs">some web app functionality</a>, it remains incomplete.</p> </div> - <!-- <div id="troubleshooting" class="section"> - <h2>Troubleshooting</h2> - <h3>Install Option Not Available?</h3> - <ul> - <li>Ensure the website is served over HTTPS</li> - <li>Check that the website meets <a href="https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps/Guides/Making_PWAs_installable#installability">the requirements</a> for PWA installation</li> - <li>Try refreshing the page or clearing browser cache</li> - </ul> - - <h3>PWA Not Working Properly?</h3> - <ul> - <li>Check your Internet connection</li> - <li>Clear the app's cache or data</li> - <li>Uninstall and reinstall the PWA</li> - <li>Update your browser to the latest version</li> - </ul> - - <h3>Can't Find Installed PWA?</h3> - <ul> - <li><strong>Windows:</strong> Check Start menu, Desktop, or Apps list</li> - <li><strong>Mac:</strong> Check Applications folder or Launchpad</li> - <li><strong>Android:</strong> Check home screen, app drawer, or search</li> - <li><strong>iOS:</strong> Check home screen</li> - </ul> - </div> --> - <div id="try-these-pwas" class="section"> <h2>Progressive Web Apps You Can Install Right Now</h2> @@ -562,15 +545,21 @@ } } - if (targetSection) { + const isPhone = (detectedOS === 'Android' || detectedOS === 'iOS'); + if (!isPhone) { + document.getElementById('pwa-emoji').style.display = 'none'; + document.getElementById('pwa-infrared').style.display = 'block'; + } + + if (targetSection) { const autoDetectedDiv = document.getElementById('auto-detected'); const detectedLink = document.getElementById('detected-link'); - detectedLink.innerHTML = `<a href="#${targetSection}">${detectedBrowser} on ${detectedOS}</a>`; + detectedLink.innerHTML = `<span style="text-decoration: underline;">${detectedBrowser} on ${detectedOS}</span>`; autoDetectedDiv.style.display = 'block'; autoDetectedDiv.addEventListener('click', function() { - window.location.hash = targetSection; + document.getElementById(targetSection).scrollIntoView({ behavior: 'smooth' }); }); } } diff --git a/pages/pwa/infrared.png b/pages/pwa/infrared.png Binary files differ. diff --git a/pages/pwa/ios_safari/add.jpeg b/pages/pwa/ios_safari/add.jpeg Binary files differ. diff --git a/pages/pwa/ios_safari/add_to_home_screen.jpeg b/pages/pwa/ios_safari/add_to_home_screen.jpeg Binary files differ. diff --git a/pages/pwa/ios_safari/dots.jpeg b/pages/pwa/ios_safari/dots.jpeg Binary files differ. diff --git a/pages/pwa/ios_safari/scroll_down.mov b/pages/pwa/ios_safari/scroll_down.mov Binary files differ. diff --git a/pages/pwa/ios_safari/share.jpeg b/pages/pwa/ios_safari/share.jpeg Binary files differ. diff --git a/pages/pwa/ios_safari/view_more.jpeg b/pages/pwa/ios_safari/view_more.jpeg Binary files differ.