Lineamientos del diseño de UX sin conexión

En esta página, se proporcionan lineamientos de diseño para crear una excelente experiencia del usuario en redes lentas y sin conexión.

La calidad de una conexión de red puede verse afectada por varios factores, como los siguientes:

  • Mala cobertura del proveedor de red
  • Condiciones climáticas extremas
  • Interrupciones de energía
  • Entrar en "zonas muertas" permanentes, como en edificios con paredes que bloquean las conexiones de red
  • Ingresar a "zonas muertas" temporales, como cuando viajas en un tren y pasas por un túnel
  • Conexiones a Internet con límite de tiempo, como las de aeropuertos o hoteles
  • Prácticas culturales que requieren acceso limitado a Internet o no tienen acceso en momentos o días específicos

Tu objetivo como desarrollador es proporcionar una buena experiencia que disminuya el impacto de los cambios en la conectividad.

Decide qué mostrarles a los usuarios cuando tengan una mala conexión de red

La primera pregunta que debes hacer es cómo se ven el éxito y la falla de una conexión de red para tu app. Una conexión correcta es la experiencia en línea normal de tu app. La falla de conexión incluye cómo se comporta tu app sin conexión y en redes con retrasos.

Para determinar cómo controlar la falla de conexión, hazte estas preguntas importantes de UX:

  • ¿Cuánto tiempo esperas para determinar el éxito o el fracaso de una conexión?
  • ¿Qué puedes hacer mientras se determina el éxito o el fracaso?
  • ¿Qué debes hacer si falla la conexión?
  • ¿Cómo le dices al usuario lo que está sucediendo?

Informa a los usuarios sobre su estado actual y el cambio de estado

Infórmale al usuario el estado de la aplicación y las acciones que puede realizar cuando tenga una falla de red. Por ejemplo, una notificación podría decir lo siguiente:

Parece que tienes una mala conexión de red. No se preocupe. Los mensajes se enviarán cuando se restablezca la red.

La app de mensajes de emojis Emojoy le informa al usuario cuando se produce un cambio de estado.
Informa al usuario de forma clara y lo antes posible cuando se produzca un cambio de estado.
La app de I/O 2016 informa al usuario cuando se produce un cambio de estado.
La app de Google I/O usaba un "toast" para informarle al usuario cuando estaba sin conexión.

Informa a los usuarios cuando la conexión de red mejore o se restablezca

La forma en que le digas al usuario que su conexión de red mejoró depende de tu aplicación. Las apps que priorizan la información actual, como los servicios de seguimiento del clima o de la bolsa, deben actualizarse automáticamente y avisar al usuario lo antes posible.

Te recomendamos que le avises al usuario que tu app web se actualizó "en segundo plano" con un indicador visual, como un elemento de notificación de Material Design. Esto implica detectar la presencia de un trabajador de servicio y una actualización de su contenido administrado. Puedes ver un ejemplo de código de esta función en acción aquí.

Un ejemplo de esto es Chrome Platform Status, que publica una nota para el usuario cuando se actualiza la app.

Ejemplo de una app del clima
Algunas apps, como la del clima, deben actualizarse automáticamente porque los datos antiguos no son útiles.
Chrome Status usa una notificación breve.
Las apps como Chrome Status usan notificaciones emergentes para informar al usuario cuando se actualiza el contenido.

Algunas apps siempre pueden mostrar la última vez que se actualizaron. Por ejemplo, esto es útil para las apps de conversión de monedas.

La app de Material Money está desactualizada.
Almacena en caché las tarifas de Material Money…
Se actualizó el dinero de material.
…y notifica al usuario cuando se actualiza la app.

Las apps de noticias pueden mostrar una notificación simple para actualizar con la que se le informa al usuario que hay contenido nuevo. Si se actualizara automáticamente un artículo, los usuarios perderían su lugar.

Ejemplo de una app de noticias, Tailpiece, en su estado normal
El periódico en línea Tailpiece descarga automáticamente las noticias más recientes…
Ejemplo de la cola de la app de noticias cuando esté lista para actualizarse
pero permite que los usuarios las actualicen de forma manual para que no pierdan su lugar en un artículo.

Actualiza la IU para que refleje el estado contextual actual

Cada elemento de la IU puede tener su propio contexto y comportamiento que cambia según si necesita una conexión correcta. Un ejemplo sería un sitio de comercio electrónico que se puede explorar sin conexión, pero que inhabilita los precios y el botón Comprar hasta que se restablece una conexión.

