BookinglyTech News
Software

Changesets v3: solo ESM, instalación de 16,1 a 2,1 MB y peer deps con bump de patch

El gestor de versiones y changelogs para monorepos JavaScript salta a la v3: solo ESM, Node 22.11 y 39 dependencias en vez de 95. Y actualizar un peer dependency ya no fuerza un major.

3 min de lecturaInfoQ0 vistas

Changesets ha publicado la v3.0, su primer lanzamiento mayor desde la v2, hace siete años. La herramienta de versionado y generación de changelogs para monorepos de JavaScript llegó el 11 de agosto de 2026 con instalaciones mucho más ligeras, una CLI reescrita y un cambio de comportamiento en los peer dependencies que se venía reclamando desde hace tiempo. Detrás está un equipo de mantenedores renovado: Mateusz Burzyński, Bjorn Lu y Adam Haglund, sobre un paquete con más de 3 millones de descargas semanales.

Menos peso y solo ESM

Todos los paquetes pasan a ser ESM únicamente y exigen Node.js 22.11 o superior. En gestores de paquetes el mínimo es pnpm 10, npm 10.9 o Yarn 4.5.2, y Yarn Classic se queda fuera. La limpieza deja la instalación en 2,1 MB frente a los 16,1 MB de la v2, y las dependencias bajan de 95 a 39. Por dentro, el proyecto se ha movido a tsdown, rolldown, vitest y oxfmt. El formateo de changelogs ya no arrastra su propia copia de Prettier: ahora tira de @changesets/format, que detecta prettier, oxfmt, deno o dprint en el proyecto.

Peer dependencies y migración

El cambio de comportamiento que más se va a notar: actualizar un peer dependency ahora da a los dependientes un bump de patch en lugar de uno major. La conducta anterior generó quejas durante años, entre ellas la de un equipo que mantenía un monorepo de design system y escribió que subir a major "parece mandar el mensaje equivocado y no respetar semver". Quien publique una ruptura real puede seguir añadiendo un changeset major explícito para el dependiente.

Los mantenedores de Bumpy, competidor recién lanzado, apuntan en su comparativa con Changesets que la v3 "hardcodea el extremo opuesto": ahora asume que cualquier cambio de peer es compatible, y ninguna de las dos versiones deja configurar la propagación. Aun así, le reconocen que arregla muchas quejas arrastradas y le achacan huecos como el soporte de catálogos de pnpm o un diseño de prereleases sin tocar.

La CLI se reconstruyó sobre cac para parsear argumentos y clack para los prompts, lo que de paso arregla el fallo de que cancelar un prompt tumbara el proceso. Aparecen los comandos pack y publish-plan, pensados para la secuencia de build, empaquetado y publicación que recomienda la comunidad e18e, y la action v2 expone sub-acciones para que quien use publicación de confianza de npm pueda acotar permisos.

La actualización es sobre todo trabajo de configuración. Además de los requisitos de instalación, hay comandos y flags renombrados: changeset tag pasa a changeset git-tag y changeset status --sinceMaster pasa a changeset status --since=main. En configuración, prettier se sustituye por format y los paquetes privados dejan de versionarse salvo que se opte por lo contrario. Y changeset version ahora sale con código 1 cuando no hay nada que publicar, así que cualquier script que lo ejecute sin condición bajo set -e va a fallar en un release vacío.

Frente a semantic-release, que infiere versiones de los commits convencionales, y a release-it, Changesets mantiene su compromiso particular: los contribuidores escriben la intención de release en ficheros markdown y el release sigue siendo revisable como pull request. La v3 no toca ese modelo, solo lo hace más barato de instalar y mejor educado con los peer dependencies. Sigue siendo MIT y la v2 queda en una rama de mantenimiento por si alguien no puede asumir el salto de Node todavía.