Inflación de JavaScript en 2024

Los sitios web modernos envían rutinariamente varios megabytes de JavaScript, incluso para páginas relativamente simples, con ejemplos que van desde ~1–3 MB en el extremo más ligero hasta 10–60 MB en servicios como Gmail, Figma y Jira. Quienes comentan sostienen que esta inflación proviene de frameworks pesados, mala división de código, rastreo de terceros e incentivos organizativos, y señalan que la compresión y la caché no resuelven los costos de CPU, memoria y batería, especialmente en dispositivos de gama baja o conexiones lentas. Algunos ven los bundles grandes como aceptables para aplicaciones web ricas si la navegación es rápida tras la carga inicial, mientras que otros señalan sitios ligeros y enfoques sin dependencias como prueba de que son posibles diseños mucho más eficientes.

Comparaciones de tamaño de titulares y sorpresas

  • Quienes comentan destacan enormes cargas útiles de JS: Gmail y Figma ~20 MB, YouTube ~12 MB de JS + 2.5 MB de CSS, Jira ~58 MB, y algunas páginas de aterrizaje con varios MB “solo para mostrar texto e imágenes”.
  • Los sitios porno (p. ej., Pornhub) se citan repetidamente como comparativamente ligeros (≈1–1.4 MB) a pesar de estar centrados en contenido multimedia.
  • Varios desarrolladores informan que sus propias apps complejas están en 1–4 MB y se muestran perplejos de que empresas mucho más grandes envíen 10–50 MB.

Compresión, análisis y limitaciones de dispositivos

  • Se debate entre mirar tamaños comprimidos o sin comprimir: la compresión reduce la transferencia, pero no el costo de análisis/ejecución.
  • Se enfatiza que los dispositivos Android antiguos y de gama baja son los que más sufren con bundles grandes y trabajo pesado del DOM.
  • Algunos argumentan que el tamaño por sí solo es una proxy tosca; el perfilado muestra que el renderizado del DOM, el layout, la reactividad ineficiente y las cascadas suelen dominar.

Fuentes de la inflación: SPAs, frameworks y rastreo

  • Muchos culpan a los frameworks SPA y a arquitecturas sobrediseñadas por convertir sitios simples en aplicaciones.
  • Otros dicen que muchos bytes son analíticas, gestores de etiquetas, A/B testing y widgets de soporte al cliente gestionados por marketing, a veces inyectados sin supervisión del equipo de desarrollo.
  • Los scripts de rastreo de terceros pueden ser ellos mismos de varios MB y a menudo cargan desde CDNs externos.

Experiencia de usuario: rápida para algunos, inutilizable para otros

  • Informes mixtos: algunos encuentran YouTube, GitHub, Discord, etc. “ágiles”; otros ven retrasos y bloqueos notables, especialmente en hardware antiguo o intermedio o en móvil.
  • Personas con conexiones limitadas (rural, itinerancia, 2 Mbps o topes bajos de datos como 15 GB/mes) describen muchos sitios modernos como prácticamente inutilizables sin bloqueadores.
  • La UX sin conexión o con mala conectividad de apps como Spotify y Gmail es muy criticada.

Debate: ¿los bundles grandes son realmente un problema?

  • Un lado: “Menos JS = mejor” es una heurística útil; 10–50 MB para interfaces básicas es un desperdicio claro y perjudica a los usuarios medios.
  • El otro lado: el costo es aceptable en conexiones “normales”; es mejor optimizar la UX global (caché, navegación rápida dentro de la app) que perseguir métricas de tamaño de bundle.
  • Algunos sostienen que deberíamos arreglar el caché/PWA y los problemas de plataforma en lugar de obsesionarnos con los kilobytes.

Críticas metodológicas y matices

  • Varios comentarios señalan problemas de medición en el artículo:
    • Mirar solo cargas en frío y tamaños sin comprimir.
    • Tener la caché desactivada exagera las descargas repetidas (p. ej., sandboxes de la documentación de React).
    • Algunas páginas “de aspecto estático” en realidad son puertas de entrada a webapps multiherramienta (p. ej., Outlook, Translate).
  • Otros responden que, incluso con estas salvedades, las diferencias de orden de magnitud y la lentitud en el mundo real muestran un problema genuino de inflación.

Alternativas, herramientas y prácticas

  • Mitigaciones sugeridas: división de código, carga diferida, listas virtuales, evitar nodos DOM innecesarios y herramientas de análisis de bundles (p. ej., analizadores de Webpack/Rollup).
  • Algunos abogan por enfoques sin dependencias o con pocas dependencias, navegación estilo HTMX/PJAX, o marcos más nuevos “resumibles” (p. ej., Qwik).
  • Tema recurrente fuerte: los incentivos organizativos (marketing, rapidez de desarrollo) favorecen acumular JS; el rendimiento tiene pocos defensores.