fix(pwa): guarantee service worker registration on readyState and head script for WebAPK minting

This commit is contained in:
chrisf committed 2026-10-22 20:19:45 -06:00
1 parent 4e625acb1b
commit 369a6a6e04
2 files changed
+18 -3

No files matched your search

+9
View File
@@ -45,6 +45,15 @@ export default function RootLayout({
<script
dangerouslySetInnerHTML={{
__html: `
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('/sw.js', { scope: '/' })
.then(function(reg) {
console.log('[Everclone PWA] Early SW registered, scope:', reg.scope);
})
.catch(function(err) {
console.warn('[Everclone PWA] Early SW registration failed:', err);
});
}
window.__everclone_install_prompt = null;
window.addEventListener('beforeinstallprompt', function(e) {
e.preventDefault();
+9 -3
View File
@@ -21,16 +21,22 @@ export default function PwaRegister() {
useEffect(() => {
// 1. Register Service Worker for PWA installability and Share Target
if (typeof window !== 'undefined' && 'serviceWorker' in navigator) {
window.addEventListener('load', () => {
const registerSW = () => {
navigator.serviceWorker
.register('/sw.js')
.register('/sw.js', { scope: '/' })
.then((registration) => {
console.log('[Everclone PWA] Service Worker registered (scope):', registration.scope);
})
.catch((error) => {
console.error('[Everclone PWA] Service Worker registration failed:', error);
});
});
};
if (document.readyState === 'complete' || document.readyState === 'interactive') {
registerSW();
} else {
window.addEventListener('load', registerSW);
}
}
// 2. Capture the install prompt for Android / Desktop PWA installation