Introduzione
Se già hai una App Web Progressiva. Funziona nei browser, ha un manifesto e forse utilizza un worker di servizio per il supporto offline. Se ora hai bisogno di distribuzione negli store, API di dispositivo nativo o un miglior percorso di onboarding, migrare a un'app Capacitor è spesso più veloce che ricreare il front-end.
Il vantaggio più grande è che conservi quasi tutto il tuo web code esistente. In molti casi, hai bisogno solo di:
- costruire asset web di produzione
- inizializzare Capacitor con le impostazioni giuste
webDir, - aggiungere progetti iOS e Android
- e collegare plugin nativi solo dove necessario
Se la tua PWA ha percorsi puliti e logica di componente, ciò può richiedere solo poche ore.
Requisiti preliminari
Tempo stimato: 2-5 ore, a seconda delle caratteristiche specifiche della piattaforma.
- Node.js 18+ con Bun
- Il tuo codice PWA esistente code (React, Vue, Angular, Svelte, ecc.)
- Xcode (solo per iOS, macOS)
- Android Studio (solo per Android)
- Account di sviluppatore Apple se si prevede la pubblicazione di iOS
- Account di sviluppatore Google Play per la distribuzione Android
Step 1: Controlla il tuo PWA prima di avvolgerlo in nativo
Prima di eseguire bunx cap init, verificare che il tuo app web sia pronto per la produzione:
- Assicurati che il tuo PWA abbia uno script di build di produzione (ad esempio
bun run build). - Conferma che il tuo cartella di output web sia deterministico (spesso
dist,build, oout). - Elimina i redirect assoluti hard-coded che assumono un contesto browser solo.
- Verifica che il comportamento del worker di servizio sia compatibile con i WebViews mobili:
- Conserva il supporto offline se aiuta i tuoi utenti.
- Evita gli API browser-only che non sono disponibili nel webview incorporato.
- Conferma che le richieste di installazione PWA e l'esperienza utente specifica del browser siano ancora pertinenti. In un'app Capacitor di solito non sono necessarie le richieste di installazione dell'app.
Step 2: Adatta i comportamenti web-only
Mantieni l'interfaccia utente dell'applicazione ma blocca la logica eseguibile solo in browser.
Utilizza un controllo di piattaforma semplice intorno alle istruzioni di installazione e promemoria:
import { Capacitor } from '@capacitor/core'
const isNative = Capacitor.isNativePlatform()
function registerInstallPrompt() {
if (isNative) return
// existing browser-only install or Web Push code
}
Ciò evita che la logica eseguibile solo in browser si attivi all'interno del contenitore nativo.
Passo 3: Inizializza Capacitor nella cartella del tuo PWA
Dalla radice del tuo PWA esistente:
bun add @capacitor/core
bun add -D @capacitor/cli
Esegui Capacitor init con il nome dell'applicazione, l'ID bundle e la directory di output web:
bunx cap init MyPWAApp com.example.my-pwa-app --web-dir dist
Se il tuo cartello di build è build (Create React App) o out (Next.js static export), sostituisci dist.
Aggiungi una configurazione di 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
Passo 4: Aggiungi piattaforme native
Installa i pacchetti nativi di base e genera le cartelle del progetto:
bun add @capacitor/ios @capacitor/android
bunx cap add ios
bunx cap add android
In questo momento Capacitor ha creato ios/ e android/ cartelle. La sincronizzazione copierà i tuoi asset web costruiti in entrambe le piattaforme.
Passo 5: Costruisci il tuo'app web e sincronizza
Costruisci 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
Dal Xcode o Android Studio, collega un dispositivo o un emulatore e esegui.
Passo 6: Migrazione delle funzionalità native
Ecco dove sostituisci le funzionalità esclusivamente web con API native dove necessario:
- Notifiche push ->
@capacitor/push-notifications - Archiviazione chiave/valore sicura ->
@capacitor/preferences - Camera / media ->
@capacitor/camera - Autenticazione biometrica ->
@capacitor-community/native-biometrico plugin di scelta
Per ogni nuovo plugin nativo:
- Installa il pacchetto del plugin
- Configura le impostazioni specifiche del plugin
- Esegui:
bunx cap sync
Riavvia e esegui nuovamente.
Passo 7: Verifica della parità con l'app store
Prima della sottoscrizione:
- Testa i collegamenti profondi e la routing (
/e percorsi profondi) su entrambe le piattaforme. - Verifica che la barra dello stato, le aree sicure e l'orientamento siano corretti.
- Elimina i metadati web non utilizzati che confliggono con il comportamento dell'app (ad esempio, le istruzioni di installazione).
- Mantieni le impostazioni di sicurezza e privacy dell'app coerenti con la tua politica.
- Aggiungi icone/splash per ogni piattaforma.
Se la tua app utilizza aggiornamenti OTA, sincronizza il tuo pipeline di rilascio con una strategia di aggiornamento sicura per i nativi e considera Capgo per un rollout controllato e rollback.
Checklist finale
- Le build dell'app web si compilano correttamente (
bun run build) - Capacitor inizializzato con il
webDir bunx cap add iosgiustobunx cap add androide- completato
- Percorsi del browser solo sono bloccati per comportamento nativo code
- I canali di aggiornamento e gli asset del negozio sono configurati
Hai già fatto la maggior parte del lavoro difficile quando hai costruito la tua PWA. Avvolgendo con Capacitor ti dà:
- Distribuzione nel negozio
- Accesso a API native
- Iterazione più rapida senza una completa code ricompilazione
- Un unico percorso di distribuzione per team web e mobili
Inizia da questo flusso, poi iterare native-by-native in base alle analisi e ai feedback degli utenti