Salta al contenuto principale
Tutorial

Trasforma la tua PWA in un'app nativa con Capacitor

Converti una Progressive Web App esistente in un'app mobile Capacitor nativa per iOS e Android. Una guida pratica per impacchettare la tua PWA con il minimo di modifiche al code.

Trasforma la tua PWA in un'app nativa con Capacitor

Introduzione

Hai già una Progressive Web App. Funziona nei browser, ha un manifest e magari usa un service worker per il supporto offline. Se ora hai bisogno di distribuirla sugli app store, accedere alle API native del dispositivo o migliorare il funnel di onboarding, migrare a un'app Capacitor è solitamente più veloce che riscrivere il front end.

Il vantaggio principale è che mantieni quasi tutti i tuoi code web esistenti. Nella maggior parte dei casi, dovrai solo:

  • buildare gli asset web di produzione,
  • inizializza Capacitor con i parametri corretti, webDir,
  • aggiungi i progetti iOS e Android,
  • e integra i plugin nativi solo dove serve.

Se la tua PWA ha route pulite e una logica dei componenti ordinata, possono bastare poche ore.

Prerequisiti

Tempo stimato: 2-5 ore, a seconda delle funzionalità specifiche della piattaforma.

  • Node.js 18+ con Bun
  • il tuo codice sorgente PWA esistente code (React, Vue, Angular, Svelte, ecc.)
  • Xcode (solo per iOS e macOS)
  • Android Studio (per Android)
  • Account Apple Developer se intendi pubblicare su iOS
  • Account Google Play Developer per la distribuzione su Android

Passaggio 1: Verifica la tua PWA prima del wrapping nativo

Prima di eseguire bunx cap init, verifica che la tua web app sia pronta per la produzione:

  1. Assicurati che la tua PWA abbia uno script di production build (es. bun run build).
  2. Conferma che la cartella di output web sia deterministica (spesso dist, build, o out).
  3. Rimuovi i redirect assoluti hard-coded che assumono un contesto solo browser.
  4. Verifica che il comportamento del service worker sia compatibile con le WebView mobile:
    • Mantieni il supporto offline se è utile ai tuoi utenti.
    • Evita le API disponibili solo nel browser che non funzionano nella webview incorporata.
  5. Controlla che i prompt di installazione PWA e la UX specifica del browser abbiano ancora senso. In un'app Capacitor, i prompt di installazione non sono solitamente necessari.

Passaggio 2: Adattare i comportamenti web-only

Keep your app UI but gate browser-only logic.

Usa un semplice controllo della piattaforma per i prompt di installazione e push:

import { Capacitor } from '@capacitor/core'

const isNative = Capacitor.isNativePlatform()

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

Questo evita l'esecuzione di logiche solo per browser all'interno del container nativo.

Passaggio 3: Inizializza Capacitor nella cartella della tua PWA

Dalla root della tua PWA esistente:

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

Esegui Capacitor init con il nome della tua app, il bundle ID e la directory di output web:

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

Se la tua cartella di build è build (Create React App) o out (Next.js static export), sostituisci dist.

Aggiungi una config di base per 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

Passaggio 4: Aggiungi le piattaforme native

Installa i pacchetti nativi core e genera le cartelle del progetto:

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

A questo punto Capacitor ha creato ios/ e android/ le cartelle. Il sync copierà i tuoi asset web compilati in entrambe le piattaforme.

Passaggio 5: Build della web app e sync

Genera la PWA e sincronizza gli asset web:

bun run build
bunx cap sync

Ora apri i progetti nativi:

bunx cap open ios
bunx cap open android

Da Xcode o Android Studio, connetti un dispositivo o emulatore ed esegui.

Passaggio 6: Miglioramenti nativi post-migrazione

In questa fase, sostituisci le funzionalità web-only con API native dove necessario:

  • Notifiche push -> @capacitor/push-notifications
  • Storage sicuro key/value -> @capacitor/preferences
  • Fotocamera / media -> @capacitor/camera
  • Autenticazione biometrica -> @capacitor-community/native-biometric (o il plugin che preferisci)

Per ogni nuovo plugin nativo:

  1. Installa il pacchetto del plugin
  2. Configura le impostazioni del plugin
  3. Esegui:
bunx cap sync

Poi fai il rebuild e riavvia.

Passaggio 7: Controllo parità App Store

Prima dell'invio:

  • Testa deep link e routing (/ e rotte profonde) su entrambe le piattaforme.
  • Verifica che status bar, safe areas e orientamento siano corretti.
  • Rimuovi i metadati web non necessari che confliggono con l'app (es. install prompt).
  • Mantieni app transport security e impostazioni privacy coerenti con la tua policy.
  • Aggiungi icone e splash screen per ogni piattaforma.

Se l'app usa aggiornamenti OTA, integra la release pipeline con una strategia di aggiornamento sicura e considera Capgo il rollout controllato e il rollback.

Checklist finale

  • La web app builda correttamente (bun run build)
  • Capacitor inizializzato con i giusti webDir
  • bunx cap add ios e bunx cap add android completato
  • Le app native girano su dispositivi reali
  • I percorsi code solo browser sono limitati per il comportamento nativo
  • Canali di update e asset degli store configurati

Hai già fatto gran parte del lavoro creando la tua PWA. Avvolgerla con Capacitor ti offre:

  • Distribuzione sugli store,
  • Accesso alle API native,
  • Iterazione più veloce senza un rewrite completo di code,
  • Un unico percorso di deployment per team web e mobile.

Parti da questo flusso, poi itera app per app basandoti su analytics e feedback degli utenti.

Continua da Trasforma la tua PWA in un'app nativa con Capacitor

Se stai usando Trasforma la tua PWA in un'app nativa con Capacitor per pianificare la migrazione e le operazioni enterprise, collegalo a Capgo Enterprise per il workflow del prodotto in Capgo Enterprise, Alternative ai plugin Ionic Enterprise per il workflow del prodotto nelle alternative ai plugin Ionic Enterprise, Alternative a Capgo per il workflow del prodotto in Capgo Alternatives, Consulenza Capgo per il workflow di prodotto in Capgo Consulting, e Supporto Premium Capgo per il workflow di prodotto in Capgo Premium Support.

Live updates per le app Capacitor

Quando un bug nel web-layer è live, rilascia la fix tramite Capgo invece di aspettare giorni l'approvazione degli store. Gli utenti ricevono l'update in background, mentre le modifiche native restano nel normale processo di review.

Ultimi articoli dal blog

Capgo ti offre gli insight migliori che ti servono per creare un'app mobile davvero professionale.