Otras formas de estados contextuales pueden incluir datos. Por ejemplo, la app financiera Robinhood usa colores y gráficos para indicarle al usuario cuándo está abierto el mercado de valores. Toda la interfaz se vuelve blanca y, luego, se atenúa cuando cierra el mercado. Cuando el valor de una acción aumenta o disminuye, cada widget de acciones individual se vuelve verde o rojo según su estado.

Informa al usuario para que comprenda qué es el modelo sin conexión

La mayoría de los usuarios están acostumbrados a tener siempre una conexión de red. Debes informarles sobre los cambios que se producen en tu app cuando no tienen conexión. Infórmale dónde se guardan los datos grandes y proporciónale la configuración para cambiar el comportamiento predeterminado. Usa varios componentes de diseño de IU (como lenguaje informativo, íconos, notificaciones, color e imágenes) en conjunto para transmitir estas ideas, en lugar de depender de una sola opción de diseño, como un ícono por sí solo, para contar toda la historia.

Proporciona una experiencia sin conexión de forma predeterminada

Si tu app no requiere muchos datos, almacena en caché esos datos de forma predeterminada. Los usuarios pueden frustrarse cada vez más si solo pueden acceder a sus datos con una conexión de red.

Intenta que la experiencia sea lo más estable posible. Una conexión inestable hace que la app parezca poco confiable. Una app que disminuye el impacto de una falla de red deleita a sus usuarios.

Los sitios de noticias pueden beneficiarse de la descarga y el guardado automáticos de las noticias más recientes, quizás ahorrando datos descargando solo el texto, de modo que un usuario pueda leer las noticias del día sin conexión. Puedes adaptar este comportamiento al del usuario si priorizas la descarga de las categorías de noticias que el usuario ve con más frecuencia.

La cola usa varios widgets de diseño para indicarle al usuario que no tiene conexión.
Si el dispositivo no tiene conexión, Tailpiece notifica al usuario con un mensaje de estado…
El pie de página tiene un indicador visual que muestra qué secciones están listas para el uso sin conexión.
…y le informa que, al menos, puede usar la app de forma parcial.

Informa al usuario cuando la app esté lista para el consumo sin conexión

Cuando una app web se carga por primera vez, debe indicarle al usuario si está lista para su uso sin conexión. Hazlo con un widget que proporcione comentarios breves sobre una operación a través de un mensaje en la parte inferior de la pantalla, por ejemplo, cuando se sincronice una sección o se descargue un archivo.

Asegúrate de que el lenguaje que usas se adapte a tu público y usa la misma redacción en todos los casos en los que corresponda. Los públicos no técnicos a menudo malinterpretan la palabra "sin conexión", por lo que, en su lugar, usa un lenguaje basado en acciones con el que tu público pueda identificarse.

La app de E/S no tiene conexión.
La app de Google I/O 2016 notificaba al usuario cuando estaba lista para usarse sin conexión…
El sitio de Estado de Chrome está sin conexión.
al igual que el sitio de estado de la plataforma de Chrome, que incluye información sobre el almacenamiento ocupado.

Hacer que la opción "Guardar sin conexión" sea evidente en la interfaz

Si una aplicación usa muchos datos, asegúrate de que haya un interruptor o un elemento fijado para agregar un elemento para usar sin conexión. Descargar archivos automáticamente solo si un usuario solicitó específicamente este comportamiento a través de un menú de configuración Asegúrate de que la IU de fijar o descargar sea obvia para el usuario y que no esté oculta por otros elementos de la IU.

Un ejemplo de esto es un reproductor de música que requiere archivos grandes. El usuario conoce el costo de datos asociado, pero es posible que también quiera usar el reproductor sin conexión. Descargar música para usarla más tarde requiere que el usuario planifique con anticipación, por lo que es probable que quieras informarle al respecto durante la integración.

Aclara qué está disponible sin conexión

Explica con claridad las opciones que ofreces. Es posible que debas mostrar una pestaña o un parámetro de configuración para una "biblioteca sin conexión" o un índice de contenido para que el usuario pueda ver lo que almacenó en su dispositivo y lo que debe guardar. Asegúrate de que la configuración sea concisa y de indicar de forma clara dónde se almacenan los datos y quién tiene acceso a ellos.

Cómo mostrar el costo real de una acción

Muchos usuarios equiparan la capacidad sin conexión con "descarga". Los usuarios de países en los que las conexiones de red fallan con frecuencia o no están disponibles suelen compartir contenido con otros usuarios o guardarlo para usarlo sin conexión cuando tienen conectividad.

