An insulated travel mug beside a wireless charging puck with a red status LED glowing, train-station motion blur behind — the visual marker for PWA accessibility in the offline-first mobile context.
Image description: An insulated travel mug beside a wireless charging puck with a red status LED glowing, train-station motion blur behind — the visual marker for PWA accessibility in the offline-first mobile context.

Engineering primer · Accessibilità PWA 2026

Progressive web app e accessibilità: lo stato dell'arte nel 2026

Dove si trovano le PWA sull'accessibilità nel 2026 — prompt di installazione, icone adattive, trasferimento screen reader web/nativo, manifest file_handlers / share_target / window_controls_overlay, comportamento offline delle tecnologie assistive e il percorso iOS Safari dopo iOS 16.4.

Progressive web app e accessibilità:
lo stato dell’arte nel 2026

Sei anni dopo che Apple ha finalmente introdotto un percorso di installazione funzionante su iOS 16.4, la progressive web app ha smesso di essere una curiosità e ha iniziato a diventare una questione di appalti. Questo primer è per i team di ingegneria che nel 2026 hanno bisogno di sapere cosa deve concretamente una PWA ai propri utenti di tecnologie assistive — e dove la piattaforma è ancora al di sotto di una vera app nativa.

2023
iOS 16.4 — primo percorso di installazione PWA utilizzabile su Safari
11
proprietà del manifest che influenzano il comportamento delle tecnologie assistive
circa 35%
PWA Lighthouse il cui pulsante di installazione risulta privo di etichetta per le tecnologie assistive
9 min di lettura
Aggiornato maggio 2026

1. Cosa significa «accessibilità PWA» nel 2026

Una progressive web app è, a runtime, tre elementi sovrapposti a un normale sito web: un Web App Manifest, un service worker e una chrome in modalità installata che sostituisce il frame del browser con la voce del task switcher del sistema operativo. Ciascuno dei tre livelli introduce le proprie obbligazioni in materia di accessibilità — e ciascuno delude i propri utenti di tecnologie assistive in modo diverso, separatamente diagnosticabile.

Nel 2020 l’intera discussione si riduceva a «WCAG si applica alle PWA», il che era tecnicamente corretto e operativamente inutile. Nel 2026 la discussione è suddivisa nelle quattro superfici che contano davvero: l’UX del prompt di installazione, le proprietà del manifest che guidano le affordance a livello di sistema operativo, il trasferimento tra l’albero di accessibilità del browser e l’albero di accessibilità del sistema operativo una volta avviata la PWA in modalità standalone, e il comportamento delle tecnologie assistive nel fallback offline del service worker. WCAG 2.2 disciplina il documento; il livello di integrazione con la piattaforma è disciplinato da un insieme molto più frammentato di bozze W3C, comportamenti specifici per vendor e convenzioni ARIA ereditate dal web.

Nota sull’ambito

Questo primer copre la superficie di integrazione con la piattaforma delle PWA — prompt di installazione, proprietà del manifest, comportamento delle tecnologie assistive in modalità standalone, fallback offline. Si presuppone che il documento sottostante soddisfi già WCAG 2.2 AA. Una PWA su una pagina inaccessibile resta una pagina inaccessibile.


2. Il prompt di installazione

Il prompt di installazione è la superficie PWA più esposta all’utente e, nel 2026, ancora quella peggio progettata. Su Chromium, il prompt è subordinato a beforeinstallprompt, che si attiva solo dopo una soglia euristica di interazione e che i siti tipicamente collegano a un pulsante personalizzato «Installa app». È quel pulsante personalizzato il punto in cui l’accessibilità va storta: circa uno su tre PWA con punteggio Lighthouse rende l’affordance di installazione come un <div> o uno <span> stilizzato senza role, senza nome accessibile e senza handler da tastiera — invisibile a uno screen reader, irraggiungibile con Tab e indistinguibile dagli elementi decorativi.

La soluzione è poco appariscente e obbligatoria: rendere l’affordance di installazione come un vero <button>, impostare un nome accessibile che includa il verbo («Installa Disability World su questo dispositivo»), esporre lo stesso pulsante a tutte le modalità di input, e annunciare il successo o il fallimento tramite una live region dopo che l’utente ha congedato il foglio di conferma a livello di sistema operativo. Lo stesso vale per gli stati di related-applications e di beforeinstallprompt dismissed — entrambi devono produrre un cambiamento di stato percepibile dalle tecnologie assistive.


