Progressive Web App: che cosa offrono di nuovo?

Le Progressive Web App (PWA, in italiano applicazioni web progressive) è l’ultimo fenomeno del panorama delle app. Una PWA abbina le caratteristiche dei siti web con molte qualità delle app native Mobile. In questo modo l’applicazione funziona in maniera uguale sia come sito web che come app indipendentemente dal sistema operativo.

Ma possono queste applicazioni web progressive fare veramente concorrenza alle già stabilite app native? E cosa c’è di realmente progressivo in queste app, ovvero cosa le contraddistingue dalle classiche web app? In questo articolo vi forniamo una panoramica sul funzionamento delle applicazioni web progressive e vi spieghiamo come queste si differenzino da altri formati. Inoltre chiariremo quali vantaggi e svantaggi portano con se le PWA.

Che cos’è una applicazione web progressiva?

Il termine “applicazione web progressiva” definisce un nuovo metodo di funzionamento delle app, che porta con sé possibilità molto promettenti. Rappresenta uno sviluppo ulteriore dei formati presenti già da tempo nelle web app.

Google è, per così dire, il maggior responsabile di questo nuovo formato. Perciò è poco sorprendente il fatto che le PWA siano state finora impiegate unicamente con il sistema operativo di casa Google, Android. Sui dispositivi con sistema iOS, di Apple, questo formato funziona attualmente soltanto limitatamente. Ad ogni modo, questa tecnologia per il momento si trova in una fase ancora iniziale e quindi il potenziale non è ancora sfruttato appieno. Ciononostante è già chiaro che Google investirà sul suo sviluppo, che in futuro seguirà un’ulteriore ottimizzazione della PWA è praticamente certo.

Definizione delle applicazioni web progressive, parte 1: sito web e applicazione tutto in uno

Essendo le PWA nel bel mezzo dello sviluppo, darne una spiegazione completa è attualmente impossibile. Una PWA è accessibile su Internet tramite un URL e funziona attraverso il browser, in modo da poter così funzionare su diversi sistemi operativi. Inoltre è disponibile indipendentemente da qualsiasi app store e non necessita di alcuna installazione.

A differenza di una web app tradizionale, una applicazione web progressiva funziona anche offline. Sul display di un dispositivo capace di connettersi ad Internet compare un collegamento con l’URL corrispettivo. In questo modo è possibile richiamare l’applicazione anche quando non si ha alcuna connessione o se ne ha una debole (l’unico prerequisito in questo caso è una cache offline nel browser). Spesso l’applicazione assomiglia molto di più ad una app nativa rispetto che ad un sito web. Grazie al suo design responsive l’applicazione si adatta a display di qualunque grandezza.

Definizione delle applicazioni web progressive, parte 2: PWA Vs app nativa

Una PWA si presenta come un’applicazione web responsiva, ma che richiama l’aspetto di un’app nativa. In questo modo l’applicazione è in grado di utilizzare e di integrare all’interno del programma funzioni native del dispositivo utilizzato quali la fotocamera e il microfono, la localizzazione GPS o le notifiche push. Per questo l’applicazione mette alla prova la compatibilità sia del browser utilizzato sia del dispositivo. Anche il cosiddetto “Look and Feel” (ovvero la percezione da parte dell’utente dell’interfaccia dell’applicazione) di una PWA su tablet o smarphone assomiglia molto a quello di una app nata per utilizzo da dispositivo mobile (atteggiamento fluido in relazione all’utilizzo, buoni tempi di reazione per il movimento touch, etc.).

Aprire un’applicazione web progressiva online ha quantomeno il vantaggio di poter sempre contare sull’ultima versione disponibile. Differentemente da un’app nativa, l’utente non si deve preoccupare degli aggiornamenti, poiché, non appena la PWA può contare sulla connessione al server, questa ricerca immediatamente nuovi aggiornamenti.

