El estado en 2026: Rolldown 1.0 y la API bloqueada por semver
En mayo de 2026 Rolldown alcanzó su 1.0 estable y congeló su API pública bajo semver, dos meses después de que Vite 8 lo adoptara por defecto. Esa estabilidad es una señal de madurez para autores de plugins y herramientas. Esta lección cierra el nivel con una lectura honesta: qué significa el 1.0, qué le falta todavía frente a Rollup y hacia dónde apunta el toolchain unificado de VoidZero.
Un proyecto que llega a su versión 1.0 está diciendo algo concreto y verificable: que su API es estable y que a partir de ahí solo romperá compatibilidad en versiones mayores. Rolldown alcanzó ese hito en mayo de 2026, poco después de que Vite 8 lo hiciera su bundler por defecto en marzo. El 1.0 no es un adorno de marketing, es un compromiso de semver que cambia el cálculo de quien construye encima: los autores de plugins y de herramientas pueden apoyarse en la interfaz sabiendo que no se les moverá el suelo. Este nivel de cierre calibra qué significa esa madurez, qué sigue faltando y hacia dónde va el proyecto y el toolchain que lo rodea.
- Entender qué garantiza el 1.0 de Rolldown y qué significa bloquear la API bajo semver.
- Situar la cronología de 2026: Vite 8 por defecto en marzo, Rolldown 1.0 en mayo.
- Hacer una lectura honesta de lo que todavía le falta frente a Rollup.
- Ver hacia dónde va: el toolchain unificado de VoidZero y el uso autónomo de Rolldown.
1.0 estable y la API bloqueada por semver
Que Rolldown sea 1.0 significa que su API pública —las opciones de entrada y salida, el objeto de plugin, los hooks y el objeto de contexto— queda congelada bajo las reglas de versionado semántico. Semver establece un contrato simple: los cambios que rompen compatibilidad solo pueden llegar en una versión mayor, las funciones nuevas en una menor y las correcciones en un parche. Bloquear la API bajo esa regla es la diferencia entre un proyecto experimental, donde cualquier actualización puede romperte, y uno de producción, donde puedes fijar un rango de versiones y dormir tranquilo.
Bajo ese contrato, lo que queda congelado y en lo que puedes apoyarte sin miedo es concreto:
- Las opciones de entrada y salida: su forma no cambiará salvo en una versión mayor.
- El objeto de plugin y sus hooks:
resolveId,load,transform,generateBundley compañía. - El objeto de contexto: los métodos como
this.emitFileothis.resolve. - Los formatos de salida:
esm,cjs,iifeyumd, con su comportamiento estable.
En la práctica, esa estabilidad se traduce en poder fijar un rango de versiones y actualizar sin sobresaltos:
{
"devDependencies": {
"rolldown": "^1.0.0"
}
}
El acento circunflejo admite cualquier versión 1.x: recibes correcciones y funciones nuevas, pero nunca un cambio que rompa tu build sin que tú subas de versión mayor a conciencia. Y la API congelada no solo tranquiliza a los autores de plugins; estabiliza toda la torre que se apoya en Rolldown:
- Los meta-frameworks sobre Vite pueden fijar expectativas de comportamiento.
- Los autores de plugins escriben una vez y no reescriben en cada versión menor.
- Las herramientas de terceros que envuelven a Rolldown ganan un contrato firme.
- Los equipos actualizan dentro del rango sin miedo a roturas silenciosas.
Para un autor de plugins, esta estabilidad lo cambia todo. Antes de un 1.0, escribir un plugin contra una API en movimiento es apostar contra el tiempo: cada versión puede exigir reescrituras. Con la API congelada, el plugin que escribes hoy seguirá cargando mañana, y el conocimiento que inviertes en aprender los hooks no caduca. Esa es la señal que un ecosistema espera para comprometerse en serio: no la primera versión que funciona, sino la primera que promete no cambiar bajo tus pies.
Ese es el sentido profundo de un 1.0: no es una medalla técnica, es una promesa social. Dice a quien construye encima que puede invertir tiempo en aprender la interfaz y en escribir contra ella con la certeza de que ese esfuerzo no se evaporará en la próxima versión. Sin esa promesa, el ecosistema espera de brazos cruzados; con ella, se pone a construir. Por eso un 1.0 marca tantas veces el momento en que un proyecto pasa de curiosidad prometedora a cimiento sobre el que otros edifican.
El orden de los hitos de 2026 tiene su lógica. Vite 8 adoptó Rolldown como motor por defecto en marzo, cuando aún no era 1.0, porque dentro de Vite el motor está envuelto por la API de Vite y el usuario no toca a Rolldown directamente. Dos meses después, en mayo, Rolldown publicó su 1.0 y congeló su propia API pública. Esa secuencia —primero motor por defecto de Vite, luego API propia estable— refleja que la estabilización de cara al usuario de Vite llegó antes que la estabilización de cara a quien use Rolldown como bundler autónomo.
Qué todavía le falta
Un cierre honesto exige distinguir madurez de perfección. Rolldown 1.0 es estable y está en producción, pero no cubre aún el cien por cien de la superficie de Rollup. Quedan opciones y casos límite de Rollup que no se replican del todo o que se exponen distinto, algún plugin muy acoplado a detalles internos de Rollup que necesita ajustes, y heurísticas avanzadas —ciertas estrategias de troceado, escenarios de Module Federation— que siguen madurando. El modo de bundle completo en desarrollo, que la velocidad de Rolldown hace posible, todavía se está generalizando y no es el camino por defecto en todos los flujos.
Enumerados sin adornos, los huecos que quedan son estos:
- Paridad total con Rollup: ciertas opciones y casos límite aún no se replican o divergen.
- Heurísticas avanzadas de chunking y escenarios de Module Federation, todavía en maduración.
- El modo de bundle completo en dev: viable, pero aún no generalizado como camino por defecto.
- El ecosistema autónomo: más joven en documentación y recetas que el de Rollup.
// Rolldown como bundler autonomo: usable y estable, pero mas joven
// que Rollup en documentacion y ecosistema fuera de Vite
import { rolldown } from 'rolldown'
const bundle = await rolldown({ input: 'src/lib.ts' })
await bundle.write({ dir: 'dist', format: 'esm' })
Fuera de Vite, además, el ecosistema autónomo de Rolldown es más joven que el de Rollup: menos años de documentación, menos recetas de terceros, menos preguntas ya respondidas. Nada de esto contradice la madurez del 1.0; la matiza. La lectura correcta es que Rolldown es sólido para el caso central —ser el motor de Vite— y crecientemente sólido para el caso autónomo, con una superficie de compatibilidad que se acerca a la de Rollup pero que todavía no la iguala en cada rincón.
La disciplina para leer esto sin caer ni en el entusiasmo ciego ni en el escepticismo perezoso es distinguir tres estados. Lo que ya es sólido puedes usarlo en producción hoy sin reservas. Lo que aún madura conviene vigilarlo y no apoyar en ello lo más crítico todavía. Y lo más joven —el uso autónomo fuera de Vite— es viable pero pide más autonomía por tu parte, porque encontrarás menos respuestas hechas cuando algo se tuerza. Saber en qué estado vive cada pieza que usas es lo que convierte “es estable” en una decisión informada en lugar de un acto de fe.
Lo que ya es sólido
Motor por defecto de Vite 8, API 1.0 congelada por semver, la mayoría de plugins de Rollup y las transformaciones de Oxc integradas.
Lo que aún madura
Paridad total con opciones de Rollup, heurísticas avanzadas de chunking, Module Federation y el modo de bundle completo en dev.
Lo más joven
El uso autónomo fuera de Vite: menos documentación y ecosistema de terceros que los años acumulados por Rollup.
Hacia dónde va
La trayectoria de Rolldown no se entiende sola, sino como una pieza del toolchain unificado de VoidZero. La ambición es que un solo cimiento en Rust —el AST de Oxc— alimente todas las herramientas del flujo de trabajo: Rolldown para empaquetar, oxlint para analizar, oxfmt para formatear, el transformador de Oxc para transpilar y Vitest para testear, todo sobre una representación común que se parsea una vez. El destino es un mundo donde no hay cuatro herramientas releyendo tu código con cuatro gramáticas casi iguales, sino una pila coherente que comparte parser, resolver y semántica de punta a punta.
La dirección se puede desglosar en varios frentes que avanzan en paralelo:
- Un cimiento común: Oxc como parser y AST que alimenta bundling, linting, formateo y transformación.
- Rolldown autónomo: utilizable fuera de Vite como reemplazo directo de Rollup y de esbuild.
- Librerías con
tsdown: el empaquetado de paquetes, construido sobre Rolldown, ocupando el nicho de los empaquetadores previos. - Madurez del minificador y del transformador de Oxc, para cubrir de serie toda la cadena sin plugins externos.
flowchart TD oxc[Oxc y su AST compartido] --> rolldown[Rolldown bundler] oxc --> oxlint[oxlint linter] oxc --> oxfmt[oxfmt formateador] oxc --> trans[Transformador TS y JSX] rolldown --> vite[Vite 8] rolldown --> tsdown[tsdown para librerias] style oxc fill:#f38ba8,color:#11111b style rolldown fill:#94e2d5,color:#11111b style vite fill:#a6e3a1,color:#11111b
En paralelo, Rolldown crece como bundler autónomo más allá de Vite. Herramientas como tsdown —pensada para empaquetar librerías— se construyen sobre Rolldown, ocupando el nicho que antes cubrían empaquetadores basados en esbuild o en Rollup. La dirección es clara: que Rolldown pueda sustituir a Rollup y a esbuild no solo dentro de Vite, sino también en el empaquetado de bibliotecas y en pipelines independientes, con la misma promesa de velocidad de Rust y compatibilidad con la API de Rollup.
El horizonte, si la apuesta se cumple, es un flujo de trabajo donde un solo parseo alimenta todo: empaquetas, analizas, formateas y testeas sobre el mismo árbol, sin que ninguna herramienta vuelva a releer tu código con su propia gramática. Ese es el sentido último de VoidZero, y Rolldown es su pieza de empaquetado. Llegar del todo llevará tiempo, pero la dirección está fijada y el 1.0 es la primera piedra firme del camino.
Qué significa para ti hoy
Traducida a decisiones concretas, la madurez de 2026 deja un terreno bastante despejado. La postura razonable no es ni adoptar todo a ciegas ni esperar a una perfección que nunca llega, sino ubicar cada uso en su estado de madurez y actuar en consecuencia.
- Si usas Vite: actualiza a Vite 8 y olvídate del motor; es un detalle de implementación resuelto.
- Si empaquetas librerías: evalúa
tsdown, construido sobre Rolldown, como reemplazo de tu empaquetador actual. - Si escribes plugins: apunta a la API 1.0 y aprovecha los filtros de hooks para el rendimiento.
- Si mantienes un proyecto grande: mide tu build antes y después, y reporta cualquier divergencia que encuentres.
La forma más segura de incorporar Rolldown es por capas de compromiso creciente: primero como motor invisible de Vite 8, donde ya lo usas sin decidir nada; luego, si empaquetas librerías, probándolo vía tsdown en un paquete no crítico; y solo después, si te hace falta, como bundler autónomo en un pipeline propio. Cada capa te da experiencia con la anterior ya asentada, y en ningún momento apuestas más de lo que puedes revertir.
Rolldown en 2026 es lo bastante estable para confiarle tu build de producción y lo bastante joven todavía como para que reportar lo que descubras siga moviendo la aguja. Esa combinación —sólido para usar, vivo para mejorar— es exactamente la que define a un proyecto en su mejor momento.
Cerramos el nivel volviendo a la lección que lo ha atravesado entero, ahora con la perspectiva del tiempo. Rolldown 1.0 en 2026 es la culminación de una historia que empezó con webpack en JavaScript, pasó por la sacudida de esbuild en Go y llega a un bundler en Rust sobre Oxc que unifica lo que antes eran piezas dispersas. Si extraes una sola idea de todo este recorrido, que sea esta: los motores son mortales y las interfaces son duraderas. En una sola década, el motor del empaquetado se reescribió por completo tres veces, y cada reescritura prometía ser definitiva. Quien ató su conocimiento y su código al motor de moda tuvo que reaprender en cada salto; quien lo ató a la interfaz estable —la API de plugins de Rollup— migró gratis de un motor al siguiente sin tocar nada. El 1.0 de Rolldown, con su API congelada por semver, es una invitación explícita a hacer esa apuesta: estabiliza la interfaz para que puedas construir encima con la confianza de que no se moverá, precisamente porque sabe que su propio motor seguirá evolucionando debajo. Y no te dejes seducir por la promesa de finalidad. Rolldown no es el último bundler de la historia, igual que esbuild no lo fue; algún día habrá otro motor más rápido, quizá sobre otro sustrato que hoy no imaginamos. Lo que perdurará, si el diseño es bueno, es la interfaz: la forma de declarar entradas y salidas, el objeto de plugin, los hooks que aprendiste. Por eso la madurez de un proyecto no se mide por lo veloz que es hoy, sino por lo estable que promete ser su contrato mañana. Interioriza esta jerarquía y dejarás de perseguir la herramienta de moda para dominar el principio que las gobierna a todas: en un ecosistema donde los motores se reescriben cada pocos años, el conocimiento que no caduca es el de las interfaces que sobreviven a sus motores. Ese es el nivel Dios del build, y también el único seguro contra la obsolescencia.
- Explica con tus palabras qué garantiza y qué no garantiza que Rolldown sea 1.0 bajo semver.
- Ordena la cronología de 2026 y razona por qué Vite 8 lo adoptó por defecto antes de que Rolldown fuera 1.0.
- Enumera tres cosas que todavía le faltan a Rolldown frente a Rollup y clasifícalas por gravedad.
- Investiga
tsdowny explica qué nicho ocupa y sobre qué motor se construye. - Argumenta, con la historia webpack-esbuild-Rolldown como prueba, por qué conviene aprender la interfaz y no el motor.