Actualizaciones Optimistas y UX de Rollback
Aprenda a diseñar actualizaciones optimistas para que su aplicación se sienta instantánea al usuario, y cómo gestionar los fallos de red con experiencias de rollback elegantes.
El Secreto de la Velocidad en Apps Modernas
Imagina que pulsas el botón de “Me gusta” en Instagram. Si el icono de corazón no se iluminara de rojo hasta que el servidor devuelva un “OK”, la aplicación se sentiría lenta y pesada.
Gracias a las actualizaciones optimistas, el corazón se vuelve rojo en milisegundos. El usuario siente que la app es rapidísima, aunque en realidad la petición al servidor siga viajando por el espacio. Es una técnica de Rendimiento Percibido que elimina la fricción de la espera.
El Ciclo de Vida de una Acción Optimista
Para implementar esta técnica correctamente, el sistema debe seguir estos pasos visuales:
- Acción del Usuario: “Hago click en el botón de Guardar”.
- Estado Optimista: El sistema muestra inmediatamente el éxito (botón pulsado o check verde) y envía la petición por detrás.
- Respuesta Exitosa: Si el servidor responde OK, el estado optimista se consolida silenciosamente.
- Respuesta Fallida (El Retroceso): Si el servidor responde con un error, el sistema debe ejecutar el Rollback.
El Desafío del Rollback: Diseñar para el Fallo
El fallo es inevitable. Si la conexión de tu usuario se corta justo después de que haya dado un “Like” optimista, el sistema debe revertir el cambio visual. Pero, ¿cómo hacerlo sin que el usuario se sienta engañados o confundido?
Malas Prácticas de Rollback:
- Que el corazón “desaparezca” de repente sin ninguna explicación.
- Mostrar un modal de error gigante que bloquee al usuario.
Mejores Prácticas de Rollback:
- Indicador de Sincronización: Si algo está tardando o parece que va a fallar, usa un pequeño spinner o icono de “Sincronizando…” de forma discreta.
- Microinteracción de Retroceso: Usa una animación clara para que el usuario vea que la acción se ha deshecho (ej. una animación de salida para un mensaje no enviado).
- Notificación y Opción de Reintento: Muestra un “Toast” o aviso que diga: “No se pudo guardar el cambio. ¿Quieres reintentar?”. Esto le da el control de nuevo al usuario.
¿Cuándo NO usar Actualizaciones Optimistas?
No todas las acciones deben ser “optimistas”. Hay momentos donde la seguridad es más importante que la velocidad percibida:
- Acciones Críticas de Seguridad: Cambiar una contraseña o PIN bancario.
- Acciones Irreversibles de Alto Riesgo: Realizar una transferencia de dinero de 5.000€. En estos casos, el usuario quiere y necesita ver que el sistema está validando la operación de forma segura.
- Acciones Destructivas: Borrar toda la cuenta de usuario. Es mejor esperar al OK del servidor para confirmar que la destrucción se ha completado.
Consejos de Mentor
- Diseña para el estado “En Curso”: A veces el usuario pulsa un botón varias veces si no ve nada. Un pequeño cambio visual (como un tono de color diferente) puede indicar que “el sistema ya está trabajando” en modo optimista.
- Consistencia en el Rollback: Si el usuario ha mandado un mensaje que ha fallado y se ha hecho rollback, no dejes que el mensaje se pierda. Mantenlo en el cuadro de texto para que no tenga que volver a escribirlo.
- Colabora con Ingeniería: Esta técnica requiere mucha coordinación técnica (usualmente con librerías como React Query o Apollo). Habla con tus desarrolladores para ver qué acciones son candidatas ideales para ser optimistas.
Recursos y Herramientas
- Figma Engineering: How Figma Handles Consistency (Undo/Redo)
- React Query: Optimistic Updates Documentation
- Smashing Magazine: Best Practices for Perceived Performance
- Artículos: Designing for Fault-Tolerant UI
diseno-rendimiento-percibido offline-first-flows conflict-resolution prevention-vs-recovery-errors