Che cos'è una PWA (Progressive Web App)?

Aggiornato: ottobre 2026

Una PWA è una web app che usa service worker, un manifest e HTTPS per essere installabile, funzionare offline e ricevere notifiche push. Il termine, coniato da Alex Russell e Frances Berriman nel 2015, indica ciò che colma la distanza tra un sito web e un’app installata senza uscire dal web: un’unica codebase, un’icona nella schermata iniziale, una finestra autonoma e uno schermo che continua a funzionare quando il treno entra in galleria. La prospettiva che questo glossario aggiunge, e che le guide frontend saltano: una PWA resta un client – il service worker mette in cache, ma la fonte di verità è il backend.

Punti chiave

DomandaRisposta
I tre pilastriService worker · web app manifest · HTTPS
Che cosa aggiungeInstallabile · utilizzabile offline · pronta per il push – su un’unica codebase
vs. un sito responsiveAggiunge service worker + manifest; il solo layout non fa una PWA
vs. il nativoCopertura e velocità vs. accesso all’hardware e presenza nello store
La verità lato backendLa cache del SW è uno specchio; l’API/BaaS è la fonte autorevole

I tre pilastri, e il backend dietro di loro

// JavaScript — the PWA's three pillars + the backend behind them
// 1 · Service worker: caches the shell, buffers writes when offline
navigator.serviceWorker.register('/sw.js');

// 2 · Manifest (public/manifest.json) makes it installable:
//    { "name": "Notes", "display": "standalone", "start_url": "/", "icons": [...] }

// 3 · HTTPS is required — service workers refuse to run otherwise.

// The catch: the SW cache is a MIRROR, not the source of truth.
// saveEventually() stores the write offline and sends it when back online:
const note = new Parse.Object('Note').set('text', draft);
await note.saveEventually(); // the BaaS is authoritative; the cache was a buffer

Un service worker è uno script in background che si colloca tra l’app e la rete come un proxy – mette in cache la shell e la serve offline; un web app manifest è un file di metadati JSON (nome, icone, display: standalone, URL di avvio) che rende l’app installabile; e HTTPS è obbligatorio, perché i service worker si rifiutano di girare fuori da un contesto sicuro. Questi tre elementi costituiscono la facciata dell’app. Il save() nelle schede di codice mostra ciò che c’è dietro: la cache è uno specchio, e quando la rete torna la scrittura si sincronizza con il backend autorevole.

Come una PWA serve una pagina offline

Un service worker che fa da intermediario tra una PWA e il suo backendUna richiesta della progressive web app passa dal service worker, che restituisce una risposta dalla cache per l'uso offline oppure la recupera dalla rete. Le letture e le scritture di dati arrivano infine all'API del backend, che è la fonte di verità; le scritture fatte offline vengono messe in coda nella cache e sincronizzate con il backend al ritorno della connessione. Le notifiche push partono dal backend e raggiungono il service worker tramite un servizio push.

cache hit

cache miss / dati freschi

scritture offline in coda
sincronizzate quando online

messaggio push

UI della PWA

Service worker
(proxy di rete)

Cache
specchio locale

API del backend
fonte di verità

Servizio push

Una richiesta della progressive web app passa dal service worker, che restituisce una risposta dalla cache per l'uso offline oppure la recupera dalla rete. Le letture e le scritture di dati arrivano infine all'API del backend, che è la fonte di verità; le scritture fatte offline vengono messe in coda nella cache e sincronizzate con il backend al ritorno della connessione. Le notifiche push partono dal backend e raggiungono il service worker tramite un servizio push.

Strategie di cache offline

StrategiaServe daAdatta a
Cache-firstCache, poi reteAsset statici – shell, icone, font
Network-firstRete, con ripiego sulla cacheDati freschi che devono essere aggiornati
Stale-while-revalidateCache subito, aggiornamento in backgroundContenuti che possono restare per un attimo non aggiornati
Cache-only / network-onlyUna sola fonteEssenziali precaricati in cache / chiamate mai in cache

La decisione si prende risorsa per risorsa, non a livello di app: la shell vuole cache-first per caricamenti istantanei; i dati vivi dell’utente vogliono network-first per la freschezza; un feed può accontentarsi di stale-while-revalidate per sembrare istantaneo e correggersi da solo. Qualunque sia la strategia scelta, la cache è un buffer di lettura/scrittura sopra l’API – le scritture offline vanno in coda localmente e si riconciliano alla riconnessione, la stessa disciplina di recupero che ogni client offline-first richiede.