Los usuarios con planes de datos a veces evitan descargar archivos grandes por temor al costo, por lo que también te recomendamos que muestres un costo asociado para que los usuarios puedan realizar una comparación activa de un archivo o una tarea específicos. Por ejemplo, la app de música antes mencionada podría detectar si el usuario tiene un plan de datos y mostrar el tamaño del archivo para que pueda ver el costo.

Ayuda a evitar experiencias hackeadas

Los usuarios suelen hackear una experiencia sin darse cuenta de que lo están haciendo. Por ejemplo, antes de que existieran las apps web de uso compartido de archivos basadas en la nube, era común que los usuarios guardaran archivos grandes y los adjuntaran a correos electrónicos para poder seguir editándolos desde otro dispositivo. Una buena IU resuelve el problema que los usuarios intentan resolver sin que se vean involucrados en la experiencia hackeada. Por ejemplo, proporciona una forma de compartir archivos grandes entre dispositivos, en lugar de hacer que adjuntar archivos grandes a los correos electrónicos sea más fácil de usar.

Cómo hacer que las experiencias se puedan transferir de un dispositivo a otro

Cuando compiles para redes inestables, intenta sincronizar en cuanto mejore la conexión para que la experiencia se pueda transferir. Por ejemplo, imagina que una app de viajes pierde una conexión de red en medio de una reserva. Cuando se restablece la conexión, la app se sincroniza con la cuenta del usuario, lo que le permite continuar con su reserva en su dispositivo de escritorio y hace que la experiencia sea fluida.

Dile al usuario en qué estado se encuentran sus datos. Por ejemplo, puedes mostrar si la app se sincronizó. Infórmales cuando sea posible, pero intenta no abrumar a los usuarios con demasiados mensajes.

Crea experiencias de diseño inclusivas

Cuando diseñes tu UX, busca ser inclusivo proporcionando dispositivos de diseño significativos, lenguaje sencillo, iconografía estándar y imágenes significativas que guíen al usuario para que complete la acción o la tarea sin interponerse.

Usa un lenguaje simple y claro

Una buena UX no solo se trata de diseñar tu interfaz. Incluye la ruta que sigue un usuario en tu app y todo lo que encuentra en el camino, incluido el lenguaje que usa la app para describir ese recorrido. Cuando expliques los componentes de la IU o el estado de la app, evita la jerga técnica. A menudo, la palabra "sin conexión" no es lo suficientemente clara como para indicarle al usuario lo que hace tu app.

Qué no debes hacer
Un ícono de trabajador de servicio es un mal ejemplo.
Evita los términos que los usuarios no técnicos probablemente no conozcan.
Qué debes hacer
Un ícono de descarga es un buen ejemplo.
Usa lenguaje y recursos visuales que describan lo que el usuario está haciendo en realidad.

Usa varios dispositivos de diseño para crear experiencias del usuario accesibles

Usa el lenguaje, el color y los componentes visuales para mostrar un estado o un cambio de estado. El uso solo de color para mostrar el estado puede ser difícil de detectar para los usuarios o incluso ser completamente inaccesible para los usuarios con discapacidades visuales. Además, como el diseño web suele usar el color gris para los elementos inhabilitados, usar una IU en gris para mostrar que tu app está sin conexión puede generar confusión sobre lo que puede hacer la app sin conexión, en especial, si solo usas el color para mostrar el estado.

Para evitar malentendidos, expresa los estados de la app al usuario de varias maneras, por ejemplo, con color, etiquetas y componentes de la IU.

Qué debes hacer
Un buen ejemplo que usa color y texto para mostrar un error.
Usa una combinación de elementos de diseño para transmitir significado.
Qué no debes hacer
Un ejemplo malo que solo usa color.
El uso de solo color puede ser confuso o engañoso.

Usa íconos que transmitan significado

Asegúrate de usar etiquetas de texto significativas junto con tus íconos. Los íconos por sí solos pueden ser confusos, en especial porque el concepto de "sin conexión" en la Web es relativamente nuevo. Otros casos de íconos confusos incluyen el uso de un disquete para representar la acción de “guardar”, que puede no tener sentido para los usuarios más jóvenes que nunca vieron un disquete, así como el ícono de menú de “hamburguesa”.

Cuando introduzcas un ícono sin conexión, mantén la coherencia con los elementos visuales estándar de la industria cuando existan y proporciona una etiqueta y una descripción de texto. Por ejemplo, puedes usar un ícono de descarga para indicar que se guardará para usar sin conexión, o un ícono de sincronización para una acción que implique sincronización. Ten cuidado cuando uses íconos para demostrar el estado que podría interpretarse como una acción de guardado o descarga.