Ulteriori preferenze rispetto ad un’app nativa sono i costi ugualmente ridotti e il minor dispendio necessario per lo sviluppo, trattandosi di un’applicazione funzionante allo stesso modo su web e su diversi sistemi operativi. Tutto ciò tra l’altro senza compromettere le prestazioni, o almeno questo è il caso nella maggior parte degli scenari in termini di tempi di reazione per la riproduzione e l’utilizzo. Inoltre, con una PWA si necessita di uno spazio di archiviazione sul dispositivo di utilizzo praticamente minimo, nonostante ciò dipenda soprattutto dalla grandezza della cache offline.

Tuttavia alcune di queste funzioni sono già offerte dalle web app classiche così come, seppur con qualche limitazione, da siti web responsive e per dispositivi mobili. Cosa c’è quindi di tanto innovativo in queste applicazioni web progressive, rispetto alle classiche web app?

Definizione delle applicazioni web progressive, parte 3: PWA Vs web app tradizionali

Le web app classiche, essendo basate su browser, ovvero senza installazione, funzionano su diversi sistemi operativi Mobile, quali Android, iOS e Windows Phone. L’approccio di un’applicazione web progressiva non è quindi nulla di nuovo sotto questo punto di vista, ma risulta comunque più maturo rispetto alle web app tradizionali: il funzionamento di una PWA si adatta in base al settore di utilizzo, il che significa che anche l’utente, il cui dispositivo e/o browser non è compatibile con tutte le funzioni dell’applicazione, può comunque utilizzarla, anche se in forma ridotta.

Un esempio: un’applicazione web progressiva, atta al caricamento di foto su una piattaforma online, permette l’utilizzo della fotocamera. In questo modo gli utenti possono scattare e caricare foto direttamente tramite app. Tuttavia non tutti i browser e dispositivi supportano questa funzione da un punto di vista tecnico. Appena si lancia l’applicazione nel browser, essa verifica se c’è una fotocamera connessa e se questa è supportata dal browser. Se ciò non dovesse essere possibile, la funzione della fotocamera non viene utilizzata, ma per lo meno tutte le altre funzioni compatibili con l’utilizzo web sì. Nel caso in cui la compatibilità con la fotocamera non sia disponibile, si potrà sempre comunque contare sulla funzione di upload dell’applicazione web progressiva, integrando gli scatti del proprio smartphone.

Dunque in questo caso le app sono progressive nel senso che funzionano su ogni browser, e che le loro funzioni si adattano all’hardware utilizzato e alle funzioni del browser. Le feature di una PWA crescono parallelamente alle possibilità fornite dal browser e dai dispositivi utilizzati.

Definizione delle applicazioni web progressive, parte 4: PWA vs app ibride

Oltre alle web app esistono già da tempo le app ibride, un ulteriore formato che imita le caratteristiche delle applicazioni native, superandone anche alcuni deficit. Quindi anche le app ibride, similarmente alle PWA, possono essere sviluppate con uno dispendio di tempo minore. Tuttavia le app ibride servono ad un altro scopo: vengono integrate, tramite un’installazione, sui sistemi Android o iOS e imitano così il funzionamento delle app native, il che comporta sia vantaggi che svantaggi.

All’infuori del risparmio durante lo sviluppo, l’integrazione nel sistema operativo delle app ibride porta con sé un vantaggio essenziale. Ovvero che attraverso l’installazione è possibile incorporare più funzioni native del dispositivo rispetto alle web app, incluse quelle progressive, sebbene comunque meno rispetto alle app native.

Come già menzionato sopra, l’installazione comporta anche degli svantaggi. Le app ibride sono più difficili da testare, se comparate al formato delle web app. Inoltre l’applicazione rimane dipendente dalla piattaforma. E anche se lo sviluppo per i singoli sistemi operativi risulta più veloce rispetto alle app native, alla fine dei conti il dispendio per la programmazione è chiaramente maggiore che nelle applicazioni web progressive. Perciò, mentre non deve essere apportata alcuna modifica perAndroide iOS per lo sviluppo di una PWA, nel caso delle app ibride la compatibilità dell’hardware e del browser diventa centrale.

