Settings & Preferences
Settings & Preferences
12 reglasSwitches para booleanos, checkboxes para confirmacion con Save
Los switches (toggles) son el control correcto para ajustes on/off que toman efecto inmediato. Los checkboxes se reservan para ajustes dentro de un formulario con boton Save explicito. Nunca uses radio buttons para una opcion booleana unica.
Material Design 3 / Android Settings Design GuidelinesAgrupar ajustes en subscreens cuando la lista supera 15 items
Cuando una pantalla de ajustes tiene 15 o mas items, agrupa ajustes relacionados bajo subscreens etiquetadas. Usa divisores para separar grupos en una pantalla, nunca entre cada item individual. Los titulos de seccion deben ser especificos, nunca "Otros" o "Varios".
Android Settings Design Guidelines / Material Design 1 Settings PatternAuto-save en controles imperativos (toggles); Save explicito en inputs declarativos
Los toggles y dropdowns de seleccion unica deben guardar su estado inmediatamente al cambiar. Los text inputs, campos de contrasena y radio groups requieren una accion explicita de Save. Nunca mezcles ambos paradigmas en un mismo formulario de ajustes sin separacion visual.
GitHub Primer Design System - Saving PatternColocar ajustes destructivos (Danger Zone) al final con borde rojo y copy de consecuencia
Agrupa todas las acciones irreversibles, eliminacion de cuenta, purga de datos, cancelacion de suscripcion, en una seccion "Zona de peligro" claramente etiquetada al final de la pagina. La seccion debe usar borde rojo y cada accion debe incluir una descripcion de la consecuencia permanente.
Smashing Magazine - Dangerous Actions in User Interfaces (2024) / Cloudscape Design SystemExigir escribir el nombre del recurso (no solo "confirmar") para eliminaciones de alta severidad
Para eliminaciones a nivel de cuenta o infraestructura, exige que el usuario escriba el nombre exacto del recurso en un campo de texto antes de activar el boton destructivo. El boton debe permanecer deshabilitado hasta que el input coincida. Implementa un delay de 100-200ms para prevenir doble clic accidental.
Cloudscape Design System - Delete with Additional Confirmation / Smashing Magazine (2024)Ofrecer periodo de gracia de 7 dias para eliminacion de cuenta antes de ejecutar permanentemente
Despues de que un usuario confirma la eliminacion de cuenta, programa la purga de datos para 7 dias despues en lugar de ejecutarla de inmediato. Notifica por email con un enlace de cancelacion. Durante el periodo de gracia, muestra un banner prominente en cada pagina con opcion de cancelar.
GitLab account deletion implementation (MR #118887) / OpenStreetMap account deletion cool-down (PR #4313)Todo toggle debe tener etiqueta visible y nombre accesible via aria-checked y role=switch
Cada toggle de ajustes debe tener una etiqueta de texto visible adyacente al control, nunca un toggle sin texto. Para componentes switch personalizados, establecer role="switch" y actualizar aria-checked a "true" o "false" en cada cambio de estado. Area tactil minima de 44x44pt en iOS y 48x48dp en Android.
WCAG 2.2 SC 4.1.2 - Name, Role, Value / Apple HIG / Material Design 3Mostrar busqueda en ajustes cuando el total de items supera 30
Agrega un campo de busqueda persistente al tope de la pagina raiz de ajustes cuando el total de items individuales (contando en todas las subscreens) supera 30. La busqueda debe devolver resultados de todos los niveles de la jerarquia, mostrando la ruta completa en cada resultado.
iOS Settings app (Apple, desde iOS 9) / Android Settings app search (AOSP, desde Android 7.0)Separar ajustes de admin en una seccion o pagina distinta, nunca mezclados con ajustes de usuario
Los ajustes que requieren permisos de admin u owner deben estar visual y estructuralmente separados de los ajustes de nivel usuario. Los ajustes de admin no deben aparecer (ni siquiera deshabilitados) para usuarios sin esos permisos. La seccion de admin solo debe ser accesible si el rol del usuario lo permite.
RBAC UX Research - Edwin Choate / Frontegg Role and Permission Management GuideTexto secundario en filas de ajustes solo cuando la etiqueta sola es insuficiente; maximo una linea (~60 caracteres)
Agrega una linea descriptiva debajo de una etiqueta de ajustes solo cuando la etiqueta no puede transmitir el estado o consecuencia por si sola. Para ajustes toggle, el texto debe describir que ocurre cuando se activa, iniciando con un verbo. Limita a una linea (~60 caracteres). Omite texto secundario en filas que navegan a una subscreen.
Material Design 1 Settings Pattern / Android Settings Design GuidelinesActualizar UI optimisticamente en toggles; revertir con error inline si la solicitud falla en 5 segundos
Cuando un usuario cambia un toggle de ajustes, actualizar la UI inmediatamente sin esperar la respuesta del servidor. Si la solicitud falla dentro de 5 segundos, revertir el toggle y mostrar un mensaje de error inline adyacente al control, no un toast que desaparece. Nunca mostrar un spinner que bloquee el toggle por mas de 400ms.
Doherty Threshold / GitHub Primer Saving Pattern / React useOptimistic, TanStack QueryNunca verbos genericos como etiquetas de ajuste; iniciar cada etiqueta con el sustantivo mas importante
Las etiquetas de fila de ajustes no deben comenzar con verbos como "Configurar", "Cambiar", "Editar", "Gestionar" o "Seleccionar". Las etiquetas deben liderar con el sustantivo que identifica el ajuste: "Sonido de notificacion", no "Cambiar sonido de notificacion". Usar sentence case, nunca Title Case en cada palabra.
Material Design / Android Settings Design Guidelines / Material Design 1 Settings Pattern- R-1438 Switches para booleanos, checkboxes para confirmacion con Save
- R-1439 Agrupar ajustes en subscreens cuando la lista supera 15 items
- R-1440 Auto-save en controles imperativos (toggles); Save explicito en inputs declarativos
- R-1441 Colocar ajustes destructivos (Danger Zone) al final con borde rojo y copy de consecuencia
- R-1442 Exigir escribir el nombre del recurso (no solo "confirmar") para eliminaciones de alta severidad
- R-1443 Ofrecer periodo de gracia de 7 dias para eliminacion de cuenta antes de ejecutar permanentemente
- R-1444 Todo toggle debe tener etiqueta visible y nombre accesible via aria-checked y role=switch
- R-1445 Mostrar busqueda en ajustes cuando el total de items supera 30
- R-1446 Separar ajustes de admin en una seccion o pagina distinta, nunca mezclados con ajustes de usuario
- R-1447 Texto secundario en filas de ajustes solo cuando la etiqueta sola es insuficiente; maximo una linea (~60 caracteres)
- R-1448 Actualizar UI optimisticamente en toggles; revertir con error inline si la solicitud falla en 5 segundos
- R-1449 Nunca verbos genericos como etiquetas de ajuste; iniciar cada etiqueta con el sustantivo mas importante