Apps colaborativas en tiempo real: sincronización en directo sin conflictos
Los usuarios esperan ver las ediciones de los demás al instante: sin recargar, sin conflictos y sin perder trabajo. Eso no es una funcionalidad que se añade a una API REST. Es una arquitectura de datos distinta, un modelo de consistencia distinto y un conjunto de modos de fallo distinto que la mayoría de las librerías de sincronización se limitan a esconder.
- 1Edición localEl usuario A escribe: se aplica al estado local de forma optimista
- 2Registro de operacionesEl cambio se registra como un delta CRDT, no como una instantánea completa
- 3DifusiónEl delta se envía a todos los pares conectados por WebSocket
- 4FusiónCada par fusiona de forma determinista, sin diálogo de conflicto
- 5ConvergenciaTodos los clientes llegan al mismo estado, con consistencia eventual
Las ediciones sin conexión se encolan en local y se fusionan al reconectar con las mismas reglas deterministas.
Qué obtienes
Cuándo encaja
- Varios usuarios trabajan a la vez en el mismo documento, canvas o estructura de datos
- Los usuarios esperan que los cambios aparezcan sin recargar la página: el modelo «gana el último guardado» es un problema de experiencia de usuario, no una limitación asumida
- Necesitas soporte sin conexión: tus usuarios trabajan en aviones y en sótanos, y su trabajo no debería desaparecer
- La solución actual consiste en hacer polling cada N segundos y llamarlo «tiempo real»
Cuándo no
- La colaboración es secuencial, no simultánea: la mayoría de los flujos en los que solo edita un usuario a la vez no necesitan CRDT, necesitan una interfaz optimista
- El modelo de datos es de solo anexión (feeds de actividad, logs, chat): suelen bastar patrones más sencillos de event sourcing
- Tu equipo nunca ha lanzado un producto en tiempo real: valora primero una capa gestionada (Liveblocks, Ably) y cuenta con nosotros cuando llegues a sus límites
Proceso
Semana 1: análisis del modelo de datos y catálogo de escenarios de conflicto; enumeramos todas las combinaciones de edición simultánea antes de escribir código. Semanas 2–5: implementación del motor de sincronización con un banco de pruebas que reproduce los escenarios de conflicto registrados. Semanas 6–9: capa de presencia, soporte sin conexión y pruebas de escala. Semana 10: paneles de observabilidad y runbooks.
Proceso de entrega completoPrecios
Precio cerrado según la complejidad del modelo de datos. Texto simple o enriquecido: $80–160k. Datos estructurados con reglas de fusión a medida: $150–350k. Canvas o espacial (estilo Figma): $200–500k. La integración con una capa gestionada (Liveblocks, Loro) es más rápida y barata, y te la recomendaremos con honestidad si encaja.
Ver modelos de colaboraciónSectores en los que aplicamos este servicio
Preguntas frecuentes
- ¿CRDT u Operational Transform? ¿Cómo elegimos?
- OT es una tecnología madura para la edición secuencial de texto (la usa Google Docs). Los CRDT funcionan mejor con datos estructurados, datos espaciales y sistemas en los que el servidor no siempre tiene la última palabra. La elección depende de tu modelo de datos: en la semana uno analizamos los pros y contras frente a tu esquema concreto.
- ¿Y Liveblocks o Yjs? ¿Por qué construir algo a medida?
- Liveblocks, Yjs y Loro resuelven el 80 % del problema rápidamente, y te diremos si encajan con tu caso porque se lanzan antes. La sincronización a medida tiene sentido cuando tu modelo de datos tiene una semántica que la librería no puede expresar (por ejemplo, un canvas con operaciones no conmutativas) o cuando el precio de la capa gestionada no sale a cuenta a tu escala.
- ¿Cómo gestionáis que un usuario se quede sin conexión a media edición?
- Las ediciones sin conexión se acumulan en un registro local de deltas CRDT, persistido en IndexedDB. Al reconectar, el delta se envía y se fusiona en el servidor. La fusión es determinista: no hay ningún diálogo de «¿qué versión quieres conservar?». El único caso límite son los borrados intencionados, que diseñamos como tombstones en lugar de como operaciones de eliminación.

Quién lo construye
Nuestro propio equipo, que trabaja desde nuestra oficina en Istočno Sarajevo, Bosnia y Herzegovina. Los ingenieros de tu llamada para definir el alcance son quienes lo construyen.
Conoce al equipo