Retroscena tecnici di una PWA

Una PWA si basa esclusivamente su degli standard web condivisi, e viene, come nel caso delle web app convenzionali, scritta principalmente nei linguaggi di programmazione HTML, CSS e JavaScript. Le applicazioni web progressive sono estremamente flessibili e adattano le loro funzioni continuamente alle relative condizioni generali. Ciò di cui è capace una PWA esattamente dipende sempre dal browser e dal dispositivo utilizzato, ed in parte dal sistema operativo. Ma quali sono le tecnologie utilizzate?

Service Worker

Una novità della PWA è l’utilizzo del Service Worker, uno sviluppo del Web Worker. Un Service Worker opera in secondo piano nel browser, esattamente come JavaScript (sotto forma di uno dei thread scollegati dal sito web). Richiamando l’applicazione per la prima volta, il server PWA carica il Service Worker e tenta di installarlo. Una volta avvenuta l’installazione il Service Worker sarà sempre pronto all’utilizzo ad ogni nuovo avvio dell’applicazione e verrà informato su ogni richiesta effettuata in rete sul relativo dominio. Questo avviene però solo quando si tratta di siti web che utilizzano HTTPS, altrimenti sussisterebbero seri rischi relativi alla sicurezza.

Il Service Worker e la cache ad esso appartenente vengono salvate nel browser utilizzato, sempre che questo supporti questa funzione, come è attualmente il caso con Google Chrome, Mozilla Firefox e Opera. La peculiarità qui è che un Service Worker permette l’utilizzo di una PWA anche senza connessione Internet, poiché i contenuti vengono caricati direttamente dalla cache. Questo procedimento aiuta enormemente a velocizzare, visto che si dispone già della struttura dell’app e devono essere scaricati solo i nuovi dati.

Separazione della shell dal contenuto

La “Application Shell Architecture” gioca un ruolo importante al fianco dei Service Worker nella realizzazione di applicazioni web progressive. Questa viene utilizzata anche nella app native. Attraverso di essa si differenzia il software dell’applicazione tra l’Application Shell (anche riferita in breve come App Shell, che sta ad indicare la struttura dell’applicazione) e il contenuto. L’interfaccia della PWA concerne all’App Shell, che viene caricata e visualizzata come prima cosa. I contenuti rappresentati qui si comportano in maniera dinamica e vengono caricati da Internet.

L’App Shell viene salvata nella cache del Service Worker dopo la prima volta che viene richiamata. Così facendo si ha il vantaggio, che il processo di caricamento dell’App Shell richieda meno tempo, e nel frattempo le performance della PWA aumentino. In aggiunta i contenuti della PWA vengono messi in sicurezza nella cache, o meglio attraverso la IndexedDB. Per fare ciò è necessario, come per l’App Shell, che i contenuti siano stati scaricati durante un accesso precedente all’applicazione web progressiva, così che i contenuti della PWA in questione siano richiamabili anche offline.

WebAPK

Con WebAPK si intendono dei server attraverso i quali si può trasformare una applicazione web progressive, richiamata attraverso browser, in file formato APK (Android Package). Così facendo, la PWA risulta ancora più facile da incorporare nel sistema operativo, almeno per quanto riguarda i dispositivi Android.

Una PWA in formato APK è integrabile nell’App Drawer, ovvero dove sono presenti tutte le applicazioni di un dato dispositivo, e, in maniera simile ad una app nativa di Android, è installabile sul dispositivo. Questo permette la PWA di disporre di più funzioni native, permessi di accesso su altre applicazioni così come altre risorse del dispositivo. A questo punto Android riconosce la PWA in questione come un’applicazione propria e non come un tab in un browser.

