Begriff
Progressive Web App (PWA)
Warum wichtig?
Dieser Begriff ist ein Knoten im SengakujiWorks-Wissensnetz. Nutze Level 0 für die erste Einordnung, Level 1 für Praxis, Level 2 für technische Struktur und Level 3 für Grenzen, Fallstricke und Expertenkontext.
Eine Webseite, die sich wie eine App fühlt.
Du besuchst twitter.com.
Der Browser fragt: "Willst du das installieren?"
Du sagst "Ja".
Jetzt hast du ein Icon auf dem Homescreen.
Die App startet ohne Adressleiste.
Sie läuft offline (wenn du im Tunnel bist).
Sie schickt Push-Nachrichten.
Aber: Du musstest sie nicht im App Store suchen und runterladen. Es ist immer noch "nur" eine Webseite.
Merksatz: Eine Webseite, die moderne Browser-APIs (Service Workers, Manifest) nutzt, um eine Benutzererfahrung zu bieten, die der von nativen Apps ähnelt (Offline-Fähigkeit, Installation, Push-Notifications).
Du brauchst 3 Dinge:
- HTTPS: Bedingung für Sicherheit.
- Manifest.json: Eine Datei mit Icon, Name, Farben. ("Wie sehe ich als App aus?").
- Service Worker: Ein Skript, das im Hintergrund läuft und das Netzwerk kontrolliert (siehe nächster Begriff).
1. Project Fugu
Google's Initiative, dem Web alle Fähigkeiten von nativen Apps zu geben.
- Bluetooth Zugriff? Ja.
- Dateisystem Zugriff? Ja.
- USB Zugriff? Ja. Apple (iOS) bremst das oft (um den App Store zu schützen), aber Android und Desktop (Chrome) sind sehr weit.
2. TWA (Trusted Web Activity)
Du kannst deine PWA in den Google Play Store packen. Es ist eine dünne Hülle um deine Webseite. Vorteil: Du wirst im Store gefunden, musst aber nicht Java/Kotlin lernen.
1. Service Worker Lifecycle & "Wait to Update" Hell
Der absolute Albtraum in PWA-Production ist das Cache-Invalidierungs-Verhalten von Service Workern.
Ein Service Worker installiert sich, lädt Assets (HTML, JS, CSS) in die Cache Storage API, und serviert sie ab sofort netzwerkfrei.
Deployt der Entwickler eine neue Version v2.js, lädt der Browser den neuen Worker im Hintergrund runter (install-Event). Aber: Er wird in den Zustand "Waiting" versetzt! Der alte Worker behält gnadenlos die Kontrolle, bis alle Browser-Tabs der App geschlossen sind! Einfaches Neuladen (F5) reicht nicht. Das führt dazu, dass User auf einer veralteten SPA-Version festsitzen, wo API-Endpoints abwärtsinkompatibel brechen. Profis lösen das zwingend über einen UI-Refresh Banner ("Neue Version verfügbar") kombiniert mit worker.postMessage({type: 'SKIP_WAITING'}), das den wartenden Worker zwingt, den alten aggressiv im laufenden Tab zu ermorden.
2. Die Cache API vs HTTP-Cache
Browser haben bereits einen HTTP-Cache. Die PWA bringt die programmatische Cache Storage API. Das sind zwei völlig isolierte Layer!
Der Service Worker (fetch Event Listener) steht vor dem HTTP-Cache. Wenn die PWA das Caching nach dem Stale-While-Revalidate Muster implementiert (z.B. mit Google's Workbox-Bibliothek), serviert der Worker die Millisekunden-alte Datei aus dem PWA Cache. Parallel sendet er einen Request ans Internet. Das perfide: Dieser Background-Request verfängt sich oft im regulären Browser-HTTP-Cache, wenn die Cache-Control Header des Servers falsch gesetzt sind! Workbox updatet dann seinen PWA-Cache mit einem bereits "stale" Asset aus dem Browser HTTP Cache. PWA-Experten setzen daher die HTTP Cache Header bei Service-Worker verwalteten Apps oft radikal auf no-cache, um diese fatale Cache-Hierarchie-Dopplung zu zerschlagen.
3. Background Sync & Periodic Sync
Eine echte native App (wie WhatsApp) schickt die formulierte Nachricht asynchron weg, sobald der Zug wieder aus dem Tunnel fährt.
PWAs beherrschen dies mittels der Background Sync API.
Bist du offline und drückst "Senden", speichert das Frontend den JSON Payload in die IndexedDB. Danach feuert es via Service Worker registration.sync.register('sync-chat').
Du kannst den Mobile Browser nun komplett beenden (!).
Sobald das OS (Android) eine offene WLAN-Verbindung triggert, erweckt es den Service Worker geräuschlos im Hintergrund. Dieser ruft das sync Event der PWA auf, liest die IndexedDB iterativ aus und pusht die Messages ans Backend.
Quick-Check
Funktioniert das auf dem iPhone?
Ja, aber eingeschränkt. Keine Push-Notifikationen (bis iOS 16.4), komplizierte Installation ("Teilen -> Zum Home-Bildschirm"). Apple mag PWAs nicht besonders.Ersetzt es Native Apps?
Für 90% der Apps (News, Shopping, Tickets): Ja. Für High-End Spiele oder spezielle Hardware-Zugriffe: Nein.Warum "Progressive"?
Weil es auf jedem Gerät läuft ("Enhancement"). Auf einem alten Nokia ist es eine Webseite. Auf einem neuen Samsung ist es eine Super-App.