Durante mucho tiempo, asumí que las puntuaciones altas de Lighthouse eran principalmente el resultado de ajustes. Comprimir imágenes, diferir scripts, corregir cambios de diseño, ajustar temas, cambiar plugins y repetir el ciclo cada vez que aparecía una nueva advertencia.
Con el tiempo, esa suposición dejó de coincidir con lo que veía en la práctica.
Los sitios que consistentemente obtenían buenos resultados no eran los que tenían mayor esfuerzo de optimización. Eran aquellos donde el navegador simplemente tenía menos trabajo que hacer.
En ese momento, Lighthouse dejó de parecer una herramienta de optimización y comenzó a parecer una señal de diagnóstico para decisiones arquitectónicas.
Lighthouse no evalúa frameworks o herramientas. Evalúa resultados.
Qué tan rápido aparece el contenido significativo.
Cuánto JavaScript bloquea el hilo principal.
Qué tan estable permanece el diseño durante la carga.
Qué tan accesible y rastreable es la estructura del documento.
Estos resultados son efectos posteriores de decisiones tomadas mucho antes en el stack. En particular, reflejan cuánta computación se difiere al navegador en tiempo de ejecución.
Cuando una página depende de un gran paquete del lado del cliente para ser utilizable, las puntuaciones bajas no son sorprendentes. Cuando una página es principalmente HTML estático con lógica limitada del lado del cliente, el rendimiento se vuelve mucho más predecible.
En las auditorías que he realizado y los proyectos en los que he trabajado, la ejecución de JavaScript es la fuente más común de regresiones de Lighthouse.
Esto no es porque el código sea de baja calidad. Es porque JavaScript compite por un entorno de ejecución de un solo hilo durante la carga de la página.
Los tiempos de ejecución de frameworks, la lógica de hidratación, los gráficos de dependencias y la inicialización de estado consumen tiempo antes de que la página se vuelva interactiva. Incluso las características interactivas pequeñas a menudo requieren paquetes desproporcionadamente grandes.
Las arquitecturas que asumen JavaScript por defecto requieren un esfuerzo continuo para mantener el rendimiento bajo control. Las arquitecturas que tratan JavaScript como una opción explícita tienden a producir resultados más estables.
La salida pre-renderizada elimina varias variables de la ecuación de rendimiento.
No hay costo de renderizado del lado del servidor en el momento de la solicitud.
No se requiere arranque del lado del cliente para que aparezca el contenido.
El navegador recibe HTML predecible y completo.
Desde la perspectiva de Lighthouse, esto mejora métricas como TTFB, LCP y CLS sin requerir trabajo de optimización dirigido. La generación estática no garantiza puntuaciones perfectas, pero reduce significativamente el rango de modos de falla.
Antes de reconstruir mi blog personal, exploré varios enfoques comunes, incluidas configuraciones basadas en React que dependen de la hidratación por defecto. Eran flexibles y capaces, pero el rendimiento requería atención continua. Cada nueva característica introducía preguntas sobre el modo de renderizado, la obtención de datos y el tamaño del paquete.
Por curiosidad, probé un enfoque diferente que asumía HTML estático primero y trataba JavaScript como una excepción. Elegí Astro para este experimento, porque sus restricciones predeterminadas se alineaban con las preguntas que quería probar.
Lo que destacó no fue una puntuación inicial dramática, sino el poco esfuerzo que se requería para mantener el rendimiento a lo largo del tiempo. Publicar nuevo contenido no introdujo regresiones. Los elementos interactivos pequeños no se convirtieron en cascada en advertencias no relacionadas. La línea base era simplemente más difícil de erosionar.
Documenté el proceso de construcción y las compensaciones arquitectónicas en una nota técnica separada mientras trabajaba en este experimento en un blog personal con puntuación perfecta de Lighthouse.
Este enfoque no es universalmente mejor.
Las arquitecturas estáticas primero no son ideales para aplicaciones altamente dinámicas y con estado. Pueden complicar escenarios que dependen en gran medida de datos de usuario autenticados, actualizaciones en tiempo real o gestión compleja de estado del lado del cliente.
Los frameworks que asumen renderizado del lado del cliente ofrecen más flexibilidad en esos casos, a costa de una mayor complejidad en tiempo de ejecución. El punto no es que un enfoque sea superior, sino que las compensaciones se reflejan directamente en las métricas de Lighthouse.
Lo que Lighthouse muestra no es esfuerzo, sino entropía.
Los sistemas que dependen de la computación en tiempo de ejecución acumulan complejidad a medida que se agregan características. Los sistemas que hacen más trabajo en tiempo de compilación restringen esa complejidad por defecto.
Esa diferencia explica por qué algunos sitios requieren trabajo de rendimiento constante mientras que otros permanecen estables con una intervención mínima.
Las puntuaciones altas de Lighthouse rara vez son el resultado de pases de optimización agresivos. Generalmente emergen naturalmente de arquitecturas que minimizan lo que el navegador debe hacer en la primera carga.
Las herramientas van y vienen, pero el principio subyacente sigue siendo el mismo. Cuando el rendimiento es una restricción predeterminada en lugar de un objetivo, Lighthouse deja de ser algo que persigues y se convierte en algo que observas.
Ese cambio tiene menos que ver con elegir el framework correcto y más con elegir dónde se permite que exista la complejidad.