Fino ad ora sono poche le versioni beta dei browser Android che supportano la funzione WebAPK, inoltre la conversione nel formato APK risulta ancora molto scomoda. Nella forma attuale l’installazione delle WebAPK non è ancora largamente compatibile, ma un’espansione di questa funzione a tutti i browser più comuni è uno scenario realistico. Nonostante ciò, anche senza questa funzione di installazione, le PWA convincono per le loro grandi capacità prestazionali.

Presente e futuro delle PWA

Il passo in avanti nelle tecnologie relative ai browser e alla implementazione del Service Worker ad esse collegate sono state determinanti per la nascita di questi nuovi tipi di web app. Già ora è possibile sviluppare varie ed impressionanti app con la tecnologia PWA appena descritta, nonostante queste possano essere sfruttate al pieno del loro potenziale solo attraverso i browser che supportano il Service Worker. Molti esempi di applicazioni web progressive le potete trovare nel PWA showcase di Google e sul sito web pwa.rocks.

Le applicazioni web progressive non sono attualmente in grado di sostituire le app native in tutti i campi, e sarà così anche in futuro, poiché le applicazioni native sviluppate appositamente per un determinato sistema operativo hanno sempre le maggiori possibilità di servirsi delle risorse di sistema, e non solo, del dispositivo utilizzato. Tuttavia non è realmente necessario che la stragrande maggioranza delle app sia così strettamente legata ad un software e hardware specifico. Proprio per questo il formato PWA è decisamente interessante per qualunque tipo di applicazione.

Molti vantaggi delle applicazioni web progressive sono palesi, ed è per questo che sia gli sviluppatori di app che gli utenti ripongono grandi speranze nel formato PWA. Tutto sommato ad ostacolare la diffusione e la produzione di massa delle PWA sono solo pochi, sebbene decisivi, fattori.

Punti di forza e punti deboli delle PWA: una panoramica

Nella panoramica che segue sono riassunti ancora una volta i vantaggi e gli svantaggi delle applicazioni web progressive rispetto ad altri tipi di app. La tabella tiene in considerazione gli aspetti della programmazione come anche quelli dell’utilizzo delle PWA.

Vantaggi Svantaggi
La programmazione delle PWA è molto meno dispendiosa sia in termini di tempo e fatica sia da un punto di vista economico se comparata alle app native per dispositivi mobili. Inoltre con una PWA è possibile realizzare un app che può essere utilizzata sia su web che indipendentemente su qualunque piattaforma. Il formato PWA e la sua compatibilità con i vari browser (da dispositivi mobili) e sistemi operativi si trovano ancora in una fase di sviluppo. Al momento è poco chiaro quali funzioni dispositive native saranno in grado di supportare in futuro.
Le PWA sono immediatamente disponibili tramite browser, non necessitano di essere scaricate ed installate, diversamente da altri tipi di app. Questo comporta l’ulteriore vantaggio che le PWA possono essere testate senza doversi necessariamente legare in un modo o nell’altro all’applicazione. Ma all’occorrenza possono essere installate tramite le WebAPK, così da poterle integrare maggiormente nel sistema operativo. Non tutti i browser ed i sistemi operativi supportano le PWA nel pieno delle loro funzioni. Molto dipende da se i dispositivi iOS sosterranno o meno questa nuova tecnologia. Le WebAPK rappresentano quindi una tecnologia sperimentale dal futuro incerto.
Le PWA possono servirsi di singole funzioni dei dispositivi mobili (notifiche push, geolocalizzazione, foto/videocamera, microfono, rilevamento sensoriale della posizione e del movimento del dispositivo). L’utilizzo di tutte le funzioni native di un dispositivo non è possibile (accesso vietato ai contatti, al calendario, bluetooth o alla NFC). Se e quando le PWA diverranno maggiormente integrabili nel sistema operativo, allora si potrà contare su tutte le funzioni native, com’è il caso con le app native.
Nessun download di aggiornamenti necessario, l’app si aggiorna automaticamente ad ogni accesso, a patto che il dispositivo sia connesso. Ad ogni modo le PWA funzionano di base anche senza utilizzare alcuna connessione ad Internet. È poco chiaro se le PWA riusciranno ad imporsi sul mercato o meno. Tuttavia ci sono buone possibilità che ciò accada, considerando che Google, uno dei colossi di Internet e dello sviluppo dei software, è uno dei maggiori sostenitori di questa nuova tecnologia. Inoltre si tratta di una tecnologia web che può già contare su molti influenti sostenitori.
Le PWA necessitano di pochissimo spazio di memoria e di meno risorse rispetto alle app native per dispositivi mobili, mantenendo però, comparabilmente, un buon livello di prestazioni. L’integrazione classica nell’App Drawer del dispositivo è disponibile solo attraverso l’utilizzo del WebAPK.
Le PWA sono raggiungibili tramite i motori di ricerca e sul web. Esse sono indipendenti dai sistemi chiusi degli app store. Non adatte al posizionamento nell’app store.