Da dove arrivano davvero le notifiche push

Il meccanismo che quasi nessun glossario spiega, e il motivo per cui una PWA ha bisogno di un backend anche solo per notificare. Il client si limita a sottoscrivere: chiede il permesso e riceve un endpoint di sottoscrizione. L’invio è un lavoro del server – il backend → il servizio push del browser → l’evento push del service worker → una notifica visualizzata. Il service worker può svegliarsi per mostrarla con l’app chiusa, ma non arriva nulla se un backend non l’ha inviata: “le PWA hanno il push” è quindi solo metà di una feature senza la metà server. L’articolo sulle notifiche push copre la catena di consegna; il punto qui è che web push e push nativo terminano entrambi nel proprio codice che decide di inviare.

PWA vs. app nativa

CriterionPWANativa
CodebaseUna sola, sul webUna per piattaforma (o multipiattaforma)
DistribuzioneUn URL – nessuno store richiestoApp store, con revisione
AggiornamentiIstantanei, lato serverCiclo di rilascio dello store
Visibilità nelle ricercheIndicizzata dai motori di ricercaSolo ricerca nello store
Accesso all’hardwareLimitato (varia a seconda del sistema operativo)Completo
Affidabilità del pushBuona su Android, condizionata su iOSAffidabile via APNs/FCM
Realtà su iOSInstallazione solo dal menu Condividi, push dalla 16.4App a pieno titolo

L’asimmetria onesta sta nell’ultima riga: iOS è il punto debole delle PWA – installazione solo dal menu Condividi, nessun install prompt automatico, push solo una volta installata e solo sulle versioni recenti, sincronizzazione in background incompleta. Su Android e desktop la distanza dal nativo è piccola; su iOS è il fattore decisivo per molti prodotti.

Casi d’uso comuni

  • Contenuti e commercio – copertura, SEO e bassa frizione di installazione battono il download da uno store nel raggiungere nuovi utenti.
  • Strumenti interni – app installabili e tolleranti all’offline per utenti noti, senza distribuzione tramite store.
  • App sul campo offline-first – raccogliere dati senza segnale, sincronizzare quando torna; il pattern della cache come buffer.
  • Copertura multipiattaforma a basso costo – un’unica codebase web per coprire piattaforme che una build nativa triplicherebbe.
  • A fianco di un’app nativa – lo stesso backend serve una PWA per la copertura e un’app nativa per la profondità.

Conviene costruire una PWA? Matrice decisionale

SituazioneScelta consigliata
Copertura, SEO, bassa frizione, un’unica codebasePWA
Pubblico principalmente Android/desktopPWA – la distanza dal nativo è piccola
iOS critico con forte dipendenza dal pushNativo, oppure accettare le riserve di iOS
Grafica pesante, AR, hardware in profonditàNativo
Raccolta dati offline-firstPWA con un backend di sincronizzazione
Serve una presenza nello storeNativo (o PWA nello store dove è accettata)

Limiti e trade-off

  • iOS fissa il tetto. Installazione manuale dal menu Condividi, push condizionato e lacune nella sincronizzazione in background fanno di iOS il vincolo che più spesso decide tra PWA e nativo.
  • L’accesso all’hardware è parziale. Bluetooth, NFC, contatti e API avanzate della fotocamera sono limitati o assenti a seconda del sistema operativo – le app molto legate al dispositivo vogliono ancora il nativo.
  • La cache non è il database. Trattare la cache del service worker come fonte di verità apre la porta a scritture perse e conflitti su dati non aggiornati; è un buffer sopra il backend autorevole.
  • Il push è metà client, metà server. Sottoscrivere è facile; una PWA ha comunque bisogno di un backend per inviare, quindi “offline e push” è una feature backend con un distintivo frontend.
  • La visibilità nelle ricerche è un’arma a doppio taglio. Nessun filtro dello store significa anche nessuna vetrina dello store; si scambiano curatela e cerimonia di installazione con un URL.

Le PWA su Back4app

