Einführung
Sie haben bereits eine Progressive Web App. Sie funktioniert in Browsers, hat eine Manifestdatei und verwendet vielleicht einen Service-Worker für Offline-Unterstützung. Wenn Sie nun eine Verteilung in App-Stores, native Geräte-APIs oder eine bessere Onboarding-Funnel benötigen, ist die Migration zu einer Capacitor-App in der Regel schneller als das Neuimplementieren Ihres Frontends.
Der größte Vorteil ist, dass Sie fast alle Ihrer bestehenden Web code beibehalten. In den meisten Fällen benötigen Sie nur:
- Produktionsweb-Assets erstellen
- initialisiere Capacitor richtig ein
webDir, - föge iOS- und Android-Projekte hinzu,
- und verbinde native Plugins nur an den notwendigen Stellen.
Wenn Ihre PWA saubere Routen und Komponentenlogik hat, kann dies nur wenige Stunden dauern.
Voraussetzungen
Geschätzte Zeit: 2-5 Stunden, abhängig von plattform-spezifischen Funktionen.
- Node.js 18+ mit Bun
- Ihr bestehendes PWA-Quellcode code (React, Vue, Angular, Svelte usw.)
- Xcode (für iOS, macOS nur)
- Android Studio (für Android)
- Ein Apple-Entwicklerkonto, wenn Sie iOS veröffentlichen planen
- Ein Google Play-Entwicklerkonto für die Android-Verteilung
Schritt 1: Überprüfen Sie Ihre PWA, bevor Sie sie in native umhüllen
Bevor Sie starten bunx cap init, überprüfen Sie, ob Ihre Webanwendung bereit für die Produktion ist:
- Stellen Sie sicher, dass Ihre PWA eine Produktionsbuild-Script (z.B.
bun run build). - Bestätigen Sie, dass Ihr Web-Output-Ordner deterministisch ist (oft
dist,buildoderout). - Entfernen Sie hartcodierte absolute Umleitungen, die an einen Browser-only-Kontext annehmen
- Überprüfen Sie, ob die Verhaltensweise des Service-Workers mit mobilen WebViews kompatibel ist:
- Behalten Sie die Offline-Funktion bei, wenn sie Ihren Benutzern hilft.
- Vermeiden Sie Browser-Only-APIs, die in der eingebetteten WebView nicht verfügbar sind.
- Bestätigen Sie, dass die PWA-Install-Anfragen und die Browser-spezifische Benutzeroberfläche noch Sinn ergeben. In einer Capacitor-Anwendung werden Install-Anfragen normalerweise nicht benötigt.
Schritt 2: Anpassen Sie Web-only-Verhaltensweisen
Behalten Sie Ihre App-UI bei, aber blockieren Sie Browser-only-Logik.
Verwenden Sie eine einfache Plattformprüfung bei Install- und Push-Anfragen:
import { Capacitor } from '@capacitor/core'
const isNative = Capacitor.isNativePlatform()
function registerInstallPrompt() {
if (isNative) return
// existing browser-only install or Web Push code
}
Dies vermeidet Browser-only-Logik, die innerhalb des nativen Containers ausgelöst wird.
Schritt 3: Initialisieren Sie Capacitor in Ihrem PWA-Ordner
Von Ihrem bestehenden PWA-Root:
bun add @capacitor/core
bun add -D @capacitor/cli
Führen Sie Capacitor init mit Ihrem App-Namen, Bundle-ID und Web-Ausgabeverzeichnis aus:
bunx cap init MyPWAApp com.example.my-pwa-app --web-dir dist
Wenn Ihr Build-Ordner build (Create React App) oder out (Next.js statische Exportierung), ersetzen dist.
Add a basic Capacitor config:
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
Installieren Sie die Kern-Native-Pakete und generieren Sie Projektordner:
Zum Zeitpunkt der Erstellung hat __CAPGO_KEEP_0__ bereits
bun add @capacitor/ios @capacitor/android
bunx cap add ios
bunx cap add android
At this point Capacitor has created ios/ Ordner erstellt. Die Synchronisierung kopiert Ihre gebauten Web-Assets in beide Plattformen. android/ Schritt 5: Bauen Sie Ihre Web-Anwendung und synchronisieren Sie
Bauen Sie die PWA und synchronisieren Sie Web-Assets:
Öffnen Sie nun native Projekte:
bun run build
bunx cap sync
Von Xcode oder Android Studio aus, verbinden Sie ein Gerät oder einen Emulator und starten Sie.
bunx cap open ios
bunx cap open android
Schritt 6: Verbinden Sie Ihr Gerät oder einen Emulator und starten Sie
Schritt 6: Native-Erweiterungen nach der Migration
Hier ersetzen Sie Web-only-Funktionen durch native APIs, wo nötig:
- Push-Benachrichtigungen ->
@capacitor/push-notifications - Sichere Schlüssel/Wert-Speicherung ->
@capacitor/preferences - Kamera/Medien ->
@capacitor/camera - Biometrische Authentifizierung ->
@capacitor-community/native-biometric(oder Plugin Ihrer Wahl)
Für jeden neuen native-Plugin:
- Installieren Sie das Plugin-Paket
- Konfigurieren Sie Plugin-spezifische Einstellungen
- Dann:
bunx cap sync
Rebuild und starten Sie erneut.
Schritt 7: App-Store-Paritätstests
Bevor die Einreichung:
- Testiere tiefere Links und Routing (
/und tiefere Routen) auf beiden Plattformen. - Überprüfe, ob die Statusleiste, die sicheren Bereiche und die Orientierung korrekt sind.
- Entferne nicht verwendete Web-only-Metadaten, die sich mit der App-Verhaltensweise überschneiden (z. B. Installationsanfragen).
- Halte die App-Transport-Sicherheit und -Privatsphäre-Einstellungen konsistent mit Ihrer Richtlinie.
- Füge App-Ikons/Splash-Assets für jede Plattform hinzu.
Wenn Ihre App OTA-Updates verwendet, paare Sie Ihren Release-Pipeline mit einer nativ-sicheren Update-Strategie und überlege, Capgo für einen kontrollierten Rollout und Rollback.
Abschließende Überprüfungsliste
- Web app builds sauber (
bun run build) - Capacitor wurde mit der richtigen
webDir bunx cap add iosundbunx cap add androidabgeschlossen- NATIVE Apps laufen auf echten Geräten
- Browser-only code Pfade werden für natives Verhalten gesperrt
- Update-Kanäle und App-Store-Assets sind konfiguriert
Sie haben bereits die meisten harten Arbeit geleistet, als Sie Ihre PWA gebaut haben. Wenn Sie sie mit Capacitor umhüllen, erhalten Sie:
- Vertrieb in den Stores
- Zugriff auf native APIs
- Schnellere Iteration ohne vollständige code-Überschreibung
- Eine einzige Bereitstellungsroute für Web- und Mobilteams
Starten Sie mit diesem Flow und iterieren Sie dann native-by-native basierend auf Analysen und Benutzerfeedback.