La tabella illustra le caratteristiche attuali delle possibilità delle applicazioni web progressive, quantomeno in relazione alle possibilità offerte al momento dalle ultime versioni dei browser più comuni come Google Chrome, Mozilla Firefox e Opera. Per un futuro supporto capillare del formato PWA ci sono dei segnali positivi, ovvero Microsoft sta lavorando all’integrazione dei Service Worker nel suo nuovo browser Edge. Solamente Apple mantiene ancora il mistero riguardo a come ha intenzione di procedere riguardo al supporto del formato PWA, di fatto il browser Safari di Apple supporta attualmente le PWA in misura molto ridotta. Con Safari ad esempio le PWA sono utilizzabili solo online, e non è quindi chiaramente possibile integrare una PWA nell’App Drawer dei dispositivi iOS.

Si possono sostituire le app native con le PWA?

Tutti i nuovi formati delle app hanno avuto vita difficile in passato: sia le web app tradizionali come anche le app ibride non ce l’hanno fatta a raggiungere una diffusione tra i dispositivi mobili, come è invece riusciuto alle app native. Le applicazioni web progressive invece potrebbero farcela al primo colpo grazie ai rudimenti tecnici ben architettati e al decisivo supporto fornito su più fronti. Al momento la domanda principale rimane se Apple aprirà maggiormente le porte al formato PWA o meno. Questo porterebbe le app web progressive a diventare in poco tempo uno dei maggiori rivali delle app native.

Apple ha però ottimi motivi per continuare a concentrarsi sul formato delle native app ed ostacolare al contempo la ribalta delle PWA. Ovvero Apple ha nel suo app store una grossa fonte di introito e vincola in questo modo molti utenti ai propri servizi. Anche i dati ottenuti tramite le app native e l’app store giocano un ruolo importante. Dovesse Apple decidere di supportare in qualche misura le PWA, il che vorrebbe dire trasformare molte applicazioni su iOS e macOS da app native ad app web progressive, a quel punto gli sviluppatori e gli utenti Apple non dipenderebbero più dal suo app store. Apple rinuncerebbe a questa dipendenza dal proprio store, se mai decidesse di farlo, solo nel caso in cui l’utilizzo e quindi la diffusione delle PWA superasse quello delle app native.

Tuttavia il mercato delle app web progressive sembrerebbe avere le spalle abbastanza grandi anche senza il supporto di Apple. Per il successo di questo formato sarebbe comunque necessario un maggiore supporto da parte dei browser più popolari. Si può però dare per certo che l’ulteriore sviluppo del browser Chrome sia atto ad ottenere una migliore compatibilità con le PWA e una integrazione delle stesse più facile per Android. Ma Google non è il solo sostenitore del formato PWA, infatti anche Mozilla e Opera, tra gli altri, rafforzeranno la compatibilità dei loro browser con le PWA. I maggiori promotori delle app web progressive sono perlopiù soggetti operanti nell’industria di Internet e dei software, che hanno interesse nel vedere una più aperta Computer Technology e Information Technology.

