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 · PWA-toegankelijkheid 2026

Progressive web apps en toegankelijkheid: de stand van zaken in 2026

Waar progressive web apps in 2026 staan op het gebied van toegankelijkheid — install-prompt UX, adaptieve iconen, schermlezer-overdracht web-naar-native, manifest-eigenschappen file_handlers / share_target / window_controls_overlay, offline AT-gedrag en het iOS Safari-installatiepad na iOS 16.4.

Progressive web apps en toegankelijkheid:
de stand van zaken in 2026

Zes jaar nadat Apple eindelijk een werkbaar installatiepad op iOS 16.4 opleverde, is de progressive web app opgehouden een curiositeit te zijn en een aanbestedingsvraag geworden. Dit primer is bedoeld voor engineeringteams die in 2026 precies willen weten wat een PWA aan gebruikers van hulptechnologie verschuldigd is — en waar het platform nog tekortschiet ten opzichte van een echte native app.

2023
iOS 16.4 — eerste bruikbaar PWA-installatiepad op Safari
11
manifest-eigenschappen die het gedrag van hulptechnologie beïnvloeden
ca. 35%
Lighthouse-PWA’s waarvan de installatieknop ongelabeld is voor hulptechnologie
9 min lezen
Bijgewerkt mei 2026

1. Wat “PWA-toegankelijkheid” betekent in 2026

Een progressive web app bestaat tijdens uitvoering uit drie lagen bovenop een gewone website: een Web App Manifest, een service worker en een in geïnstalleerde modus werkende schil die de browser vervangen door de eigen taakwisselaar van het besturingssysteem. Elk van die drie lagen introduceert eigen toegankelijkheidsverplichtingen — en elk mislukt zijn gebruikers van hulptechnologie op een andere, afzonderlijk debuggbare manier.

In 2020 luidde het volledige debat: “WCAG is van toepassing op PWA’s” — technisch correct, operationeel nutteloos. In 2026 is het debat opgesplitst in de vier vlakken die er werkelijk toe doen: de install-prompt UX, de manifest-eigenschappen die OS-niveau-functies aansturen, de overdracht tussen de toegankelijkheidsboom van de browser en die van het besturingssysteem zodra de PWA in standalone-modus wordt gestart, en het gedrag van hulptechnologie bij de offline-terugvalmodus van de service worker. WCAG 2.2 regelt het document; de platform-integratielaag wordt bepaald door een veel lappiger geheel van W3C-concepten, leverancierspecifiek gedrag en ARIA-conventies die van het web zijn overgenomen.

Toepassingsgebied

Dit primer behandelt het platform-integratievlak van PWA’s — install-prompts, manifest-eigenschappen, gedrag van hulptechnologie in standalone-modus, offline terugval. Er wordt van uitgegaan dat het onderliggende document reeds voldoet aan WCAG 2.2 AA. Een PWA-wrapper om een ontoegankelijke pagina heen blijft een ontoegankelijke pagina.


2. De install-prompt

De install-prompt is het meest gebruikersgerichte PWA-vlak en in 2026 nog steeds het slechtst gebouwde. Op Chromium wordt de prompt bewaakt door beforeinstallprompt, die pas afvuurt na een heuristische betrokkenheidsdrempel en die sites doorgaans koppelen aan een aangepaste knop “App installeren”. Juist bij die aangepaste knop gaat het mis met toegankelijkheid: bij ruwweg één op drie Lighthouse-scorende PWA’s verschijnt het installatie-element als een <div> of een gestylde <span> zonder role, zonder toegankelijke naam en zonder toetsenbordhandler — onzichtbaar voor een schermlezer, niet bereikbaar via Tab, en niet te onderscheiden van decoratief chrome.

De oplossing is onopvallend en verplicht: render het installatie-element als een echte <button>, stel een toegankelijke naam in die het werkwoord bevat (“Disability World op dit apparaat installeren”), maak dezelfde knop beschikbaar voor alle invoermodaliteiten, en kondig succes of mislukking aan via een live-regio nadat de gebruiker het bevestigingsscherm van het OS heeft gesloten. Hetzelfde geldt voor de staten na het verwerpen van related-applications en beforeinstallprompt — beide moeten een statuswijziging opleveren die door hulptechnologie waarneembaar is.


3. Het manifest-oppervlak

