Los equipos de front-end a menudo se ahogan en interminables «lanzamientos menores»: cambiar el orden de los bloques, el texto en el banner, lanzar una promoción y, de nuevo, compilar, probar, implementar en todas las plataformas. En el móvil se añade la moderación de la tienda, en la web, el riesgo de romper lo que funcionaba ayer. Como resultado, la velocidad del producto disminuye y el desarrollador de front-end se convierte en un «maquetador manual de correcciones».
Server-Driven UI (SDUI) cambia las reglas: el servidor no solo entrega datos, sino también descripción de la interfaz — qué componentes renderizar, en qué orden y con qué parámetros. El cliente se convierte en un motor de renderizado estable que entiende el contrato y ensambla la pantalla a partir de bloques prefabricados. El resultado: los cambios y experimentos llegan a los usuarios de inmediato, sin actualizar la aplicación y sin despliegues nocturnos innecesarios.

¿Por qué es necesario? 🤔
Modificaciones sin lanzamiento: textos, orden de bloques, banners: todo cambia en el servidor, el usuario lo ve de inmediato.
Pruebas A/B y marcas de características: diferentes configuraciones para los segmentos sin actualizar los clientes.
Contrato único para iOS/Android/Web: menos discrepancias entre plataformas.
Campañas rápidas: La «pantalla de Año Nuevo» se implementa como una configuración, no como una nueva compilación.
Cómo es el esquema SDUI
El servidor devuelve la estructura: layout (jerarquía), una lista de componentes con type y props, acciones y metainformación (versión, TTL, indicadores).
{
"version": "1.3",
"page": "product",
"layout": {
"type": "Scroll",
"children": [
{ "type": "Title", "props": { "text": "Best offer of the day" } },
{ "type": "Image", "props": { "src": "https://cdn/app/promo.jpg", "ratio": 1.6 } },
{
"type": "Card",
"props": {
"title": "Pro Headphones",
"price": "7 990 ₽",
"cta": { "type": "Action", "name": "buy", "params": { "id": "hp-2025" } }
}
}
]
},
"tracking": [{ "event": "view_product", "params": { "id": "hp-2025" } }]
}El cliente compara "type" → componente local: Title → <Title/>, Card → <ProductCard/>, etc.
¿Cómo se ejecuta en el cliente?
Obtenemos el esquema (con caché y control de versiones).
Validamos (JSON Schema/Protobuf) y hacemos graceful-fallback en caso de errores.
Mapeamos
typea componentes locales a través del registro.Renderizamos y conectamos los controladores de acción (navegación, API, seguimiento).
// Pseudocódigo de TypeScript
const registry = {
Title: (p) => <Title {...p} />,
Image: (p) => <Image {...p} />,
Card: (p) => <ProductCard {...p} />,
};
function renderNode(node) {
const Component = registry[node.type] ?? Fallback;
const children = (node.children || []).map(renderNode);
return <Component {...(node.props||{})}>{children}</Component>;
}Dónde entra especialmente el SDUI 🎯
Guion | ¿Por qué SDUI? |
|---|---|
Aplicaciones móviles | Menos lanzamientos por el contenido, evitando la moderación de la tienda |
Mercados y medios | Vitrinas/landings rápidos y campañas de temporada |
Personalización | Configuraciones para segmentos/audiencias «desde el centro» |
Superaplicaciones, miniaplicaciones | Pantallas integradas y composición flexible de bloques |
Pros y contras
Ventajas: ediciones sin despliegue del cliente, pruebas A/B rápidas, consistencia entre plataformas, personalización.
Desventajas: disciplina del contrato y versiones, costes de registro/validadores/fallbacks, menos «libertad visual» (resuelto por tokens de diseño).
Errores frecuentes y cómo evitarlos
Sin control de versiones: añada
version, mantenga varios esquemas de generación.Componentes «universales» gigantes: mantén los bloques de granularidad media (Card, Banner, List).
Sin validación: JSON Schema/Proto + campos obligatorios y valores predeterminados.
Ignorar caché:
ETag/Last-Modified, TTL, stale-while-revalidate.No hay análisis: describir los eventos en el esquema y procesarlos de forma centralizada.
Cuando no se necesita SDUI
Pantallas de movimiento supercreativas y animaciones personalizadas densas.
Las páginas de aterrizaje promocionales desechables son más fáciles de usar con contenido estático/SSR.
Equipos donde el «pixel perfecto a cualquier precio» es más importante que la escala.
Mini ejemplo de esquema para una campaña A/B
{
"version": "2.0",
"experiment": "hero_ab",
"variant": "B",
"layout": {
"type": "Scroll",
"children": [
{ "type": "Banner", "props": { "style": "bright", "text": "-20% today" } },
{ "type": "Grid", "props": { "cols": 2 }, "children": [
{ "type": "Card", "props": { "title": "Product A", "price": "1 990 ₽" } },
{ "type": "Card", "props": { "title": "Product B", "price": "2 190 ₽" } }
] }
]
}
}Conclusión 💡
SDUI convierte el front-end en renderizador estable, y el producto en diseñador rápido de pantallas. Esto ahorra semanas de lanzamientos menores, acelera los experimentos y alinea la UX en todas las plataformas. Si su contenido cambia con frecuencia o si lanza campañas, SDUI se amortiza rápidamente.
En Codice hacemos que el aprendizaje de la programación sea emocionante y comprensible: tenemos cursos interesantes con tareas que ayudan a mejorar las habilidades paso a paso.
Y también tenemos un canal de telegram, donde discutimos ideas geniales, compartimos experiencias y analizamos juntos las tareas: aprender no solo es útil, sino también divertido.
¿Has probado el SDUI? ¿Dónde funcionó y dónde falló, y por qué?
