Le Progressive Web App (PWA) rappresentano una delle evoluzioni più significative del web moderno: siti web che possono essere installati sul dispositivo dell’utente e funzionare come applicazioni native. La base tecnica di una PWA è sorprendentemente semplice e si fonda su tre pilastri: il Web App Manifest (un file JSON linkato dall’HTML), il Service Worker (registrato tramite JavaScript nel documento HTML) e una connessione HTTPS. In questa guida vedremo come configurare ciascun componente.
Cosa Sono le Progressive Web App
Una PWA è un sito web che soddisfa determinati requisiti tecnici che lo rendono installabile, affidabile e veloce. Quando un utente installa una PWA, questa appare nella schermata home del dispositivo con la propria icona, si apre in una finestra dedicata senza la barra degli indirizzi del browser e può funzionare anche offline o con connessione intermittente.
I vantaggi delle PWA rispetto alle app native sono numerosi: non richiedono distribuzione tramite gli app store, sono indicizzabili dai motori di ricerca, condividono lo stesso codice base del sito web, si aggiornano automaticamente e occupano molto meno spazio sul dispositivo. Rispetto ai siti web tradizionali, offrono un’esperienza utente più immersiva, accesso offline e la possibilità di ricevere notifiche push.
Aziende come Twitter, Starbucks, Pinterest e Uber hanno implementato PWA con risultati impressionanti: Twitter Lite ha ridotto il consumo di dati del 70%, Starbucks ha raddoppiato gli utenti attivi giornalieri e Pinterest ha aumentato del 60% l’engagement. Le PWA funzionano su tutti i dispositivi moderni, inclusi Android, iOS, Windows, macOS, Linux e ChromeOS.
Il Web App Manifest: Configurazione Completa
Il Web App Manifest è un file JSON (tipicamente chiamato manifest.json o manifest.webmanifest) che fornisce al browser le informazioni necessarie per installare e visualizzare la PWA. Il file viene collegato alla pagina HTML tramite un tag <link> nel <head>:
<link rel="manifest" href="/manifest.json">
Ecco un manifest completo con tutte le proprietà principali:
{
"name": "G Tech Group - Servizi Web",
"short_name": "G Tech",
"description": "Servizi di sviluppo web e consulenza IT",
"start_url": "/",
"display": "standalone",
"orientation": "portrait",
"theme_color": "#0a0a0f",
"background_color": "#0a0a0f",
"icons": [
{
"src": "/icons/icon-192.png",
"sizes": "192x192",
"type": "image/png"
},
{
"src": "/icons/icon-512.png",
"sizes": "512x512",
"type": "image/png"
},
{
"src": "/icons/icon-512-maskable.png",
"sizes": "512x512",
"type": "image/png",
"purpose": "maskable"
}
],
"screenshots": [
{
"src": "/screenshots/home.png",
"sizes": "1280x720",
"type": "image/png",
"form_factor": "wide"
}
]
}
Le proprietà fondamentali sono: name (nome completo mostrato durante l’installazione), short_name (nome breve mostrato sotto l’icona nella home screen), start_url (pagina iniziale quando l’app viene aperta), display (modalità di visualizzazione: standalone, fullscreen, minimal-ui o browser), theme_color (colore della barra di stato e della toolbar del browser) e background_color (colore di sfondo della splash screen durante il caricamento). Le icone devono essere fornite in almeno due dimensioni: 192×192 e 512×512 pixel.
Meta Tag HTML per le PWA
Oltre al manifest, diversi meta tag nel <head> dell’HTML completano la configurazione della PWA e garantiscono la compatibilità con tutti i dispositivi:
<!-- Colore del tema per la barra del browser -->
<meta name="theme-color" content="#0a0a0f">
<!-- Supporto dark mode per il theme color -->
<meta name="theme-color" content="#0a0a0f" media="(prefers-color-scheme: dark)">
<meta name="theme-color" content="#ffffff" media="(prefers-color-scheme: light)">
<!-- Icona per dispositivi Apple -->
<link rel="apple-touch-icon" href="/icons/apple-touch-icon.png">
<!-- Configurazione per iOS -->
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<meta name="apple-mobile-web-app-title" content="G Tech">
<!-- Configurazione per Windows -->
<meta name="msapplication-TileColor" content="#0a0a0f">
<meta name="msapplication-config" content="/browserconfig.xml">
Il meta tag theme-color è particolarmente importante: definisce il colore della barra di stato su Android e della toolbar su Safari, creando un’esperienza visiva integrata con il design dell’app. Il tag <link rel="apple-touch-icon"> specifica l’icona che iOS utilizzerà quando l’utente aggiunge la PWA alla schermata home. L’icona deve essere di 180×180 pixel per i dispositivi Apple attuali.
Service Worker: Registrazione e Funzionalità Offline
Il Service Worker è uno script JavaScript che viene eseguito in background, separatamente dalla pagina web, e agisce come un proxy tra il browser e la rete. La registrazione avviene nel documento HTML tramite JavaScript:
<script>
if ('serviceWorker' in navigator) {
window.addEventListener('load', () => {
navigator.serviceWorker.register('/sw.js')
.then(reg => console.log('Service Worker registrato'))
.catch(err => console.error('Registrazione fallita:', err));
});
}
</script>
Il Service Worker intercetta le richieste di rete e può servirle dalla cache quando la rete non è disponibile, implementando diverse strategie di caching. La strategia “Cache First” serve le risorse dalla cache e aggiorna in background, ideale per asset statici. La strategia “Network First” tenta la rete e ricade sulla cache in caso di errore, ideale per contenuti dinamici. La strategia “Stale While Revalidate” serve dalla cache immediatamente e aggiorna in background per la prossima visita.
La funzionalità offline è uno dei vantaggi più tangibili delle PWA. Quando l’utente perde la connessione, il Service Worker può servire una pagina offline personalizzata anziché l’errore generico del browser. Per i siti con contenuti prevalentemente statici, è possibile pre-cachare l’intero sito durante l’installazione del Service Worker, rendendo disponibile offline tutto il contenuto.
PWA vs App Native: Quando Scegliere Cosa
Le PWA non sono sempre la scelta migliore. Le app native rimangono superiori quando si necessita di accesso completo all’hardware del dispositivo (Bluetooth avanzato, NFC, sensori specifici), quando le performance grafiche intensive sono critiche (giochi 3D, editing video) o quando la distribuzione tramite app store è un requisito di business.
Le PWA eccellono per siti informativi, e-commerce, dashboard, social media, tool di produttività, portali di notizie e qualsiasi applicazione che beneficia della discoverability web (essere trovabili tramite motori di ricerca) e della frizione zero di installazione. L’utente non deve andare su un app store, cercare l’app, scaricarla e installarla — basta un tap sul banner “Installa” che appare nel browser.
L’ecosistema PWA continua a evolversi rapidamente: le Web Push Notifications funzionano su tutte le piattaforme (incluso iOS dal 2023), le API di accesso al filesystem e all’hardware si espandono costantemente, e le performance migliorano con ogni aggiornamento dei browser. Per approfondire come ottimizzare le performance della tua web app, consulta la nostra guida dedicata.
Hai bisogno di aiuto con lo sviluppo di una Progressive Web App? G Tech Group offre servizi di sviluppo web professionale e consulenza tecnica. Contattaci a su*****@********up.it o via WhatsApp al 0465 84 62 45.