- Hero via Cloudinary CDN con f_auto,q_auto,w_1920
- Logo via Cloudinary CDN con f_auto,q_auto,w_68,h_68
- Avatares testimonios redimensionados a 128x128 con f_auto,q_auto
- Logos empresas con f_auto,q_auto
- Preconnect + preload hero en layout.tsx
Resultado: De ~5,830 KiB a ~5 KiB de ahorro pendiente.
Problema: La imagen de Fran (128x128) sigue siendo grande para su tamano mostrado (42x42).
Archivo: app/components/testimonials/testimonials.config.ts
Pasos:
- Reducir el tamano de todos los avatares de
w_128,h_128aw_84,h_84(2x de 42px)
Problema: hero.jpeg (8.2MB) y logo.png (627KB) siguen en public/images/ sin usarse.
Pasos:
- Eliminar
public/images/hero.jpeg - Eliminar
public/images/logo.png
Problema: 2 CSS chunks bloquean el render (~9 KiB, 160ms).
[root-of...]__9e5df8a0._.css(2.8 KiB, 60ms) - CSS globalapp_components_4e8c903a._.css(6.2 KiB, 100ms) - CSS de componentes
Pasos:
- Extraer el CSS critico (above-the-fold) e inlinearlo en el HTML
- Cargar el resto de CSS de forma asincrona
- Revisar
globals.csspara eliminar estilos no usados o moverlos a los modulos CSS de cada componente
Problema: Next.js incluye polyfills innecesarios para navegadores modernos:
- Array.prototype.at, flat, flatMap
- Object.fromEntries, Object.hasOwn
- String.prototype.trimEnd, trimStart
Pasos:
- En
next.config.ts, configurar el browserslist target para navegadores modernos - Anadir en
package.json:"browserslist": ["last 2 Chrome versions", "last 2 Firefox versions", "last 2 Safari versions", "last 2 Edge versions"]
- Alternativamente, actualizar Next.js si no esta en la ultima version (las versiones recientes tienen mejor tree-shaking de polyfills)
Problema: site.webmanifest esta en la cadena critica (1,266ms de latencia).
Pasos:
- Verificar que el manifest no bloquea el render (deberia cargarse async por defecto)
- Si es necesario, mover la referencia al manifest despues del contenido critico
- Fase 1: Imagenes Cloudinary + preconnect + preload
- Fase 2: Ajustar tamano avatares a 84px
- Fase 3: Eliminar assets locales no usados
- Fase 4: Optimizar render blocking CSS
- Fase 5: Eliminar legacy JavaScript polyfills
- Fase 6: Optimizar critical path del manifest