Uncovering Secrets of Progressive Web Apps
- 27. Ideal for all those apps that are just
consuming web content or web
services
- 32. App Support - Mobile OS
iOS 11.3+
Only from store Only from store
- 59. Install Custom Action
let installPrompt;
window.addEventListener("beforeinstallprompt", e => {
//TODO: enable Install button
e.preventDefault();
installPrompt = e;
});
JavaScript
- 60. Install Custom Action
let installPrompt;
window.addEventListener("beforeinstallprompt", e => {
//TODO: enable Install button
e.preventDefault();
installPrompt = e;
});
JavaScript
- 61. Install Custom Action
let installPrompt;
window.addEventListener("beforeinstallprompt", e => {
//TODO: enable Install button
e.preventDefault();
installPrompt = e;
});
JavaScript
- 62. Install Custom Action
let installPrompt;
window.addEventListener("beforeinstallprompt", e => {
//TODO: enable Install button
e.preventDefault();
installPrompt = e;
});
JavaScript
- 88. PWA LifeCycle
Second visit
App goes background
App will be suspended
App Loading
⚡visibilitychange
❓display-mode
❓start_url
⚡freeze 🆕
User goes back to App ⚡resume 🆕
⚡visibilitychange
App in memory
- 89. PWA LifeCycle
Second visit
App goes background
App will be suspended
App Loading
⚡visibilitychange
❓display-mode
❓start_url
⚡freeze 🆕
User goes back to App ❓document.wasDiscarded 🆕
⚡load
App was discarded
- 95. Avoid App Translation
if (matchMedia('(display-mode: standalone)').matches) {
document.querySelector("head").innerHTML +=
'<meta name="google" content="notranslate">';
}
JavaScript
- 105. Use environment margins
body {
margin-top: env(safe-area-inset-top);
margin-left: env(safe-area-inset-left);
margin-bottom: env(safe-area-inset-bottom);
margin-right: env(safe-area-inset-right);
}
CSS
<meta name="viewport" content="..., viewport-fit: cover" />
HTML