Conclusione: sono le app web progressive le app del futuro?

La denominazione “Progressive Web App” non è solo una moda del momento o un concetto di marketing; con le PWA, gli sviluppatori di app entrano in un terreno tecnico del tutto inesplorato. Lo sviluppo ulteriore delle web app “normali” porta con sé un potenziale decisamente rivoluzionario: le app sono perciò progressive, perché si adattano alle capacità dell’ambiente di utilizzo. Più performanti sono i dispositivi di utilizzo e i browser impiegati, e maggiori sono le possibilità sfruttabili da parte delle PWA.

Se utilizzate una PWA dal vostro computer o portatile, essa si comporterà come un’abituale applicazione web. Accedendovi invece da smartphone o tablet, otterrete un’applicazione web che si comporterà da app nativa. In base alla configurazione del vostro dispositivo mobile sarà possibile che l’applicazione utilizzi funzioni native del dispositivo, come ad esempio la fotocamera, il microfono, le notifiche push o il GPS.

I vantaggi delle applicazioni web progressive sono palesi e molteplici: non necessitano né di download né di installazione, si aggiornano automaticamente ad ogni accesso, risparmiano sulle risorse del dispositivo e non dipendono da una connessione Internet. L’indipendenza dalla piattaforma permette tra l’altro di testare una PWA online per la prima volta, senza doverla necessariamente inglobare nel vostro dispositivo. Inoltre i tempi di reazione dell’app rappresentato un importante fattore: fino ad oggi le app native hanno offerto il “look and feel” migliore, ma d’ora in avanti anche le PWA saranno in grado di offrire simili prestazioni.

Il dispendio, in termini di tempo ed energia, e il costo minore per la realizzazione di una PWA (basta programmare un’app che funzioni sia come sito web sia come app per tutte le piattaforme) sono un valore aggiunto per gli sviluppatori. La configurazione di una PWA è quindi vantaggiosa sia per i fornitori di app sia per gli utenti. Tuttavia non sono ancora capaci di supportare tutte le funzioni native dei dispositivi mobili: da un punto di vista funzionale, se le applicazioni web progressive riusciranno a colmare questa lacuna, entreranno di fatto in una competizione a viso aperto con le app native, anche se di fatto le prime non riusciranno mai ad equiparare le possibilità offerte dalle seconde.

Essenzialmente problematica è la mancata configurazione di questo formato di applicazioni da parte di Apple. I browser dei maggiori fornitori, ovvero Google, Mozilla, Microsoft, Opera, punteranno molto sulla migliore compatibilità possibile del formato aperto della PWA, che porterebbe ad un immediato inserimento di questa tecnologia nell’offerta dei loro prodotti. Apple invece ha molto meno interesse a riguardo, poiché essa approfitta notevolmente dall’isolamento del proprio sistema delle applicazioni utilizzato per le piattaforme iOS e macOS e dal derivante app store.

Solo il tempo sarà in grado di dire se le applicazioni web progressive saranno realmente capaci di concorrere con le app native o meno. Le possibilità che ciò accada sono decisamente buone, grazie ai prestigiosi sostenitori. Se invece si raggiungerà mai una compatibilità piena del formato PWA con i sistemi operativi e con il browser di Apple, rimane invece un punto interrogativo. Chiaramente se il formato riceverà in futuro maggiore attenzione e consenso da parte di sviluppatori ed utenti, questo potrebbe portare ad un sostanziale, sebbene graduale, ripensamento da parte di Apple. Poiché generalmente è impossibile essere un global player, se si rinuncia completamente ad una tecnologia prominente e di successo.