Un análisis del JavaScript Oxidation Compiler
Oxc explicado: herramientas Rust para JavaScript y TypeScript, Oxlint, Oxfmt, transformador, minificador y comparación con ESLint, Prettier, SWC y Biome.
Oxc, el JavaScript Oxidation Compiler, es un conjunto de herramientas de alto rendimiento para JavaScript y TypeScript escritas en Rust, construidas sobre un parser y un AST compartidos, de modo que el linter, el formateador, el transformador, el minificador y el resolver nunca vuelvan a parsear tu código de forma independiente.
Si alguna vez has lanzado un lint en un monorepo grande, te has ido a preparar un café y al volver seguía ejecutándose, ya sabes por qué una reescritura en Rust del toolchain de JavaScript ha llamado tanto la atención. Esa espera, multiplicada por cada desarrollador y cada job de CI, es la razón principal de que Oxc exista.
Es la capa de compilación que hay debajo del toolchain de VoidZero y, desde Vite 8, es la maquinaria que hace el trabajo real de lenguaje dentro de cada build de Vite.
Si tu pipeline de ESLint/Babel/Prettier es lento y has estado siguiendo la ola de herramientas en Rust (esbuild, SWC, Biome, Oxc), la pregunta práctica no es «¿es Oxc rápido?». Es «¿qué piezas están listas para producción hoy y cómo encajan con lo que ya ejecuto?». Este artículo responde a eso: qué es Oxc, qué incluye, qué puedes adoptar con seguridad ahora y cómo se compara con las alternativas.
Puntos clave
- Oxc es una suite de herramientas para JavaScript/TypeScript basada en Rust: parser, linter (Oxlint), formateador (Oxfmt), transformador, minificador y resolver, todos compartiendo un mismo parser y AST.
- Oxlint es la pieza destacada: un linter estable en su versión 1.x que el proyecto mide como entre 50 y 100 veces más rápido que ESLint, con 844 reglas integradas y linting con conocimiento de tipos ya disponible.
- Oxc ya se ejecuta en producción de forma indirecta: Rolldown 1.0 alcanzó la estabilidad el 7 de mayo de 2026, y Vite 8 usa Oxc para las transformaciones de JavaScript y la minificación de JavaScript, dejando la minificación de CSS en manos de Lightning CSS.
- Oxfmt llegó a beta y ahora iguala a Prettier en toda su suite de conformidad de JavaScript y TypeScript, aunque sigue en versionado 0.x.
- La vía de adopción con menor riesgo es ejecutar Oxlint como linter de primera pasada rápida junto a ESLint en CI.
¿Qué es Oxc, el JavaScript Oxidation Compiler?
Oxc es una suite de herramientas nativas de Rust para JavaScript y TypeScript que comparten un único parser y AST, de modo que el comportamiento se mantiene consistente y ninguna herramienta duplica el trabajo de parseo. El nombre hace un guiño a Rust: el óxido (rust) es en lo que se convierte el metal cuando se oxida. Aquí la velocidad se trata como algo que el proyecto tiene que entregar, no como un efecto secundario agradable, partiendo del razonamiento de que un linter más rápido significa un ciclo de editar-y-comprobar más ajustado en local y una factura de CI menor.
La razón por la que Oxc importa más allá de sus propias CLIs es que es el compilador que sustenta el stack moderno de Vite. Rolldown es un bundler en Rust, y delega el trabajo a nivel de lenguaje, incluidos el parseo y la minificación, en Oxc. A partir de Vite 8, las tres capas las construyen equipos que trabajan de forma coordinada: Vite como build tool, Rolldown como bundler y Oxc como el compilador que hay debajo de ambos. Así que incluso los desarrolladores que nunca instalan un paquete de Oxc están ejecutando su parser y su transformador en cada build.
También hay contexto sobre la propiedad del proyecto que merece la pena conocer antes de apostar un pipeline por ello. El 4 de junio de 2026, Cloudflare anunció que había comprado VoidZero, la empresa de código abierto que mantiene Vite y las herramientas a su alrededor, Oxc incluido. Ambas partes afirman que los proyectos siguen siendo open source y neutrales respecto a proveedores, con Vite, Vitest, Rolldown, Oxc y Vite+ permaneciendo bajo licencias MIT, y Cloudflare ha aportado 1 millón de dólares a un fondo independiente para mantenedores y colaboradores de Vite. VoidZero se creó en 2023 por Evan You, creador de Vue.js.
Los componentes y qué reemplaza cada uno
Discover how at OpenReplay.com.
Oxc se distribuye como piezas separadas y componibles, así que puedes adoptar una sin el resto. Cada una apunta a un actor establecido y lento basado en JavaScript:
| Componente | Reemplaza a | Función |
|---|---|---|
| Oxlint | ESLint | Linter para JS/TS |
| Oxfmt | Prettier | Formateador de código |
| Parser | Acorn / @babel/parser / parseo de tsc | AST compartido para todas las herramientas |
| Transformador | Babel / transpilación de tsc / transform de esbuild | TS, JSX, downleveling de JS moderno |
| Minificador | Terser / minify de esbuild | Minificación para producción |
| Resolver | enhanced-resolve | Resolución de módulos |
El parser es el ancla. Todos los demás componentes leen su salida, y por eso Oxc puede presentarse como un único toolchain en lugar de seis herramientas que casualmente están escritas en Rust.
¿Por qué es rápido Oxc?
La velocidad de Oxc proviene de la arquitectura, no de la micro-optimización. Tres decisiones hacen la mayor parte del trabajo. Primero, es Rust compilado en lugar de JavaScript interpretado, por lo que los hot paths se ejecutan a velocidad nativa y evitan las pausas del recolector de basura. Segundo, todas las herramientas operan sobre un único AST compartido, lo que elimina el re-parseo redundante que ocurre cuando ESLint, Prettier y Babel parsean cada uno el mismo archivo por separado. Tercero, los nodos del AST se asignan en una arena de memoria para permitir una liberación masiva y económica, y el análisis se paraleliza entre los núcleos de la CPU.
El resultado está medido, y las cifras son benchmarks propios del proyecto, así que tómalas como tales. VoidZero informa de Oxlint entre 50 y 100 veces más rápido que ESLint, Oxfmt con 30× o más el throughput de Prettier y entre 2× y 3× el de Biome en una primera ejecución sin caché, y Rolldown con builds hasta 10-30x más rápidos que Rollup. La cifra de Biome es un rango porque las propias fuentes de Oxc no coinciden: la documentación del formateador cita 2×, el anuncio de la beta 3×. Benchmarks distintos en máquinas distintas darán resultados distintos; la magnitud de la ventaja es real, el multiplicador exacto es marketing hasta que lo ejecutes en tu propio repositorio.
¿Qué está listo para producción en Oxc hoy?
La madurez en Oxc depende de cómo consumas cada herramienta. Oxlint y el parser son realmente de nivel producción de forma independiente; el transformador y el minificador están pre-1.0 como CLIs, pero ya se distribuyen en producción dentro de Rolldown y Vite 8; Oxfmt está en beta.
| Componente | Estado | Cómo lo consumes hoy |
|---|---|---|
| Oxlint | Estable, 1.x | Instalación directa; ejecución en CI |
| Parser | Nivel producción | Base bajo Rolldown/Vite |
| Transformador | Pre-1.0 de forma independiente | Se distribuye en los builds de Vite 8 |
| Minificador | Pre-1.0 de forma independiente | Por defecto en Rolldown |
| Oxfmt | Beta, 0.x | Piloto junto a Prettier |
Oxlint es la pieza claramente destacada. Lanzó una versión 1.0 estable en junio de 2025, con Shopify, Airbnb y Mercedes-Benz mencionados en las notas de lanzamiento como usuarios en producción, y ahora está en la línea 1.x con 844 reglas integradas. Oxlint también hace linting con conocimiento de tipos: el backend tsgolint conecta el propio sistema de tipos de TypeScript con la CLI y el formato de configuración de Oxlint, y cubre 59 de las 61 reglas con conocimiento de tipos que ofrece typescript-eslint. Las salvedades honestas: es opt-in, necesita el paquete separado oxlint-tsgolint instalado junto a Oxlint, y los números de versión de ese paquete siguen la release de TypeScript contra la que se compila en lugar de los de Oxlint, así que ambos avanzan en calendarios diferentes. El equipo también ha cerrado la puerta a reglas fuera del conjunto de typescript-eslint mientras trabaja en cobertura y rendimiento, lo que descarta las reglas personalizadas con conocimiento de tipos por ahora.
No interpretes «el transformador y el minificador están pre-1.0» como «no están listos para producción». Ambos ya se ejecutan bajo cada build de Vite 8. La guía de migración de Vite 8 detalla el reparto de tareas: Oxc asumió la transformación de JavaScript y la minificación de JavaScript, antes a cargo de esbuild, mientras que Lightning CSS pasó a ser el valor por defecto para minificar CSS. Oxfmt, por su parte, pasó de alpha a beta y ahora supera toda la suite de conformidad de JavaScript y TypeScript de Prettier, pero npm sigue etiquetándolo como Beta, así que es un piloto, no todavía una sustitución total de Prettier.
Cómo se compara Oxc con SWC y Biome
El error de comparación más habitual es enfrentar Oxc a SWC en términos de velocidad. Ocupan capas distintas. SWC es una plataforma de compilación que los frameworks integran: Next.js es dueño de su integración con SWC, y no deberías arrancarla persiguiendo un gráfico de benchmarks. El transformador de Oxc compite con SWC y Babel, pero SWC no tiene linter ni formateador propios, así que Oxlint compite con ESLint y Biome, no con SWC. Biome es el rival más cercano: una herramienta en Rust que hace lint y format en un solo binario, mientras que Oxc mantiene Oxlint y Oxfmt como piezas separadas y componibles.
Dado eso, el movimiento pragmático es adoptar Oxlint ahora y observar el resto. Ejecútalo como primera pasada rápida en CI mientras mantienes ESLint para las reglas y plugins que aún no cubre:
{
"scripts": {
"lint:fast": "oxlint",
"lint": "oxlint && eslint ."
}
}
Para reducir el solapamiento, la documentación apunta a @oxlint/migrate para traducir una configuración de ESLint existente, además de eslint-plugin-oxlint para desactivar las reglas que Oxlint ya cubre. Así consigues la ganancia de velocidad en la ruta rápida sin renunciar a la cobertura de ESLint en la ejecución completa.
Oxc ha pasado de ser un «proyecto prometedor en Rust» a ser infraestructura de la que ya dependen millones de builds, pero no de forma uniforme en toda su superficie. Empieza por Oxlint (estable, rápido y de bajo riesgo junto a tu linter actual), prueba Oxfmt en una rama para revisar el diff, y deja que el transformador y el minificador te lleguen a través de Vite 8 en lugar de adoptarlos de forma independiente. Reevalúa las piezas pre-1.0 a medida que se gradúen; la dirección del proyecto es lo bastante clara como para planificar en torno a ella.
Preguntas frecuentes
¿Puedo ejecutar Oxlint y ESLint juntos o tengo que elegir uno?
Puedes ejecutar ambos, y hacerlo es la vía de adopción recomendada. Usa Oxlint como primera pasada rápida en CI y mantén ESLint para las reglas y plugins que Oxlint todavía no cubre. La documentación de Oxc apunta a '@oxlint/migrate' para traducir una configuración de ESLint existente y a 'eslint-plugin-oxlint' para desactivar las reglas de ESLint que Oxlint ya cubre, lo que elimina el trabajo duplicado mientras ejecutas ambos linters.
¿Oxc reemplaza a SWC y debería quitar SWC de Next.js para usarlo?
No. El transformador de Oxc compite con SWC y Babel, pero no deberías arrancar SWC de un framework que lo integra, como Next.js, persiguiendo un benchmark. SWC es una plataforma de compilación que los frameworks gestionan internamente, y SWC no tiene linter ni formateador propios, así que Oxlint compite con ESLint y Biome en lugar de con SWC. La superficie de adopción segura es Oxlint, no sustituir el compilador integrado de un framework.
¿Cuál es la diferencia entre Oxc y Biome?
Biome es un único binario en Rust que hace tanto linting como formateo, mientras que Oxc mantiene su linter (Oxlint) y su formateador (Oxfmt) como piezas separadas y componibles que puedes adoptar de forma independiente. Oxc también es más amplio: incluye un parser, un transformador, un minificador y un resolver que impulsan Rolldown y Vite 8, mientras que Biome se centra en la capa de lint y formateo. En una ejecución inicial sin caché, los benchmarks de VoidZero sitúan a Oxfmt entre 2 y 3 veces más rápido que Biome; la documentación de Oxfmt y el anuncio de la beta citan cifras diferentes para esa comparación.
¿La adquisición de VoidZero por parte de Cloudflare cambia si Oxc seguirá siendo open source?
No. Cloudflare adquirió VoidZero el 4 de junio de 2026, y ambas empresas afirman que los proyectos siguen siendo open source y neutrales respecto a proveedores. Vite, Vitest, Rolldown, Oxc y Vite+ permanecen bajo licencias MIT, y Cloudflare ha comprometido 1 millón de dólares a un nuevo fondo independiente para el ecosistema de Vite destinado a mantenedores y colaboradores no vinculados ni a VoidZero ni a Cloudflare. La licencia MIT implica que los forks y usos existentes no se ven afectados, independientemente de quién sea el propietario.
Gain Debugging Superpowers
Unleash the power of session replay to reproduce bugs, track slowdowns and uncover frustrations in your app. Get complete visibility into your frontend with OpenReplay — the most advanced open-source session replay tool for developers.
Star on GitHub12k