Saltar al contenido principal
@capgo/capacitor-webview-crash Auth y seguridad Código abierto

Crash de WebView plugin Capacitor

Reinicia WebViews caídos de forma nativa y recicla WebViews de larga duración a intervalos fijos

Instalar

bun add @capgo/capacitor-webview-crash bunx cap sync
npm, pnpm o yarn
  • npm install @capgo/capacitor-webview-crash
  • pnpm add @capgo/capacitor-webview-crash
  • yarn add @capgo/capacitor-webview-crash

Guía

Cómo usar WebView Crash en Capacitor

Probar en el dispositivo

Descarga la app Capgo y escanea el QR code.

Vista previa del plugin WebView Crash QR code

Usando @capgo/capacitor-webview-crash

Detecta crashes de WebView recuperados, reinicia WebViews bloqueados de forma nativa y recicla WebViews de larga ejecución en intervalos fijos antes de que la presión de memoria cause un OOM.

Instalar

npm install @capgo/capacitor-webview-crash
npx cap sync

Lo que expone este plugin

  • Reinicio nativo tras crashes de WebView en iOS y Android.
  • Reinicio nativo de WebView a intervalos fijos para apps de kiosk, POS, señalización, escáner y dashboards que funcionan durante días.
  • restartWebView - Permite que JavaScript solicite un nuevo WebView nativo sin recargar la página.
  • WebViewCrashPluginConfig - Tipos plugins.WebViewCrash opciones en capacitor.config.ts.
  • getPendingCrashInfo - Devuelve el marcador de reinicio o crash nativo guardado, o null cuando no hay nada pendiente.
  • clearPendingCrashInfo - Limpia el marcador guardado tras restaurar el estado de la app.
  • simulateCrashRecovery - Crea un marcador de crash falso para probar flujos de recuperación localmente.
  • webViewRestoredAfterCrash - Evento de listener que se dispara si hay un marcador de crash pendiente en el runtime recuperado.
  • webViewRestoredAfterRestart - Evento de listener que se dispara si hay un marcador de reinicio nativo pendiente.

Ejemplo de uso

import { WebViewCrash } from '@capgo/capacitor-webview-crash';

await WebViewCrash.addListener('webViewRestoredAfterCrash', async (info) => {
  console.log('Recovered after a WebView crash', info);
  await WebViewCrash.clearPendingCrashInfo();
});

await WebViewCrash.addListener('webViewRestoredAfterRestart', async (info) => {
  console.log('Recovered after a native WebView restart', info);
  await WebViewCrash.clearPendingCrashInfo();
});

const pending = await WebViewCrash.getPendingCrashInfo();
// Note: the listener callback may have already cleared the pending marker.
if (pending.value) {
  console.log('Pending crash or restart marker', pending.value);
}

Reinicio automático nativo

Configura el comportamiento de reinicio en capacitor.config.ts para que siga funcionando cuando JavaScript no esté disponible:

import type { CapacitorConfig } from '@capacitor/cli';
import type { WebViewCrashPluginConfig } from '@capgo/capacitor-webview-crash';

const webViewCrash: WebViewCrashPluginConfig = {
  restartOnCrash: true,
  restartCron: '0 3 * * *',
  restartAfterCrashDelayMs: 0,
};

const config: CapacitorConfig = {
  plugins: {
    WebViewCrash: webViewCrash,
  },
};

export default config;

Los reinicios programados escriben reason: 'periodicRestart'. Usa restartIntervalMs en intervalos fijos o restartCron mediante un cron de 5 campos en la zona horaria local del dispositivo, como 0 3 * * * para un reinicio diario a las 03:00. No configures ambos esquemas a la vez: la inicialización nativa lanza un error fatal cuando restartCron está configurado y restartIntervalMs es mayor que 0. Persiste el estado crítico de la app antes de usar intervalos cortos.

Reinicio Nativo Manual

Llama a restartWebView() cuando JavaScript decide que el WebView nativo debe reemplazarse proactivamente, por ejemplo tras un flujo de trabajo pesado:

await WebViewCrash.restartWebView();

El método escribe reason: 'manualRestart' y solicita al code nativo que cree un WebView nuevo. Android recrea la actividad host. iOS reconstruye la vista del bridge Capacitor para que un nuevo WKWebView en lugar de recargar la página actual.

Referencia completa

Continuar desde Using @capgo/capacitor-webview-crash

Si estás usando Usando @capgo/capacitor-webview-crash para planificar el comportamiento de los medios nativos y la interfaz, conéctalo con @capgo/capacitor-webview-crash para los detalles de implementación en @capgo/capacitor-webview-crash, Primeros pasos para los detalles de implementación en Primeros pasos, Uso de @capgo/capacitor-live-activities para la capacidad nativa en Uso de @capgo/capacitor-live-activities, @capgo/capacitor-live-activities para el detalle de implementación en @capgo/capacitor-live-activities, y Uso de @capgo/capacitor-video-player para la capacidad nativa en Uso de @capgo/capacitor-video-player.

FAQ

FAQ del plugin WebView Crash

¿Cómo instalo el plugin WebView Crash en una app Capacitor?

Ejecuta "bun add @capgo/capacitor-webview-crash" (o "npm install @capgo/capacitor-webview-crash"), luego ejecuta "bunx cap sync" para que los proyectos de iOS y Android detecten el code nativo. Impórtalo desde "@capgo/capacitor-webview-crash" en el code de tu app.

¿Funciona @capgo/capacitor-webview-crash con React, Vue y Angular?

Sí. WebView Crash es un paquete Capacitor, por lo que funciona con cualquier framework web que se ejecute dentro de Capacitor, incluyendo Ionic, React, Vue, Angular, Svelte y JavaScript puro.

¿Qué versión de Capacitor es compatible con @capgo/capacitor-webview-crash?

Los plugins de Capgo siguen la versión mayor de Capacitor: usa la versión mayor del plugin que coincida con la versión mayor de tu Capacitor (por ejemplo, el plugin v8 con Capacitor 8). La tabla de compatibilidad del README de GitHub lista las versiones mantenidas.

¿Es @capgo/capacitor-webview-crash gratuito y de código abierto?

Sí. El código fuente de code es público en GitHub en https://github.com/Cap-go/capacitor-webview-crash/ y el paquete se puede instalar gratis desde npm. Los reportes de bugs y pull requests son bienvenidos.

¿Puedo actualizar code que usa WebView Crash sin pasar por la revisión de la App Store?

Instalar o actualizar el plugin cambia el code nativo, así que requiere un nuevo build para la tienda. Después, los cambios de JavaScript, HTML y CSS que llamen al plugin se pueden publicar al instante con las live updates de Capgo.

Lanza cambios para WebView Crash sin esperar la revisión de la app

Una vez que el plugin esté en tu store build, Capgo live updates envía tus cambios de JavaScript, HTML y CSS a los usuarios en minutos.

Empieza con Capgo