Sauter au contenu principal
Tutoriel

Transform Your PWA to a Native App with Capacitor

Convert an existing Progressive Web App into a native Capacitor mobile app for iOS and Android. A practical guide to packaging your PWA with minimal code changes.

Crédits de l'article

Martin Donadieu

Auteur

Valeria

Relecteur

Jordan

Éditeur

Transform Your PWA to a Native App with Capacitor

Introduction

Vous avez déjà une application Web progressive. Elle fonctionne dans les navigateurs, possède un manifest et utilise peut-être un service worker pour le support hors ligne. Si vous avez maintenant besoin de la distribution dans les magasins d'applications, d'API natives de dispositif ou d'un meilleur canal d'accueil, la migration vers une application Capacitor est généralement plus rapide que la reécriture de votre front-end.

Le principal avantage est que vous conservez presque tout votre contenu web existant code. Dans la plupart des cas, vous n'avez besoin que de :

  • construire des actifs web de production
  • initialiser Capacitor avec le bon webDir,
  • ajouter des projets iOS et Android
  • et câblez les plugins natifs uniquement là où nécessaire.

Si votre PWA a des routes propres et une logique de composant, cela peut prendre juste quelques heures.

Prerequisites

Temps estimé: 2-5 heures, en fonction des fonctionnalités spécifiques au plateforme.

  • Node.js 18+ avec Bun
  • Votre source PWA existante code (React, Vue, Angular, Svelte, etc.)
  • Xcode (pour iOS et macOS uniquement)
  • Android Studio (pour Android)
  • Compte Apple Developer si vous prévoyez publier sur iOS
  • Compte Google Play Developer pour la distribution Android

Étape 1 : Vérifiez votre PWA avant de l'entourer d'une application native

Avant de lancer bunx cap init, verify your web app is production-ready:

  1. Ensure your PWA has a production build script (e.g., bun run build).
  2. Confirmez que votre dossier de sortie web est déterministe (souvent dist, buildou out).
  3. Supprimez les redirigements absolus codés en dur qui supposent un contexte de navigateur uniquement.
  4. Vérifiez que le comportement du service worker est compatible avec les vues Web de mobile :
    • Conservez le support hors ligne si cela aide vos utilisateurs.
    • Évitez les API web uniquement disponibles dans le navigateur.
  5. Confirm PWA install prompts and browser-specific UX still make sense. In a Capacitor app, app install prompts are usually not needed.

Étape 2 : Adaptation des comportements web uniquement

Keep your app UI but gate browser-only logic.

Use a simple platform check around install and push prompts:

import { Capacitor } from '@capacitor/core'

const isNative = Capacitor.isNativePlatform()

function registerInstallPrompt() {
  if (isNative) return
  // existing browser-only install or Web Push code
}

Cela évite la logique spécifique au navigateur de s'exécuter à l'intérieur du conteneur natif.

Étape 3 : Initialiser Capacitor dans votre dossier PWA

À partir de votre dossier PWA existant :

bun add @capacitor/core
bun add -D @capacitor/cli

Exécutez init Capacitor avec votre nom d'application, votre ID de bundle et votre répertoire de sortie web.

bunx cap init MyPWAApp com.example.my-pwa-app --web-dir dist

Si votre dossier de build est build (Créer une application React) ou out (Export statique Next.js), remplacez dist.

Ajoutez une configuration de base Capacitor :

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

Étape 4 : Ajouter des plateformes natives

Installez les packages natifs de base et générer les dossiers de projet :

bun add @capacitor/ios @capacitor/android
bunx cap add ios
bunx cap add android

At ce stade Capacitor a créé ios/ et android/ les dossiers. La synchronisation copiera vos actifs web construits dans les deux plateformes.

Step 5: Build your web app and sync

Build the PWA and sync web assets:

bun run build
bunx cap sync

Ouvrez maintenant les projets natifs :

bunx cap open ios
bunx cap open android

À partir de Xcode ou d'Android Studio, connectez un appareil ou un émulateur et exécutez.

Étape 6 : Améliorations natives après migration

C'est ici que vous remplacez les fonctionnalités web par des API natives là où cela est nécessaire.

  • Notifications push -> @capacitor/push-notifications
  • Stockage clé/valeur sécurisé -> @capacitor/preferences
  • Médias / caméra -> @capacitor/camera
  • Authentification biométrique -> @capacitor-community/native-biometric (ou plugin de votre choix)

Pour chaque nouveau plugin natif :

  1. Installez le package du plugin
  2. Configurez les paramètres spécifiques du plugin
  3. Exécutez :
bunx cap sync

Ensuite, reconstruirez et exécutez à nouveau.

Étape 7 : Contrôles de parité de magasin d'applications

Avant la soumission :

  • Avant la soumission :/ Testez les liens profonds et la navigation (
  • et les routes profondes) sur les deux plateformes.
  • Supprimez les métadonnées web inutilisées qui entravent le comportement de l'application (par exemple, les invitations d'installation).
  • Conserver les paramètres de sécurité et de confidentialité de l'application cohérents avec votre politique.
  • Ajouter les icônes/splashes de l'application pour chaque plateforme.

Si votre application utilise des mises à jour OTA, associez votre pipeline de publication à une stratégie d'actualisation native et envisagez Capgo pour un déploiement contrôlé et un retrait.

Liste finale de vérification

  • Application web construite proprement (bun run build)
  • Capacitor initialisé avec les bons webDir
  • bunx cap add ios et bunx cap add android terminé
  • L'application native fonctionne sur des appareils réels
  • Les chemins code uniques au navigateur sont bloqués pour le comportement natif.
  • Mettez à jour les canaux et les actifs de l'application de magasin

Vous avez déjà réalisé la majeure partie du travail difficile lors de la création de votre PWA. L'ajout de Capacitor vous donne :

  • Distribution dans les magasins
  • Accès aux API natives
  • Une itération plus rapide sans une mise à jour complète de code
  • Un seul chemin de déploiement pour les équipes web et mobile

Commencez par ce flux, puis itérez native par native en fonction des données d'analyse et des retours d'usagers.

Continuez de Transformez votre PWA en application native avec Capacitor

Si vous utilisez Transformez votre PWA en application native avec Capacitor pour planifier la migration et les opérations d'entreprise, connectez-l’avec Capgo Entreprise pour le flux de produits dans Capgo Entreprise Alternatives de plugin Ionic Entreprise pour le flux de produits dans Alternatives de plugin Ionic Entreprise Capgo Alternatives pour le flux de produits dans Capgo Alternatives Capgo Conseil pour le flux de produits dans Capgo Conseil, et Capgo Support Premium pour le flux de produits dans Capgo Support Premium.

Live updates for Capacitor apps

When a web-layer bug is live, ship the fix through Capgo instead of waiting days for app store approval. Users get the update in the background while native changes stay in the normal review path.

Support humain de Martin

Démarrer maintenant

Dernières actualités de notre Blog

Capgo gives you the best insights you need to create a truly professional mobile app.