3. La superficie del manifest

Il Web App Manifest è cresciuto silenziosamente tra il 2022 e il 2026, e molte delle sue proprietà più recenti hanno conseguenze dirette sull’accessibilità. La matrice che segue mappa le undici proprietà del manifest che interagiscono con le tecnologie assistive a ciò che ciascun browser fa effettivamente con esse oggi — su Chrome su Android, Safari su iOS, Edge su Windows e Firefox su desktop. Proprietà come file_handlers, share_target e window_controls_overlay non esistevano in forma significativa nel 2021; nel 2026 determinano se la PWA compare nel foglio di condivisione del sistema operativo, apre file dal file manager di sistema e rende la propria barra del titolo — tutte funzionalità che l’utente di screen reader deve essere in grado di percepire e operare.

Chrome (Android)Safari (iOS 16.4+)Edge (Windows)Firefox (desktop)
name esposto al launcher del SON/A
short_name mostrato sotto l’icona della schermata inizialeN/A
description letta dalle tecnologie assistive nella finestra di informazioni sull’appParzialeN/A
Icone mascherabili adattive (purpose: "maskable")NoN/A
lang + dir propagati alle tecnologie assistiveParzialeN/A
file_handlers — apertura dal file manager di sistemaNoN/A
share_target — compare nel foglio di condivisione del SONoN/A
window_controls_overlay acquisizione della barra del titoloN/AN/AN/A
shortcuts — menu pressione prolungata del launcherNoN/A
display_override (minimal-ui, window-controls-overlay)NoN/A
launch_handler (focus-existing)NoN/A
Trappola di window_controls_overlay

Quando una PWA adotta window_controls_overlay, acquisisce la barra del titolo del SO — inclusa la regione in cui, in un’app nativa, lo screen reader annuncerebbe automaticamente il titolo della finestra. Le app che adottano questa proprietà devono esplicitamente rendere un proprio controllo della barra del titolo focalizzabile e con etichetta per le tecnologie assistive all’interno dell’inset della safe area, altrimenti gli utenti di screen reader perdono l’unico ancoraggio visivo che indica «dove mi trovo in questa app».


4. Il trasferimento screen reader web ↔ nativo

Il singolo problema di debug più difficile nell’accessibilità PWA, nel 2026, è ciò che accade quando l’utente attraversa il confine tra la chrome PWA in modalità standalone e il sistema operativo stesso. Su Android, TalkBack legge il name del manifest quando l’utente mette a fuoco l’icona della schermata iniziale, poi passa a leggere l’albero di accessibilità in-app una volta avviata la PWA; su iOS 16.4+, VoiceOver fa lo stesso per una PWA installata ma con un’importante particolarità — il primo elemento focalizzabile dopo il lancio viene annunciato senza il contesto a livello di app che un’app iOS nativa fornirebbe attraverso il titolo UIWindow.

L’autore della PWA ha uno strumento per colmare questa lacuna: al lancio a freddo, mettere a fuoco un’intestazione o un landmark della regione principale che includa il nome dell’app nella propria etichetta accessibile, e impostare il <title> del documento su una stringa che il task switcher del SO leggerà quando l’utente scorre tra le app. Senza questo, l’utente di screen reader perde il segnale contestuale di aver cambiato applicazione — un fallimento del tipo «dove mi trovo» che non esiste per le app native.

«Nel 2024 un utente VoiceOver con tastiera Bluetooth ci ha detto, su una PWA che avevamo certificato come conforme a WCAG 2.2 AA, che non aveva idea di aver abbandonato Safari per entrare nella nostra app. Il documento era accessibile. Il trasferimento non lo era.»

— Disability World — diario di ricerca utente, ottobre 2024

5. Comportamento offline + tecnologie assistive

Quando il service worker serve una pagina di fallback offline, compaiono due modalità di fallimento specifiche per le tecnologie assistive: il focus che si trovava all’interno della pagina ora scaricata viene silenziosamente spostato sul body del documento, e la pagina offline raramente usa una live region per comunicare all’utente di screen reader cosa è appena successo. Il risultato è un utente che sente un solo annuncio del titolo della pagina offline (se è fortunato) e che altrimenti sperimenta una perdita totale di contesto.

