Development 18. Januar 2025 7–9 Min. Lesezeit

Progressive Web Apps (PWAs): Native App-Feeling für Websites

Wie Sie Ihre Website in eine installierbare, schnelle und offlinefähige App verwandeln – mit App-Shell, Service Worker und Best Practices.

Vorteile von PWAs

  • Installierbar auf Android, iOS, Windows und macOS (Add to Home Screen, Desktop-Install)
  • Offline-fähig und resilient bei schlechter Verbindung (App-Shell + Caching-Strategien)
  • App-ähnliche UX mit Vollbild, Icon, Splash-Screen & Shortcuts
  • Geringere Entwicklungskosten & schnelleres Go-to-Market als native Apps
  • SEO-Vorteile: eine URL, indexierbar, keine Store-Listing-Hürde

In 5 Schritten zur PWA

  1. Web App Manifest

    Legen Sie manifest.webmanifest an (Name, start_url, display, background_color, theme_color, Icons in mehreren Größen).

    {
                                        "name": "Northline Demo",
                                        "short_name": "Northline",
                                        "start_url": "/?source=pwa",
                                        "display": "standalone",
                                        "background_color": "#0b1221",
                                        "theme_color": "#0b1221",
                                        "icons": [
                                            { "src": "/icons/icon-192.png", "sizes": "192x192", "type": "image/png" },
                                            { "src": "/icons/icon-512.png", "sizes": "512x512", "type": "image/png" }
                                        ]
                                        }
  2. Service Worker

    Registrieren Sie einen Service Worker, cachen Sie statische Assets und definieren Sie Fallbacks für Offline-Routen (App-Shell-Modell).

    // /sw.js (Minimalbeispiel - anpassen!)
                                        const CACHE = "nl-pwa-v1";
                                        const ASSETS = [ "/", "/css/styles.css", "/img/dashboard-mock.png" ];
    
                                        self.addEventListener("install", e => {
                                        e.waitUntil(caches.open(CACHE).then(c => c.addAll(ASSETS)));
                                        });
    
                                        self.addEventListener("fetch", e => {
                                        const { request } = e;
                                        e.respondWith(
                                            caches.match(request).then(cached => cached || fetch(request).then(resp => {
                                            // Stale-while-revalidate (einfach)
                                            const copy = resp.clone();
                                            caches.open(CACHE).then(c => c.put(request, copy)).catch(() => {});
                                            return resp;
                                            }).catch(() => caches.match("/offline.html")))
                                        );
                                        });
    // Registrierung (z. B. in main.js)
                                        if ("serviceWorker" in navigator) {
                                        window.addEventListener("load", () => {
                                            navigator.serviceWorker.register("/sw.js");
                                        });
                                        }
  3. HTTPS und sichere Herkunft

    PWAs brauchen HTTPS oder localhost. Aktivieren Sie HTTP/2/3, setzen Sie korrekte CORS/COEP/COOP-Header für moderne APIs.

  4. Performance optimieren

    Code-Splitting, Bilder in WebP/AVIF, Lazy Loading und CDN. Zielwerte: LCP < 2,5s, CLS < 0,1, INP < 200ms.

    • App-Shell schnell laden (kritisches CSS, Preload wichtiger Fonts)
    • Third-Party-Skripte auditieren & minimieren
    • RUM messen (z. B. web-vitals, Analytics-Events)
  5. UX & „Add to Home Screen“

    Zeigen Sie einen unaufdringlichen Install-Prompt und eine klare App-Navigation (Bottom-Nav, FAB, Gesten). Nutzen Sie Badging & Shortcuts.

    // Install-Prompt (Chrome/Android)
                                        let deferredPrompt;
                                        window.addEventListener("beforeinstallprompt", (e) => {
                                        e.preventDefault();
                                        deferredPrompt = e; // später per Button click auslösen
                                        });
                                        async function triggerInstall() {
                                        if (!deferredPrompt) return;
                                        deferredPrompt.prompt();
                                        const { outcome } = await deferredPrompt.userChoice;
                                        deferredPrompt = null;
                                        }

    Hinweis: iOS zeigt keinen eigenen Prompt – Nutzer über UI-Hinweis „Zum Home-Bildschirm“ leiten.

Wann lohnen sich PWAs besonders?

  • Content-Portale & News mit hoher mobiler Nutzung
  • E-Commerce mit Wiederkehrern & Push-fähigen Kampagnen
  • Interne Tools im Außendienst (Offline-Formulare, Caching)
  • Marken/Projekte ohne App-Store-Prozess oder Budget für nativ

Häufige PWA-Fehler vermeiden

  • Kein Offline-Fallback: Ohne offline.html leidet die UX bei Verbindungsproblemen.
  • Zu aggressives Caching: Veraltete Assets ohne Versionierung ⇒ Cache-Busting mit Hash/Manifest.
  • Nur Technik, keine UX: App-Shell ohne klare Navigation oder Install-Hinweis führt zu geringer Nutzung.

Schnellstart-Checkliste

  • manifest.webmanifest verlinkt & validiert
  • Service Worker registriert, Cache-Strategie definiert
  • offline.html als Fallback vorhanden
  • Bilder in WebP/AVIF, kritisches CSS inline
  • Install-Prompt (Android) & iOS-Anleitung eingebaut
  • Lighthouse PWA-Audit ≥ 90, Core Web Vitals im grünen Bereich

Sie möchten Ihre Seite schnell PWA-ready machen? → Kostenlose Erstberatung anfragen.

Wir machen Ihre Website PWA-ready

Von Manifest bis Service Worker: Wir begleiten Sie Schritt für Schritt – inkl. Lighthouse-Audit, Core-Web-Vitals-Monitoring und Rollout-Plan.

Häufige Fragen (FAQ)

Funktionieren PWAs auch auf iOS?
Ja, ab iOS 16.4 sind Web-Push für Web-Apps und verbesserte SW-Features verfügbar. Background-Sync & einige APIs sind jedoch eingeschränkt.
Wie mache ich meine Website installierbar?
Valides Manifest, Service Worker, HTTPS – dann kann der Browser den Install-Dialog anzeigen oder per Button ausgelöst werden.
Welche Core Web Vitals sind entscheidend?
LCP < 2,5 s, CLS < 0,1, INP < 200 ms. Diese Metriken sind für UX & SEO relevant und sollten kontinuierlich gemessen werden.
Ersetzt eine PWA immer native Apps?
Für viele Anwendungsfälle ja. Bei tiefem Hardware-Zugriff (Bluetooth/AR/Background-Tasks) ist nativ teils überlegen.