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:
- Assicurati che la tua PWA abbia uno script di production build (es.
bun run build). - Conferma che la cartella di output web sia deterministica (spesso
dist,build, oout). - Rimuovi i redirect assoluti hard-coded che assumono un contesto solo browser.
- 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.
- 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:
- Installa il pacchetto del plugin
- Configura le impostazioni del plugin
- 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 iosebunx cap add androidcompletato- 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.