Het Web App Manifest groeide stilletjes tussen 2022 en 2026, en veel van de nieuwere eigenschappen hebben directe gevolgen voor toegankelijkheid. De matrix hieronder brengt de elf manifest-eigenschappen in kaart die een wisselwerking hebben met hulptechnologie en toont wat elke browser er vandaag daadwerkelijk mee doet — in Chrome op Android, Safari op iOS, Edge op Windows en Firefox op desktop. Eigenschappen als file_handlers, share_target en window_controls_overlay bestonden in 2021 nauwelijks; in 2026 bepalen ze of de PWA verschijnt in het deelmenu van het OS, bestanden opent vanuit de bestandsbeheerder van het systeem en een eigen titelbalk toont — elk vlak dat de schermlezer-gebruiker moet kunnen waarnemen en bedienen.

Chrome (Android)Safari (iOS 16.4+)Edge (Windows)Firefox (desktop)
name zichtbaar voor OS-launcherJaJaJaN.v.t.
short_name getoond onder startscherm-icoonJaJaJaN.v.t.
description gelezen door hulptechnologie in app-infodialoogJaGedeeltelijkJaN.v.t.
Adaptieve maskeerbare iconen (purpose: "maskable")JaNeeJaN.v.t.
lang + dir worden doorgegeven aan hulptechnologieJaGedeeltelijkJaN.v.t.
file_handlers — openen vanuit systeembestandsbeheerderJaNeeJaN.v.t.
share_target — verschijnt in OS-deelmenuJaNeeJaN.v.t.
window_controls_overlay titelbalk-overnameN.v.t.N.v.t.JaN.v.t.
shortcuts — lang-indrukken van launcher-menuJaNeeJaN.v.t.
display_override (minimal-ui, window-controls-overlay)JaNeeJaN.v.t.
launch_handler (focus-existing)JaNeeJaN.v.t.
window_controls_overlay-val

Wanneer een PWA kiest voor window_controls_overlay, neemt deze de OS-titelbalk over — inclusief het gebied waar een native app de schermlezersoftware automatisch de venstertitel laat aankondigen. Apps die deze eigenschap inschakelen, moeten expliciet een eigen focusbare, gelabelde titelbalkelement renderen binnen de safe-area inset, anders verliezen schermlezer-gebruikers het enige anker op het scherm voor “waar ben ik in deze app”.


4. De web ↔ native schermlezer-overdracht

Het moeilijkst te debuggen probleem bij PWA-toegankelijkheid in 2026 is wat er gebeurt wanneer de gebruiker de naad passeert tussen de chrome van de PWA in standalone-modus en het besturingssysteem zelf. Op Android leest TalkBack de manifest-name wanneer de gebruiker het startscherm-icoon focust, en schakelt daarna over naar de in-app-toegankelijkheidsboom zodra de PWA wordt gestart; op iOS 16.4+ doet VoiceOver hetzelfde voor een geïnstalleerde PWA, maar met één belangrijk voorbehoud — het eerste focusbare element na het starten wordt aangekondigd zonder de appniveaucontext die een native iOS-app via zijn UIWindow-titel zou bieden.

De PWA-auteur heeft één middel om dit gat te overbruggen: focus bij koude start een kop of hoofdlandmark dat de appnaam bevat in zijn toegankelijk label, en stel de <title> van het document in op een tekenreeks die de taakwisselaar van het OS leest wanneer de gebruiker tussen apps schakelt. Zonder dit verliest de schermlezer-gebruiker de contextuele aanwijzing dat er van applicatie is gewisseld — een fout van het type “waar ben ik” die bij native apps niet bestaat.

”In 2024 vertelde een Bluetooth-toetsenbord-VoiceOver-gebruiker ons, over een PWA die wij tot WCAG 2.2 AA hadden gecertificeerd, dat hij totaal niet wist dat hij uit Safari was overgestapt naar onze app. Het document was toegankelijk. De overdracht niet.”

Disability World user-research diary, oktober 2024

5. Offline en gedrag van hulptechnologie

Wanneer de service worker een offline-terugvalpagina serveert, doen zich twee hulptechnologie-specifieke storingen voor: de focus die binnen de nu verwijderde pagina zat, valt stil weg naar de document-body, en de offline-pagina zelf gebruikt zelden een live-regio om de schermlezer-gebruiker te vertellen wat er zojuist is gebeurd. Het resultaat is een gebruiker die één aankondiging van de titel van de offline-pagina hoort (als hij geluk heeft) en verder een volledig contextverlies ervaart.

De oplossing is de offline-overgang als een statuswijziging te behandelen, deze aan te kondigen via een beleefde aria-live-regio, de focus te herstellen naar een bekend landmark op de offline-pagina, en een “Opnieuw proberen”-bediening als echte knop aan te bieden in plaats van de “Herladen”-link die de meeste service-worker-boilerplates meesturen. Hetzelfde geldt voor het herstelpad na achtergrond-synchronisatie: wanneer de verbinding terugkeert en de service worker de wachtrij leegmaakt, is dat eveneens een statuswijziging waarvan de hulptechnologie-gebruiker op de hoogte moet worden gesteld.

