Log in to leave a comment
No posts yet
La vida útil de la tecnología es más corta de lo que pensamos. Radix UI, que dominó el ecosistema de React durante los últimos años, es un ejemplo representativo. A partir de 2026, la frecuencia de commits en el repositorio de Radix UI Primitives ha caído a un promedio de menos de 0.5 veces por semana. Es, de hecho, un estado zombi. Por otro lado, Base UI, creado por los arquitectos principales que se unieron al equipo de MUI, está lanzando más de 25 actualizaciones diarias. No es una simple moda, es una cuestión de supervivencia.
En el pasado, nos entusiasmaba el patrón asChild de Radix. Sin embargo, en la práctica, este patrón era un dolor de cabeza. Al utilizar cloneElement internamente, los conflictos de props eran frecuentes y la inferencia de tipos en TypeScript siempre era inestable.
Base UI ha superado esto mediante el patrón Render Props. No se trata solo de un cambio de sintaxis. Optimiza el rendimiento al reducir la sobrecarga en tiempo de ejecución (runtime overhead) y permite que el desarrollador tenga un control del 100% sobre las props que se pasan a los elementos hijos.
En Base UI, el estado interno del componente se puede recibir inmediatamente como un argumento dentro de la función de renderizado. No es necesario conectar hooks externos de forma desordenada como en Radix.
cloneElement, el cual el equipo de React desaconseja.La Ley Europea de Accesibilidad (EAA) y los estándares WCAG 2.2, que entran en vigor a partir de 2026, ya no son opcionales, sino obligatorios. Base UI mantiene atributos ARIA consistentes en entornos de renderizado del lado del servidor (SSR). Esto evita el desplazamiento del diseño (layout shift) durante el proceso de hidratación y mejora significativamente el tiempo de interacción (TTI).
La tarea más dolorosa en un entorno empresarial es la implementación de Multi-select o Combobox. Radix carecía de estos widgets de alto rendimiento, por lo que siempre había que añadir múltiples librerías externas.
Base UI soporta la funcionalidad de selección múltiple de forma nativa. Especialmente, su combinación con librerías de virtualización como @tanstack/react-virtual es fluida. Su verdadero valor se revela al manejar grandes volúmenes de datos.
El patrón Function as ClassName de Base UI es más potente cuando se combina con Tailwind CSS. Permite gestionar los estilos de forma declarativa en lugar de usar complejos operadores ternarios.
typescript <Select.Item className={(state) =>
flex items-center px-4 py-2 rounded-lg
${state.highlighted ? 'bg-indigo-50 text-indigo-900' : 'text-slate-700'}
${state.selected ? 'font-semibold bg-indigo-100' : 'font-normal'}
${state.disabled ? 'opacity-40 cursor-not-allowed' : 'cursor-pointer'}
`}
{item.label}
</Select.Item>
`
Reescribir todo el código a la vez es un acto suicida. Se requiere un enfoque gradual y estratégico.
Fase 1: Periodo de coexistencia
Mantenga el Radix UI existente mientras instala en paralelo npm install @base-ui-components/react.
Fase 2: Aplicación prioritaria en nuevas funcionalidades
Introduzca primero Base UI en los nuevos modales o formularios complejos que se añadan. Esto permite ganar tiempo para que los miembros del equipo se familiaricen con el patrón Render Props.
Fase 3: Reemplazo del sistema de diseño principal
Reemplace solo la implementación interna de los componentes comunes del sistema de diseño con Base UI. Al mantener la interfaz de la API externa, puede modernizar la arquitectura subyacente sin afectar el código de otros equipos.
| Elemento de comparación | Radix UI | Base UI |
|---|---|---|
| Mecanismo central | Inyección de props con cloneElement | Llamada a función Render Props |
| Control de props | Bajo (dominado por la librería) | Alto (pasado directamente por el desarrollador) |
| Acceso al estado | Requiere hooks externos | Inyección inmediata como argumento de la función de render |
| Estado de mantenimiento | Prácticamente suspendido (a partir de 2026) | Muy activo (liderado por el equipo de MUI) |
Las actualizaciones más recientes de shadcn/ui ya han comenzado a adoptar Base UI como sus componentes primitivos por defecto. El liderazgo del mercado ha cambiado por completo. La deuda técnica acumula intereses cuanto más se ignora. La innovación que ofrecía Radix UI ha evolucionado ahora hacia una forma más completa llamada Base UI.
La mantenibilidad y el cumplimiento de los estándares de accesibilidad son las competencias clave de un desarrollador frontend en 2026. Es hora de cambiar a herramientas más claras y centradas en el rendimiento. Los proyectos de 2026 ya no deben permanecer en el legado del ayer.