Cómo convertir tu sitio web en una progressive web app

Cómo convertir tu sitio web en una PWA (código probado) | We.Inc

Haz que cualquier sitio web se pueda instalar y funcione sin conexión: un generador de manifest, un service worker probado, un botón de instalar, los límites en iPhone y la configuración en Vite o Next.js.

Cómo convertir tu sitio web en una progressive web app

Para convertir un sitio web en una progressive web app, sírvelo por HTTPS, añade un manifest.webmanifest con un nombre, start_url, modo de visualización e iconos de 192 y 512 píxeles, enlázalo desde todas las páginas y registra un service worker que guarde archivos en caché para usarlos sin conexión. Los navegadores Chromium ofrecerán entonces instalarla; quienes usan Safari la añaden desde Compartir.

Las tres partes de una PWA

Rellena el formulario para obtener un manifest y las etiquetas del head que debes pegar, y luego copia el service worker y el script de instalación. El worker de esta página se ejecutó en un navegador real con la red cortada antes de publicarlo.

Preguntas frecuentes

¿Una PWA necesita un service worker para poder instalarse?

En el Chrome actual, no: un manifest válido, HTTPS y algo de interacción del usuario bastan para la opción de instalar. Aun así te conviene un worker, porque sin él la app instalada muestra la página de error del navegador cuando no hay conexión.

¿Funcionan las PWA en iPhone?

Sí, con límites. En Safari se instalan desde el menú Compartir, no existe el evento de aviso de instalación y las notificaciones push solo funcionan en un sitio añadido a la pantalla de inicio en iOS 16.4 o posterior. La caché sin conexión sí funciona.

¿Por qué no aparece nunca mi botón de instalar?

beforeinstallprompt solo se dispara en navegadores Chromium, solo cuando se cumplen los criterios de instalación y no cuando la app ya está instalada. Revisa la sección Manifest del panel Application de DevTools para ver el motivo.

¿Cómo reviso una PWA ahora que Lighthouse no tiene puntuación PWA?

Lighthouse 12 eliminó la categoría PWA. Usa el panel Application de Chrome DevTools: la vista Manifest enumera los errores de instalabilidad y los problemas de iconos, y la vista Service workers muestra el registro, las actualizaciones y un interruptor Offline.

¿Cómo actualizo una PWA después de un lanzamiento?

Cambia la VERSION de la caché en sw.js. El navegador detecta el worker modificado, lo instala y el paso activate elimina las cachés antiguas. Con skipWaiting y clients.claim, el nuevo worker toma el control en la siguiente carga.

Primero la caché o primero la red

Errores habituales

Qué obtienes y los límites en iPhone

Instalar da a tu sitio su propio icono y una ventana sin barra de direcciones. Un service worker añade páginas sin conexión. Push necesita ambas cosas, y Apple solo lo permite para sitios que el usuario ha añadido a la pantalla de inicio.

Qué puede hacer una PWA, por plataforma

Un service worker que funciona

Tres archivos hacen que un sitio funcione sin conexión: el worker, una página de respaldo y unas pocas líneas para registrarlo. Ejecutamos exactamente estos archivos en localhost en Chromium: el worker se instaló, la caché se llenó y, con el servidor detenido, la página de inicio cargó desde la caché mientras que una página nunca visitada mostró offline.html.

sw.js: un service worker mínimo que funciona sin conexión

Las páginas prueban primero la red para que la gente vea contenido actualizado, luego recurren a una copia en caché y después a offline.html. Archivos como CSS, scripts e iconos salen primero de la caché. Cambiar VERSION hace que el siguiente paso activate elimine las cachés antiguas.

offline.html: la página de respaldo

Haz que sea autónoma: estilos en línea y ningún archivo externo, porque puede que no se pueda acceder a nada más cuando se muestre.

Un botón de instalar

app.js: registra el worker y muestra un botón de instalar

El evento beforeinstallprompt solo se dispara en navegadores Chromium (Chrome, Edge, Samsung Internet, Opera). Safari y Firefox nunca lo envían, así que allí el botón queda oculto y la gente usa el menú del propio navegador.

Criterios de instalación actuales

Chrome ya no exige un service worker para ofrecer la instalación; lo que revisa es el manifest y los elementos de abajo. Lighthouse 12 eliminó su categoría PWA, así que revisa la instalabilidad en Chrome DevTools: panel Application y luego Manifest, que enumera cualquier problema en Installability.

Requisitos de instalación de Chrome

Configuración en Vite y Next.js

Vite: vite-plugin-pwa

Instálalo con npm i -D vite-plugin-pwa. El plugin escribe el manifest y genera un service worker de Workbox al compilar, así que no tienes que escribir sw.js a mano. Pon los iconos en public/.

Next.js App Router: app/manifest.ts

Next.js sirve este archivo en /manifest.webmanifest y añade la etiqueta link por ti. Para el soporte sin conexión, pon el sw.js de arriba en public/ y regístralo desde un pequeño componente de cliente.

Next.js: registra public/sw.js desde un componente de cliente

Renderízalo una vez en app/layout.tsx. Omite el registro en desarrollo para que una compilación en caché no oculte tus cambios.

Nombre de la app

Nombre corto (bajo el icono)

URL de inicio

Carpeta de iconos

Color del tema

Color de fondo

Copiar

Generador de manifest

Visualización

Incluir un icono maskable

Guarda tus iconos como icon-192.png e icon-512.png (e icon-512-maskable.png) en la carpeta de iconos.

Etiquetas para el head de todas las páginas

Empieza gratis · Sin tarjeta de crédito

Relacionado: Guías

Producto

Para quién es

Funciones

Recursos

Empresa

Mapa del sitio