codigo0/RESUMEN_PWA_ACTUALIZACIONES.md
planetazuzu 4ea658a0bd feat: añadir galería de imágenes y referencias en capítulos del manual
- Crear página GaleriaImagenes con vista de todas las infografías organizadas por bloques
- Añadir referencias a imágenes en capítulo de Collarín Cervical (10 imágenes)
- Añadir botón de acceso a galería desde índice del manual
- Corregir error de React Router (useNavigate sin importar en MenuSheet)
- Ajustar estructura de providers en App.tsx
- Total: 48 imágenes disponibles en galería y referencias en manual
2025-12-20 21:36:49 +01:00

3.5 KiB

Resumen: PWA y Sistema de Actualizaciones

Fecha: 2024-12-19


MEJORAS IMPLEMENTADAS

1. Service Worker Mejorado (public/sw.js)

  • Versión de cache: CACHE_VERSION = 'v1.0.1' (incrementar para forzar actualización)
  • Cache First para assets estáticos (offline-first)
  • Network First para HTML (permite actualizaciones)
  • Cache automático de imágenes en /assets/infografias/
  • Limpieza automática de caches antiguos

2. Sistema de Actualizaciones (src/main.tsx)

  • Registro mejorado: updateViaCache: 'none' (siempre verifica actualizaciones)
  • Verificación periódica: Cada hora
  • Verificación al recuperar foco: Cuando vuelves a la app
  • Detección de nueva versión: Escucha eventos updatefound

3. Hook useServiceWorker (src/hooks/useServiceWorker.ts)

  • Estado del SW: registration, updateAvailable, offline
  • Funciones: updateServiceWorker(), reloadPage()
  • Detección automática de actualizaciones

4. Componente UpdateNotification (src/components/layout/UpdateNotification.tsx)

  • Banner visual cuando hay actualización
  • Botón "Actualizar ahora" para aplicar actualización
  • Botón "Más tarde" para posponer
  • Integrado en App.tsx

5. Manifest Mejorado (public/manifest.json)

  • Iconos adicionales (192x192, 512x512)
  • Configuración completa para instalación PWA

🔄 CÓMO FUNCIONA

Flujo de Actualización

  1. Desarrollo:

    • Cambias código
    • Cambias CACHE_VERSION en sw.js (ej: v1.0.1v1.0.2)
    • Haces build: npm run build
    • Subes a servidor
  2. Usuario abre la app:

    • El navegador detecta que sw.js cambió
    • Descarga la nueva versión del SW
    • La instala en segundo plano
  3. Nueva versión instalada:

    • El hook useServiceWorker detecta updateAvailable = true
    • Se muestra el banner de actualización
    • El usuario puede actualizar ahora o más tarde
  4. Usuario hace clic en "Actualizar ahora":

    • Se envía mensaje SKIP_WAITING al SW
    • El SW se activa inmediatamente
    • Se recarga la página
    • Se crea nuevo cache con nueva versión
    • Se elimina cache antiguo

🧪 VERIFICACIÓN

Test Rápido

# 1. Build actual
npm run build

# 2. Preview
npm run preview

# 3. Abrir en navegador
# 4. DevTools > Application > Service Workers
# Verificar: SW registrado y activo

# 5. Cambiar CACHE_VERSION en public/sw.js
# 6. Build de nuevo
npm run build

# 7. Recargar página en navegador
# Verificar: Aparece banner de actualización

📋 CHECKLIST

  • Service Worker configurado
  • Sistema de actualizaciones implementado
  • Hook useServiceWorker creado
  • Componente UpdateNotification creado
  • Integrado en App.tsx
  • Manifest mejorado
  • Build funciona correctamente
  • Test en navegador (requiere servidor)
  • Test offline (requiere servidor)
  • Test de actualización (requiere servidor)

🎯 PRÓXIMOS PASOS

  1. Probar en servidor real:

    • Desplegar en servidor
    • Verificar que SW se registra
    • Verificar que actualizaciones funcionan
  2. Opcional: Indicador offline:

    • Añadir indicador visual cuando está offline
    • Mostrar en Header o BottomNav
  3. Opcional: Sincronización:

    • Sincronizar datos cuando vuelve la conexión
    • (Requiere backend)

Estado: COMPLETADO - Sistema de actualizaciones implementado y listo para probar