Checklist voor service workers

Een beleefde live-regio kondigt “U bent offline” aan bij de overgang. De focus wordt verplaatst naar de hoofdkop van de offline-pagina. Een duidelijk gelabelde <button>Opnieuw proberen</button> is het eerste interactieve element. Bij herstel van de verbinding volgt een tweede beleefde aankondiging “Verbinding hersteld” en wordt de focus teruggezet naar de positie waar de gebruiker mee bezig was.


6. iOS Safari versus Android versus native

De vraag “moeten we een PWA of een native app uitleveren?” heeft nu naast een functionaliteitsdimensie ook een toegankelijkheidsdimensie. Hieronder vergelijken we dezelfde hypothetische nieuwslezer-app op vier manieren — als PWA op Android, als PWA op iOS 16.4+, als native iOS-app en als native Android-app — op de vijf vlakken die een schermlezer-gebruiker als eerste aanraakt.

PWA · AndroidPWA · iOS 16.4+Native · iOSNative · Android
Installatiemogelijkheid vindbaar voor hulptechnologieAls de ontwikkelaar het goed heeft gedaanMenu Toevoegen aan beginscherm — vindbaarApp Store — volledig toegankelijkPlay Store — volledig toegankelijk
Appnaam + beschrijving op launcher-icoonJaJa (name + apple-mobile-web-app-title)Ja (UIKit Info.plist)Ja (Android manifest)
Adaptieve iconen (thema / monochroom)Ja (maskeerbaar)NeeJaJa
Taakwisselaar-context aangekondigdJaGedeeltelijkJa (UIWindow-titel)Ja
Vermelding in OS-deelmenuJa (share_target)NeeJa (UIActivity)Ja (Intent filter)
Snelkoppelingen bij lang indrukkenJa (shortcuts)NeeJa (UIApplicationShortcutItem)Ja
Toegankelijke inhoud van pushmeldingenJaJa (sinds iOS 16.4)JaJa
Aangepaste rotor / snelle navigatieN.v.t.N.v.t.JaJa
Het iOS-gat in 2026

iOS 16.4 ontsloot het installatiepad, pushmeldingen en de badging-API voor PWA’s, en iOS 17 verkleinde het gat verder op het basisopstartvlak. Maar file_handlers, share_target, shortcuts en window_controls_overlay blijven niet ondersteund. Voor een hulptechnologie-gebruiker die het OS-deelmenu gebruikt om inhoud tussen apps te verplaatsen, is een PWA op iOS nog steeds een beduidend kleiner vlak dan een PWA op Android of een native iOS-app.


Conclusie: het stappenplan voor 2026

Lever het installatie-element als een echte <button> met een toegankelijke naam. Koppel een beleefde live-regio aan de uitkomst van userChoice. Vul name, short_name, description, lang en dir in het manifest in, en lever maskeerbare iconen voor Android. Als gekozen wordt voor window_controls_overlay, render en label dan een eigen titelbalk; als gekozen wordt voor file_handlers of share_target, behandel de daaruit voortvloeiende start als een statuswijziging en kondigt deze aan bij binnenkomst.

Herstel de focus naar een gelabeld landmark elke keer dat de schermlezer-gebruiker de naad passeert — eerste start, terugkeer via de taakwisselaar, offline-overgang, start via share-target, herstel van verbinding. Behandel elke overgang als een afzonderlijk evenement dat de gebruiker een waarneembare aankondiging en een bekend focusanker verschuldigd is. Niets hiervan is ingewikkeld; bijna niets ervan wordt consequent geleverd.

Een PWA in 2026 kan voor een hulptechnologie-gebruiker vrijwel niet te onderscheiden zijn van een native app — op Android. Op iOS is het dichter dan voorheen, maar er bestaat nog een reëel gat. Dat gat sluit zich met ongeveer één manifest-eigenschap per jaar. Voor aanbestedingsteams die kiezen tussen een PWA en een native app is de toegankelijkheidsvraag niet langer “kan een PWA toegankelijk zijn?” — dat kan. De vraag is of het team dat hem bouwt, de elf manifest-rijen hierboven heeft gelezen en heeft geaccepteerd dat elk ervan deel uitmaakt van het te leveren werk.

”Een PWA-wrapper ontslaat een team niet van het platform-integratiewerk. Het voegt elf nieuwe toegankelijkheidsvlakken toe en vraagt het team elk ervan op elk platform waarnaar het levert te verwerken.”

— Disability World engineering desk