Back4app è una piattaforma open-source di Backend as a Service (BaaS) che combina database gestito, API REST e GraphQL generate automaticamente, autenticazione, archiviazione di file e funzioni serverless con Cloud Code. È la metà backend della feature che i pilastri frontend si limitano a completare: il service worker mette in cache la shell, ma Back4app è la fonte di verità di cui quella cache è lo specchio – utenti autenticati, dati sincronizzati che riconciliano le scritture offline alla riconnessione, e il server che invia davvero il web push a cui una PWA può solo sottoscriversi. Poiché un solo backend serve allo stesso modo una PWA, una web app classica e un’app nativa attraverso SDK per piattaforma, la copertura multipiattaforma che una PWA promette sul frontend trova il suo corrispettivo sul backend, scritto una volta sola – il client mette in cache, la piattaforma ricorda, e le due metà di “installabile, offline e push” finalmente si incontrano.

Domande frequenti

Che cos'è una PWA?

Un'app costruita con le tecnologie web standard che sfrutta le capacità moderne del browser per comportarsi come un'app installata – icona nella schermata iniziale, finestra autonoma, funzionamento offline e notifiche push – il tutto da un'unica codebase distribuita via web. Il termine è stato coniato da Alex Russell e Frances Berriman nel 2015.

Che cosa rende un'app una PWA?

Tre elementi che lavorano insieme: un service worker (uno script in background che mette in cache gli asset e rende possibili l'uso offline e il push), un web app manifest (metadati JSON che la rendono installabile) e HTTPS (i service worker si rifiutano di girare fuori da un contesto sicuro). Il criterio pratico: installabile e affidabile, qualunque sia lo stato della rete.

Che cos'è un service worker?

Un file JavaScript che gira in background su un thread proprio e fa da proxy di rete tra l'app e la rete. Intercetta le richieste e le serve dalla cache o dalla rete – è ciò che rende possibili l'uso offline, la sincronizzazione in background e la ricezione di messaggi push mentre l'app è chiusa.

PWA o app nativa: qual è la scelta migliore?

Una PWA è più veloce ed economica da costruire, sta in un'unica codebase, si aggiorna all'istante, non ha bisogno di uno store ed è indicizzabile dai motori di ricerca. Un'app nativa ottiene accesso completo all'hardware, la UX più fluida, un push più affidabile e la presenza nello store. Conviene il nativo per grafica pesante o integrazione profonda con il dispositivo; la PWA per la copertura e la velocità di arrivo sul mercato.

Qual è la differenza tra una PWA e un sito responsive?

Un sito responsive si limita ad adattare il layout alla dimensione dello schermo e ha bisogno di una connessione. Una PWA aggiunge installabilità, cache offline e notifiche push. Ogni PWA è responsive, ma un sito responsive diventa una PWA solo quando aggiunge un service worker e un manifest.

Le PWA possono inviare notifiche push?

Possono ricevere web push tramite le API Push e Notification, ma il client si limita a sottoscrivere – a inviare davvero è un backend. Il supporto su iOS è arrivato con la versione 16.4, e solo quando la PWA è installata nella schermata Home: il web push raggiunge quindi un pubblico più ristretto del push nativo.

Le PWA funzionano offline?

Sì – il service worker mette in cache asset e dati e li serve quando la rete sparisce. Le strategie comuni sono cache-first per gli asset statici, network-first per i dati freschi e stale-while-revalidate per una visualizzazione immediata con aggiornamento in background. Le scritture fatte offline vanno in coda e si sincronizzano al ritorno della connessione.

Si può pubblicare una PWA in uno store?

In parte. Lo store di Android accetta le PWA impacchettate come trusted web activity, e alcuni store desktop le trattano come app a pieno titolo. L'App Store di Apple, nei fatti, no – le PWA che sono solo siti reimpacchettati vengono rifiutate regolarmente – ed è parte del motivo per cui iOS resta la piattaforma più difficile per le PWA.

Termini correlati

Confronta con

Fonti di approfondimento

Pronto a costruire il tuo backend?

Avvia il tuo progetto su Back4app in pochi minuti: database, autenticazione, API e Cloud Code inclusi. Nessuna carta di credito richiesta.

Scritto e revisionato da Back4app Engineering, Back4app Engineering · Pubblicato il 2026-10-23