2022 empezó envuelto en el caos cuando dos paquetes muy populares fueron intencionalmente rotos por su creador: Faker.js and colors.js sabotaged.
La fragilidad de este gran ecosistema quedó demostrada de nuevo cuando Lerna, una herramienta muy conocida para mono-repos dejó de tener mantenimiento...hasta que Nrwl, la compañía detrás de Nx, anunció que se encargaría de ella.
JavaScript continúa arrasando, quizás hayas oído hablar de esta profecía del 2009:
Cualquier aplicación que pueda ser escrita en JavaScript, será escrita en algún momento en JavaScript
...o en TypeScript podríamos añadir 13 años después, ya que TypeScript se ha convertido en el estándar a la hora de escribir JavaScript (soporte por defecto en Deno, Bun, Next.js, Vite...).
El lugar tomado por JavaScript y sus herramientas también tiene sus problemas, tanto para desarrolladores como para los usuarios finales:
- los tiempos de build se disparan en proyectos grandes.
- el tamaño del código JavaScript continúa creciendo llevándonos a un deterioro de rendimiento.
En 2022, vimos grandes innovaciones para resolver estos dos tipos de problemas en diferentes capas del stack tecnológico.
Las herramientas mejoraron con las siguientes soluciones:
- Bun, el campeón del año, toma un enfoque radical mejorando la velocidad de instalación y build.
- Rome es ahora un linter y formatter que intenta ser una sola herramienta para manejar aplicaciones escritas en JS/TS.
- La herramienta de build Vite.
Para mejorar el rendimiento en el navegador, hay diferentes patrones compitiendo:
- Frameworks "Zero baseline JavaScript" que intentan proveer prácticamente nada de JS al navegador (Qwik lidera este frente)
- Partial hydration proporcionando interactividad a páginas estáticas (Astro)
- React Server Components (implementado en Next.js 13 y Gatsby) para delegar más peso en el lado servidor.
- La arquitectura Progressively Enhanced Single Page Apps implementada por Remix proporciona tanto una gran experiencia de desarrollo como buen rendimiento en el navegador sin comprometer ningún comportamiento dinámico.
No hay una fórmula mágica para resolver estos problemas, ya que el espectro entre páginas estáticas y completamente dinámicas es amplio.
El panorama JavaScript ha estado muy fragmentado anteriormente: por un lado teníamos diferentes navegadores y por otro Node.js, con su sistema de módulos CommonJS además de sus propias APIs.
Con el surgimiento del edge computing, hay una tendencia de usar el mismo conjunto de APIs estándar en cualquier lugar (fetch, HTTP Request and Response...).
Nuestro escritor invitado Lee Robinson, hizo un gran resumen de estas tendencias en el artículo Why I'm Optimistic About JavaScript's Future.
Y compartimos totalmente el optimismo de su conclusión!
Que gran momento para ser desarrollador web.
Ganador: Bun 🏆
El proyecto más popular del año es Bun, un nuevo runtime de JavaScript que pone el foco en el rendimiento y la experiencia de desarrollo. Su popularidad aumentó durante el verano con su primera versión Beta: con más de 20,000 estrellas en GitHub en un solo mes, nunca hemos visto un crecimiento tan grande en tan poco tiempo desde que empezamos a analizar proyectos en Best of JS.
Pero, ¿qué tiene Bun de especial? Al igual que Deno, el ganador de hace dos años, provee soporte nativo de TypeScript.
Bun no solo es un runtime, sino también:
Bun puede instalar tus dependencias leyendo el package.json, ejecutar tus scripts y de una forma tan rápida como nunca antes se ha visto.
Bun toma un nuevo enfoque en muchos aspectos del ecosistema JavaScript centrándose en conseguir un buen rendimiento.
Prioriza Web APIs estándar como Fetch. Soporta muchas APIs de Node.js lo que lo hace compatible con la mayoría de paquetes NPM. Puede que por el momento no esté preparado para producción (debido a la falta de soporte en Windows) pero es una herramienta muy prometedora. Comparándolo con Deno, su ecosistema es muy reciente sin embargo ya tiene un web framework llamado Elysia que afirma ser el framework HTTP más rápido.
Una de las cosas más sorprendentes sobre Bun es que su creador Jarred Sumner implementó todas estas funcionalidades desde cero, usando un lenguaje de bajo nivel llamado Zig.
Echa un ojo a A Complete Overhaul of the JavaScript Ecosystem para conocer más detalles.
Tauri
Llegando a ocupar la quinta posición en el 2021, Tauri ha llegado a ser aún más popular este año, consiguiendo 30,000 nuevas estrellas. Es un proyecto escrito en Rust para crear aplicaciones de escritorio multi plataforma usando tecnologías web.
La versión 1.0 fue lanzada en junio.
Ha sido creado teniendo muy en cuenta la seguridad y el rendimiento. Comparado con Electron, este se centra en reducir la huella ecológica utilizando los menores recursos del sistema posibles, ofreciendo funcionalidades compiladas que no necesitan evaluación runtime y facilitando guías a los desarrolladores para optimizar al máximo sus apps.
React y Next.js
En tercer y cuarto puesto, React y Next.js tienen cifras similares, con casi 20,000 estrellas nuevas.
Next.js 13 apareció en octubre, proporcionando los React Server Components introducidos por React 17 en el 2020.
Andrew Clark, uno de los responsables del mantenimiento de React, hizo una declaración sobre su futura adopción en este hilo:
Vite
Ocupando la quinta posición, Vite es la herramienta más popular para crear aplicaciones basadas en tecnologías web, que a la vez proporciona una estupenda experiencia de desarrollo.
Ha tenido dos lanzamientos importantes este año (v3 en julio y v4 en diciembre).
Vite potencia cada vez más proyectos, incluyendo los frameworks SvelteKit, Qwik y Vitest.