Saltar al contenido principal
Tutorial

Transforma tu PWA en una app nativa con Capacitor

Convierte una Progressive Web App existente en una app móvil nativa de Capacitor para iOS y Android. Una guía práctica para empaquetar tu PWA con cambios mínimos en code.

Transforma tu PWA en una App Nativa con Capacitor Capgo ilustración de blog

Introducción

Ya tienes una Progressive Web App. Funciona en navegadores, tiene un manifest y quizás usa un service worker para soporte offline. Si ahora necesitas distribución en tiendas, APIs nativas o un mejor onboarding, migrar a una app con Capacitor suele ser más rápido que reescribir tu frontend.

La mayor ventaja es que conservas casi todo tu code web actual. En la mayoría de los casos, solo necesitas:

  • compilar los assets web de producción,
  • inicializa Capacitor con la configuración correcta webDir,
  • añade proyectos de iOS y Android,
  • e integra plugins nativos solo donde haga falta.

Si tu PWA tiene rutas limpias y una lógica de componentes clara, esto puede llevar solo unas horas.

Requisitos

Tiempo estimado: 2-5 horas, según las funciones específicas de cada plataforma.

  • Node.js 18+ con Bun
  • El código fuente de tu PWA actual code (React, Vue, Angular, Svelte, etc.)
  • Xcode (solo para iOS y macOS)
  • Android Studio (para Android)
  • Cuenta de Apple Developer si planeas publicar en iOS
  • Cuenta de Google Play Developer para distribuir en Android

Paso 1: Revisa tu PWA antes de convertirla a nativa

Antes de ejecutar bunx cap init, verifica que tu web app esté lista para producción:

  1. Asegúrate de que tu PWA tenga un script de build de producción (ej., bun run build).
  2. Confirma que la carpeta de salida web sea determinista (normalmente dist, build, o out).
  3. Elimina redirecciones absolutas hard-coded que asuman un contexto de solo navegador.
  4. Verifica que el comportamiento del service worker sea compatible con WebViews móviles:
    • Mantén el soporte offline si ayuda a tus usuarios.
    • Evita APIs exclusivas del navegador que no estén disponibles en la webview embebida.
  5. Los prompts de instalación de PWA y la UX específica del navegador siguen siendo relevantes. En una app con Capacitor, los prompts de instalación no suelen ser necesarios.

Paso 2: Adaptar comportamientos web

Keep your app UI but gate browser-only logic.

Usa un check de plataforma sencillo para los prompts de instalación y push:

import { Capacitor } from '@capacitor/core'

const isNative = Capacitor.isNativePlatform()

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

Esto evita que se ejecute lógica exclusiva del navegador dentro del contenedor nativo.

Paso 3: Inicializar Capacitor en tu carpeta PWA

Desde la raíz de tu PWA actual:

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

Ejecuta Capacitor init con el nombre de tu app, bundle ID y el directorio de salida web:

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

Si tu carpeta de build es build (Create React App) o out (Next.js static export), reemplaza dist.

Añade una config básica de 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

Paso 4: Añadir plataformas nativas

Instala los paquetes nativos core y genera las carpetas del proyecto:

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

En este punto Capacitor ha creado ios/ y android/ carpetas. La sincronización copiará tus assets web compilados en ambas plataformas.

Paso 5: Build de la web app y sync

Build de la PWA y sync de assets web:

bun run build
bunx cap sync

Ahora abre los proyectos nativos:

bunx cap open ios
bunx cap open android

Desde Xcode o Android Studio, conecta un dispositivo o emulador y ejecuta.

Paso 6: Mejoras nativas tras la migración

Aquí es donde reemplazas funciones solo web por APIs nativas según necesites:

  • Notificaciones push -> @capacitor/push-notifications
  • Almacenamiento seguro de key/value -> @capacitor/preferences
  • Cámara / media -> @capacitor/camera
  • Auth biométrica -> @capacitor-community/native-biometric (o el plugin que prefieras)

Para cada nuevo plugin nativo:

  1. Instala el paquete del plugin
  2. Configura los ajustes del plugin
  3. Ejecuta:
bunx cap sync

Luego vuelve a compilar y ejecutar.

Paso 7: Verificación de paridad en tiendas

Antes del envío:

  • Prueba los deep links y el routing (/ y rutas profundas) en ambas plataformas.
  • Verifica que la status bar, safe areas y la orientación sean correctas.
  • Elimina metadatos web que causen conflictos (como los install prompts).
  • Mantén la seguridad de transporte y privacidad alineadas con tu política.
  • Añade los iconos y splash screens para cada plataforma.

Si tu app usa actualizaciones OTA, combina tu pipeline de release con una estrategia de actualización segura y considera Capgo un despliegue controlado y rollback.

Checklist final

  • La web app compila sin errores (bun run build)
  • Capacitor inicializado con los parámetros correctos webDir
  • bunx cap add ios y bunx cap add android completado
  • Las apps nativas corren en dispositivos reales
  • Rutas de code solo para navegador se restringen al comportamiento nativo
  • Canales de actualización y assets de la app store configurados

Ya hiciste la mayor parte del trabajo pesado al crear tu PWA. Envolverla con Capacitor te ofrece:

  • Distribución en tiendas,
  • Acceso a APIs nativas,
  • Iteración más rápida sin un rewrite completo de code,
  • Un único flujo de despliegue para equipos web y mobile.

Empieza con este flujo y luego itera paso a paso según las analíticas y el feedback de los usuarios.

Continúa desde Transform Your PWA to a Native App with Capacitor

Si estás usando Transforma tu PWA en una app nativa con Capacitor para planificar la migración y las operaciones enterprise, conéctalo con Capgo Enterprise para el flujo de trabajo del producto en Capgo Enterprise, Alternativas a plugins de Ionic Enterprise para el flujo de trabajo del producto en Alternativas de Plugins de Ionic Enterprise, Alternativas a Capgo para el flujo de trabajo del producto en Capgo Alternatives, Consultoría de Capgo para el flujo de trabajo del producto en Capgo Consulting, y Soporte Premium de Capgo para el flujo de trabajo del producto en Capgo Premium Support.

Live updates para apps Capacitor

Cuando un bug de la capa web está en producción, publica el fix a través de Capgo en lugar de esperar días a la aprobación de la app store. Los usuarios reciben la actualización en segundo plano mientras los cambios nativos siguen el flujo de revisión habitual.

Lo último de nuestro blog

Capgo te da la información clave que necesitas para crear una app móvil realmente profesional.