Einführung
Du hast bereits eine Progressive Web App. Sie läuft im Browser, besitzt ein Manifest und nutzt vielleicht einen Service Worker für Offline-Support. Wenn du jetzt App-Store-Distribution, native Device-APIs oder einen besseren Onboarding-Funnel brauchst, ist die Migration zu einer Capacitor App meist schneller, als dein Frontend neu zu schreiben.
Der größte Vorteil ist, dass du fast deinen gesamten bestehenden Web-code behältst. In den meisten Fällen musst du nur:
- Web-Assets für Production builden,
- Initialisiere Capacitor mit dem richtigen
webDir, - iOS- und Android-Projekte hinzufügen,
- und native Plugins nur dort einbinden, wo nötig.
Wenn deine PWA saubere Routen und Komponentenlogik hat, kann das nur ein paar Stunden dauern.
Voraussetzungen
Geschätzte Dauer: 2–5 Stunden, je nach plattformspezifischen Features.
- Node.js 18+ mit Bun
- Deine bestehende PWA-Quelle code (React, Vue, Angular, Svelte usw.)
- Xcode (nur für iOS, macOS)
- Android Studio (für Android)
- Apple Developer-Konto, falls du iOS veröffentlichen möchtest
- Google Play Developer-Konto für die Android-Verteilung
Schritt 1: PWA vor dem Native-Wrapping prüfen
Bevor du ausführst bunx cap init, ob deine Web-App produktionsreif ist:
- Stelle sicher, dass deine PWA ein Production-Build-Skript hat (z. B.
bun run build). - Prüfe, dass dein Web-Output-Ordner deterministisch ist (oft
dist,build, oderout). - Entferne hartkodierte absolute Redirects, die einen reinen Browser-Kontext voraussetzen.
- Prüfe, ob das Service-Worker-Verhalten mit mobilen WebViews kompatibel ist:
- Behalte Offline-Support bei, wenn er deinen Nutzern hilft.
- Vermeide Browser-only-APIs, die im eingebetteten WebView nicht verfügbar sind.
- Prüfe, ob PWA-Install-Prompts und browser-spezifische UX noch sinnvoll sind. In einer Capacitor-App sind App-Install-Prompts in der Regel nicht nötig.
Schritt 2: Web-only-Verhalten anpassen
Behalte die App-UI bei, aber schalte browser-spezifische Logik ab.
Nutze eine einfache Plattformprüfung für Install- und Push-Prompts:
import { Capacitor } from '@capacitor/core'
const isNative = Capacitor.isNativePlatform()
function registerInstallPrompt() {
if (isNative) return
// existing browser-only install or Web Push code
}
So wird verhindert, dass browser-spezifische Logik im nativen Container ausgeführt wird.
Schritt 3: Capacitor im PWA-Ordner initialisieren
Aus Ihrem bestehenden PWA-Root-Verzeichnis:
bun add @capacitor/core
bun add -D @capacitor/cli
Führen Sie Capacitor init mit Ihrem App-Namen, Bundle-ID und Web-Output-Verzeichnis aus:
bunx cap init MyPWAApp com.example.my-pwa-app --web-dir dist
Falls Ihr Build-Ordner build (Create React App) oder out (Next.js static export), ersetze dist.
Füge eine einfache Capacitor-Config hinzu:
import type { CapacitorConfig } from '@capacitor/cli'
const config: CapacitorConfig = {
appId: 'com.example.my-pwa-app',
appName: 'MyPWAApp',
webDir: 'dist',
server: {
iosScheme: 'https',
},
}
export default config
Schritt 4: Native Plattformen hinzufügen
Installiere die nativen Core-Packages und generiere die Projektordner:
bun add @capacitor/ios @capacitor/android
bunx cap add ios
bunx cap add android
An diesem Punkt hat Capacitor ios/ und android/ Ordner erstellt. Beim Sync werden deine gebauten Web-Assets in beide Plattformen kopiert.
Schritt 5: Web-App bauen und syncen
Baue die PWA und synce die Web-Assets:
bun run build
bunx cap sync
Öffne nun die nativen Projekte:
bunx cap open ios
bunx cap open android
Verbinde in Xcode oder Android Studio ein Gerät oder einen Emulator und starte die App.
Schritt 6: Native Erweiterungen nach der Migration
Hier ersetzen Sie web-spezifische Funktionen bei Bedarf durch native APIs:
- Push-Benachrichtigungen ->
@capacitor/push-notifications - Sichere Key/Value-Speicherung ->
@capacitor/preferences - Kamera / Medien ->
@capacitor/camera - Biometrische Authentifizierung ->
@capacitor-community/native-biometric(oder Plugin nach Wahl)
Für jedes neue native Plugin:
- Plugin-Paket installieren
- Plugin-spezifische Einstellungen konfigurieren
- Führe aus:
bunx cap sync
Dann neu bauen und erneut ausführen.
Schritt 7: App-Store-Paritäts-Checks
Vor der Einreichung:
- Deep Links und Routing (
/und Deep Routes) auf beiden Plattformen testen. - Sicherstellen, dass Statusleiste, Safe Areas und Orientierung korrekt sind.
- Nicht genutzte, nur für Web relevante Metadaten entfernen, die mit dem App-Verhalten kollidieren (z. B. Installationsaufforderungen).
- App Transport Security- und Datenschutz-Einstellungen mit Ihrer Richtlinie abstimmen.
- App-Icons und Splash-Assets für jede Plattform hinzufügen.
Wenn Ihre App OTA-Updates verwendet, kombinieren Sie Ihre Release-Pipeline mit einer nativ sicheren Update-Strategie und erwägen Sie Capgo für kontrolliertes Rollout und Rollback.
Abschließende Checkliste
- Web-App baut fehlerfrei (
bun run build) - Capacitor mit dem richtigen
webDir bunx cap add iosundbunx cap add androidabgeschlossen- Native Apps laufen auf echten Geräten
- Nur-Browser-code-Pfade sind für natives Verhalten abgesichert
- Update-Channels und App-Store-Assets sind konfiguriert
Die meiste Arbeit hast du beim Erstellen deiner PWA schon erledigt. Das Wrapping mit Capacitor gibt dir:
- Store-Distribution,
- Zugriff auf native APIs,
- Schnellere Iterationen ohne kompletten code-Rewrite,
- Einen Deployment-Pfad für Web- und Mobile-Teams.
Starten Sie mit diesem Flow und iterieren Sie dann nativ basierend auf Analytics und User-Feedback.
Weiter geht's: Von der PWA zur nativen App mit Capacitor
Wenn du es nutzt Verwandle deine PWA mit Capacitor in eine Native App um Migration und Enterprise-Betrieb zu planen, verbinde es mit Capgo Enterprise für den Produkt-Workflow in Capgo Enterprise, Ionic Enterprise Plugin-Alternativen für den Produkt-Workflow in Ionic Enterprise Plugin-Alternativen, Capgo Alternativen für den Produkt-Workflow in Capgo Alternativen, Capgo Beratung für den Produkt-Workflow in Capgo Consulting und Capgo Premium-Support für den Produkt-Workflow in Capgo Premium Support.