Rendi installabile e pronto all'offline qualsiasi sito: un generatore di manifest, un service worker testato, un pulsante di installazione, i limiti su iPhone e la configurazione per Vite o Next.js.
Per trasformare un sito in una progressive web app, servilo in HTTPS, aggiungi un manifest.webmanifest con nome, start_url, modalità di visualizzazione e icone da 192 e 512 pixel, collegalo da ogni pagina e registra un service worker che metta in cache i file per l'uso offline. I browser Chromium a quel punto propongono l'installazione; gli utenti Safari la aggiungono da Condividi.
Le tre parti di una PWA
Compila il modulo per ottenere un manifest e i tag head da incollare, poi copia il service worker e lo script di installazione. Il worker di questa pagina è stato eseguito in un browser reale con la rete scollegata prima della pubblicazione.
Nell'attuale Chrome no: un manifest valido, HTTPS e un minimo di interazione dell'utente bastano per l'opzione di installazione. Il worker ti serve comunque, perché senza l'app installata mostra la pagina di errore del browser quando sei offline.
Sì, con dei limiti. Gli utenti Safari installano dal menu Condividi, non esiste l'evento del prompt di installazione e le notifiche push funzionano solo per un sito aggiunto alla schermata Home su iOS 16.4 o successivo. La cache offline funziona.
beforeinstallprompt si attiva solo nei browser Chromium, solo quando i criteri di installazione sono soddisfatti e non quando l'app è già installata. Controlla la sezione Manifest del pannello Application di DevTools per conoscere il motivo.
Lighthouse 12 ha eliminato la categoria PWA. Usa il pannello Application di Chrome DevTools: la vista Manifest elenca gli errori di installabilità e i problemi delle icone, e la vista Service workers mostra registrazione, aggiornamenti e un interruttore Offline.
Cambia il VERSION della cache in sw.js. Il browser rileva il worker modificato, lo installa e la fase di activate rimuove le vecchie cache. Con skipWaiting e clients.claim il nuovo worker prende il controllo al caricamento successivo.
L'installazione dà al tuo sito una sua icona e una finestra senza barra degli indirizzi. Un service worker aggiunge le pagine offline. Le notifiche push richiedono entrambi, e Apple le consente solo per i siti che l'utente ha aggiunto alla schermata Home.
Cosa può fare una PWA, per piattaforma
Tre file fanno funzionare un sito offline: il worker, una pagina di fallback e poche righe per registrarlo. Abbiamo eseguito esattamente questi file su localhost in Chromium: il worker si è installato, la cache si è riempita e, con il server fermo, la home page si è caricata dalla cache mentre una pagina mai visitata ha mostrato offline.html.
Le pagine provano prima la rete, così le persone vedono contenuti aggiornati, poi ripiegano su una copia in cache, poi su offline.html. File come CSS, script e icone arrivano prima dalla cache. Cambiare VERSION fa sì che la successiva fase di activate elimini le vecchie cache.
Rendila autosufficiente: stili inline e nessun file esterno, perché quando compare potrebbe non essere raggiungibile nient'altro.
L'evento beforeinstallprompt si attiva solo nei browser Chromium (Chrome, Edge, Samsung Internet, Opera). Safari e Firefox non lo inviano mai, quindi lì il pulsante resta nascosto e le persone usano il menu del browser.
Chrome non pretende più un service worker prima di proporre l'installazione; controlla il manifest e le voci qui sotto. Lighthouse 12 ha rimosso la categoria PWA, quindi verifica l'installabilità in Chrome DevTools: pannello Application, poi Manifest, che elenca eventuali problemi sotto Installability.
I requisiti di installazione di Chrome
Installa con npm i -D vite-plugin-pwa. Il plugin scrive il manifest e genera un service worker Workbox in fase di build, quindi non devi scrivere sw.js a mano. Metti le icone in public/.
Next.js serve questo file su /manifest.webmanifest e aggiunge il tag link al posto tuo. Per il supporto offline, metti lo sw.js qui sopra in public/ e registralo da un piccolo client component.
Renderizzalo una sola volta in app/layout.tsx. Salta la registrazione in sviluppo, così una build in cache non nasconde le tue modifiche.
Nome dell'app
Nome breve (sotto l'icona)
URL di avvio
Cartella delle icone
Colore del tema
Colore di sfondo
Copia
Generatore di manifest
Visualizzazione
Includi un'icona maskable
Salva le tue icone come icon-192.png e icon-512.png (e icon-512-maskable.png) nella cartella delle icone.
Tag per l'head di ogni pagina
Inizia gratis · Nessuna carta di credito richiesta