La hinchazón de JavaScript en 2024
(tonsky.me)El problema del tamaño de JavaScript
- No estaba muy al tanto del desarrollo frontend moderno, y recordaba artículos sobre la hinchazón web, con páginas que pesan varios megabytes.
- Me había quedado la impresión de que, si una página web promedio pesa 3 MB, entonces el bundle de JavaScript sería de alrededor de 1 MB.
- Hice un experimento para comprobar cuánto es en realidad.
Método
- Uso Firefox en macOS (debería ser igual en otros navegadores)
- Modo normal, no incógnito (quería ver los números dentro de la app y pensé que sería más cercano a la experiencia real)
- Todas las extensiones desactivadas
- Medición solo de JavaScript
- Sin comprimir
- Service workers activados (para una situación más realista)
- Todo el caché desactivado (carga desde cero)
Páginas de aterrizaje
- Ejemplo de una página típica con algo de interacción: Wikipedia, 0.2 MB
- Ejemplo de una página algo inflada: Linear, 3 MB
- Ejemplos de malas landing pages: Zoom, 6 MB; Vercel, 6 MB; Gitlab, 13 MB
Sitios web mayormente estáticos
- Difícilmente puede ser más simple que mostrar una pared de texto estático.
- Aun así, Medium necesita 3 MB solo para eso.
- Substack necesita 4 MB, Quora 4.5 MB, Pinterest 10 MB y Patreon 11 MB.
Búsqueda
- La interacción de la app se limita principalmente a buscar.
- StackOverflow necesita 3.5 MB, NPM 4 MB, Airbnb 7 MB y Booking.com 12 MB.
- Google necesita 9 MB para mostrar un simple campo de texto y una lista de enlaces.
Apps de una sola interacción
- Google Translate necesita 2.5 MB para dos cuadros de texto.
- ChatGPT necesita 7 MB para un solo cuadro de texto.
Video
- Loom necesita 7 MB y YouTube 12 MB.
- Pornhub, un sitio que sí se preocupa por el rendimiento, solo necesita 1.4 MB.
Audio
- Tanto SoundCloud como Spotify necesitan 12 MB.
Correo electrónico
- Google Mail necesita 20 MB.
- FastMail ofrece la misma funcionalidad y solo necesita 2 MB.
Productividad
- Todoist necesita 9 MB, Dropbox 10 MB, 1Password 13 MB y Trello 13.5 MB.
- Discord necesita 21 MB para chat.
Edición de documentos
- Google Docs necesita 13.5 MB y Notion 16 MB.
Redes sociales
- Twitter necesita 11 MB, Facebook 12 MB, TikTok 12.5 MB, Instagram 16 MB y LinkedIn 31 MB.
Categoría gigante
- Jira necesita casi 50 MB y Slack 55 MB.
- react.dev empieza en 2 MB al principio, pero puede crecer sin límite al hacer scroll.
¿Está empeorando cada vez más rápido?
- En 2015, el tamaño promedio de una página web se acercaba a la versión shareware de Doom 1 (2.5 MB).
- En 2024, Slack ocupa 55 MB, lo que equivale al tamaño original de Quake 1 solo en JavaScript.
¿Qué tan grande es 10 MB?
- 10 MB ya no se sienten tan grandes ni tan especiales.
- Asumiendo un promedio de 65 caracteres por línea, estamos enviando alrededor de 150,000 líneas de código por cada sitio web.
- Google Maps pesa unos relativamente modestos 4.5 MB para los estándares modernos.
Conclusión
- El tamaño de descarga no es el único problema.
- JavaScript es algo que el navegador debe parsear, mantener en memoria y ejecutar.
- Creo que el contenido debería superar al tamaño del código.
- Gitlab necesita 13 MB de código, más de 500K líneas de JS, para mostrar una landing page estática.
Opinión de GN⁺:
- Un diagnóstico realista del estado actual del desarrollo web, que ayuda a entender el impacto del tamaño de JavaScript en la experiencia de usuario y el rendimiento.
- Les recuerda a los desarrolladores frontend la importancia de la optimización y llama la atención sobre no usar más recursos de los necesarios.
- Ofrece datos interesantes que pueden fomentar la discusión dentro de la comunidad de desarrolladores sobre el rendimiento de los sitios web.
1 comentarios
Opiniones de Hacker News