La soluzione è trattare la transizione offline come un cambio di stato, annunciarla attraverso una regione aria-live polite, ripristinare il focus su un landmark noto nella pagina offline, e presentare un controllo «Riprova» come un vero <button> anziché il link «Ricarica» che la maggior parte dei boilerplate per service worker spedisce. Lo stesso vale per il percorso di ripristino del foreground-sync: quando la connettività viene ripristinata e il service worker svuota la coda, anche questo è un cambio di stato di cui l’utente delle tecnologie assistive deve essere informato.

Checklist del service worker

Una live region polite annuncia «Sei offline» alla transizione. Il focus viene spostato sull’intestazione principale della pagina offline. Un <button>Riprova</button> chiaramente etichettato è il primo elemento interattivo. Alla riconnessione, un secondo annuncio polite dice «Connessione ripristinata» e il focus viene ripristinato sull’elemento con cui l’utente stava interagendo.


6. iOS Safari vs Android vs nativo

La questione «conviene distribuire una PWA o un’app nativa» ha ora una dimensione di accessibilità oltre che una di completezza funzionale. Di seguito, viene confrontata la stessa ipotetica app di lettura notizie distribuita in quattro modi — come PWA su Android, come PWA su iOS 16.4+, come app iOS nativa e come app Android nativa — sulle cinque superfici che un utente di screen reader tocca per prime.

PWA · AndroidPWA · iOS 16.4+Nativo · iOSNativo · Android
Affordance di installazione scopribile dalle tecnologie assistiveSe lo sviluppatore l’ha implementata correttamenteMenu Aggiungi alla schermata iniziale — scopribileApp Store — completamente accessibilePlay Store — completamente accessibile
Nome app + descrizione sull’icona del launcherSì (name + apple-mobile-web-app-title)Sì (UIKit Info.plist)Sì (manifest Android)
Icone adattive (tematizzate / monocromatiche)Sì (maskable)No
Contesto del task switcher annunciatoParzialeSì (titolo UIWindow)
Voce nel foglio di condivisione del SOSì (share_target)NoSì (UIActivity)Sì (Intent filter)
Scorciatoie con pressione prolungataSì (shortcuts)NoSì (UIApplicationShortcutItem)
Contenuto accessibile delle notifiche pushSì (da iOS 16.4)
Rotor personalizzato / navigazione rapidaN/AN/A
Il gap iOS nel 2026

iOS 16.4 ha sbloccato il percorso di installazione, le notifiche push e l’API di badging per le PWA, e iOS 17 ha ridotto ulteriormente il divario sulla superficie di lancio di base. Tuttavia file_handlers, share_target, shortcuts e window_controls_overlay rimangono non supportati. Per un utente delle tecnologie assistive che fa affidamento sul foglio di condivisione del SO per spostare contenuti tra le app, una PWA su iOS è ancora una superficie significativamente più ridotta rispetto a una PWA su Android o a un’app iOS nativa.


Conclusione: il playbook del 2026

Distribuire l’affordance di installazione come un vero <button> con un nome accessibile. Collegare una live region polite all’esito di userChoice. Compilare name, short_name, description, lang e dir nel manifest, e distribuire icone maskable per Android. Se si adotta window_controls_overlay, rendere e etichettare la propria barra del titolo; se si adotta file_handlers o share_target, trattare il lancio risultante come un cambio di stato e annunciarlo all’ingresso.

Ripristinare il focus su un landmark etichettato ogni volta che l’utente di screen reader attraversa il confine — primo lancio, ritorno dal task switcher, transizione offline, lancio da share target, riconnessione. Trattare ogni attraversamento come un evento discreto che deve all’utente un annuncio percepibile e un ancoraggio di focus noto. Niente di tutto ciò è difficile; quasi nulla viene distribuito in modo coerente.

Una PWA nel 2026 può essere quasi indistinguibile da un’app nativa per un utente di tecnologie assistive — su Android. Su iOS è più vicina di quanto fosse, ma presenta ancora un gap reale. Il gap si chiude approssimativamente a una proprietà del manifest per anno. Per i team di appalti che scelgono tra una PWA e un’app nativa, la questione dell’accessibilità non è più «una PWA può essere accessibile?» — può esserlo. La domanda è se il team che la costruisce abbia letto le undici righe del manifest sopra riportate e accettato che ciascuna fa parte del loro deliverable.

«Una PWA non esonera un team dal lavoro di integrazione con la piattaforma. Aggiunge undici nuove superfici di accessibilità e chiede al team di gestirne ciascuna su ogni piattaforma su cui viene distribuita.»

— Disability World — redazione tecnica