Varios ejemplos de íconos que indican que no hay conexión
Algunos íconos que pueden significar "sin conexión".

Para obtener más inspiración, consulta el conjunto de íconos de Material Design.

Usa diseños de esqueleto y otros mecanismos de comentarios

Mientras la app carga contenido, muéstrale al usuario que está cargando para que no piense que está dañada. Una forma de hacerlo es usar un diseño de esqueleto, una versión del esquema de página de tu app que se muestra mientras se carga el contenido. Considera también usar una IU de cargador previo con una etiqueta de texto que le diga al usuario que la app se está cargando o una animación que titile suavemente para el esquema de página para que parezca que está activa y se está cargando. Esto le asegura al usuario que está sucediendo algo y ayuda a evitar que se vuelva a enviar o que se actualice innecesariamente.

Ejemplo de un diseño de esqueleto.
Se muestra un diseño de marcador de posición de esqueleto durante la descarga del artículo…
Ejemplo de un artículo cargado.
…que se reemplaza por el contenido real una vez que finaliza la descarga.

Proporciona comentarios para mostrar el estado de una acción. Por ejemplo, si un usuario está editando un documento sin conexión, considera cambiar el diseño de los comentarios para que sea visualmente diferente de cuando está en línea, pero que aún muestre que su archivo se “guardó” y se sincronizará cuando tenga una conexión de red. Esto le informa al usuario cómo funciona tu app y le asegura que se almacenó su tarea o acción, lo que puede generar más confianza en el uso de tu aplicación.

No bloquear contenido

En algunas apps, un usuario puede activar una acción, como crear un documento nuevo. Algunas apps intentan conectarse a un servidor para sincronizar el documento nuevo y, para demostrarlo, muestran un diálogo modal de carga intrusivo que cubre toda la pantalla. Esto podría funcionar si el usuario tiene una conexión de red estable, pero si la red es inestable, no podrá escapar de esta acción, por lo que la IU lo bloquea para que no haga nada más.

Evita las solicitudes de red que bloqueen el contenido. Permite que el usuario siga explorando tu app y pone en cola tareas que se realizarán y sincronizarán cuando mejore la conexión.

Diseñar para los próximos mil millones

En muchas regiones, los dispositivos de gama baja son comunes, la conectividad no es confiable y, para muchos usuarios, los datos son extremadamente costosos. Gana la confianza de tus usuarios siendo transparente y ahorrativo con los datos. Piensa en formas de ayudar a los usuarios con conexiones deficientes y simplifica la interfaz para acelerar las tareas. Siempre intenta preguntar a los usuarios antes de descargar contenido con muchos datos.

Ofrece opciones de ancho de banda bajo para los usuarios con conexiones con retraso. Proporciona recursos más pequeños en conexiones de red más lentas o ofrece una opción para elegir recursos de alta o baja calidad.

Conclusión

La educación es clave para la UX sin conexión porque los usuarios no están familiarizados con ella. Para ayudarlos a aprender, intenta crear asociaciones con conceptos conocidos, como explicar que descargar para usar más tarde es lo mismo que usar datos sin conexión.

Cuando diseñes para conexiones de red inestables, recuerda estos lineamientos:

  • Diseña para el éxito, la falla y la inestabilidad de una conexión de red.
  • Los datos pueden ser costosos, así que ten en cuenta al usuario.
  • Para la mayoría de los usuarios de todo el mundo, el entorno tecnológico es casi exclusivamente móvil.
  • Los dispositivos de gama baja son muy comunes, con almacenamiento, memoria y potencia de procesamiento limitados, pantallas pequeñas y una calidad de pantalla táctil inferior. Asegúrate de que el rendimiento sea parte de tu proceso de diseño.
  • Permite que los usuarios exploren tu aplicación cuando no tengan conexión.
  • Informa a los usuarios sobre su estado actual y sobre los cambios en los estados.
  • Intenta proporcionar datos sin conexión de forma predeterminada si tu app no requiere muchos datos.
  • Si la app consume muchos datos, infórmales a los usuarios cómo pueden descargarla para usarla sin conexión.
  • Haz que las experiencias se puedan transferir entre dispositivos.
  • Usa lenguaje, íconos, imágenes, tipografía y color en conjunto para expresar ideas al usuario.
  • Brinda tranquilidad y comentarios para ayudar al usuario.