8 reglasweb.dev Content Layout Shift · History API scrollRestoration (MDN) · Instagram feed UX teardown · Nick Babich, Smashing Magazine: Infinite Scrolling Best PracticesApple HIG: Refresh Controls · Material Design: Pull to refresh · Luke Wroblewski: Touch Gesture Reference · WebKit overscroll-behavior (MDN)Twitter/X time formatting UX · Moment.js/Day.js relative time · John Saito: "Writing Dates and Times" (Dropbox Design) · Nielsen Norman Group: Date formatting in feedsTwitter/X "N new posts" pattern · Mastodon new content indicator · Jakob Nielsen: "Don't Interrupt Users" · WCAG 2.1 SC 3.2.5 (Change on Request)
171
Social & Feed UI
8 reglas
1492
Infinite scroll con skeleton placeholders y restauración de posición
Cuando el feed usa infinite scroll, cada lote nuevo de contenido debe mostrarse primero como skeleton placeholders que preserven la altura exacta del contenido real para evitar CLS. Al navegar a un detalle y volver, la posición de scroll debe restaurarse exactamente donde el usuario la dejó, usando sessionStorage o History API. Sin esto, el usuario pierde contexto y abandona.
web.dev Content Layout Shift · History API scrollRestoration (MDN) · Instagram feed UX teardown · Nick Babich, Smashing Magazine: Infinite Scrolling Best Practices
Preferir
Feed
Ana Torres
hace 12 min
El nuevo sistema de componentes reduce el tiempo de prototipado un 40%.
248
scrollRestoration: manual
Evitar
Feed
Ana Torres
hace 12 min
El nuevo sistema de componentes reduce el tiempo de prototipado un 40%.
El gesto de pull-to-refresh es la forma más natural de actualizar un feed en mobile. El spinner debe ser el nativo de la plataforma (no custom) para mantener familiaridad. El threshold de activación debe ser 80px para evitar activaciones accidentales al hacer scroll. El haptic feedback al cruzar el umbral comunica que la acción se registró, reduciendo la incertidumbre del usuario.
Apple HIG: Refresh Controls · Material Design: Pull to refresh · Luke Wroblewski: Touch Gesture Reference · WebKit overscroll-behavior (MDN)
Preferir
9:41100%
Actualizando...
80px
Haptic
Laura Vega
La guía de accesibilidad se actualizó con los nuevos criterios WCAG 2.2.
Carlos Ruiz
Sprint review: 14 historias completadas, 2 pendientes para mañana.
Monica Díaz
Nuevo template de user research compartido en el canal de diseño.
Spinner nativo de plataforma, threshold suficiente para evitar falsos positivos, retroalimentación haptic al soltar
Evitar
9:41100%
Pull harder...
20px
Sin haptic
Laura Vega
La guía de accesibilidad se actualizó con los nuevos criterios WCAG 2.2.
Carlos Ruiz
Sprint review: 14 historias completadas, 2 pendientes para mañana.
Monica Díaz
Nuevo template de user research compartido en el canal de diseño.
Spinner custom desconocido, threshold de 20px activa con cualquier scroll, sin haptic el usuario no sabe si jaló suficiente
1494
Timestamp relativo adaptativo: "ahora" a fecha completa
Los timestamps deben adaptarse al contexto temporal: "ahora" para menos de 1 minuto, "hace 3m" hasta 59 minutos, "hace 2h" hasta 23 horas, "ayer" para el día anterior, y fecha corta (14 jun) para todo lo demás. El formato largo (14 de junio de 2025 a las 10:32) se reserva para tooltip o vista de detalle. Nunca mostrar timestamps absolutos en el feed principal porque rompen la legibilidad rápida.
Twitter/X time formatting UX · Moment.js/Day.js relative time · John Saito: "Writing Dates and Times" (Dropbox Design) · Nielsen Norman Group: Date formatting in feeds
Preferir
Cronología adaptativa
Elena Ríos
ahora16 jun 2025, 14:32
Acabo de publicar el caso de estudio del rediseño.
Pedro Lara
hace 23m
El componente de tabs ya está en la librería compartida.
Sofía Nava
hace 5h
Workshop de Design Tokens: grabación subida al canal general.
Diego Mora
ayer
Resumen del sprint: velocity subió 15% respecto al anterior.
Lucía Parra
12 jun
Lanzamos la v2 del onboarding con un 30% menos de fricción.
< 1 minahora
1-59 minhace Nm
1-23 hhace Nh
Ayerayer
> 2 días14 jun
Evitar
Timestamps absolutos
Elena Ríos
2025-06-16T14:32:00Z
Acabo de publicar el caso de estudio del rediseño.
Pedro Lara
2025-06-16T14:09:00Z
El componente de tabs ya está en la librería compartida.
Sofía Nava
2025-06-16T09:15:00Z
Workshop de Design Tokens: grabación subida al canal general.
Diego Mora
2025-06-15T17:42:00Z
Resumen del sprint: velocity subió 15% respecto al anterior.
Lucía Parra
2025-06-12T11:03:00Z
Lanzamos la v2 del onboarding con un 30% menos de fricción.
1495
Indicador de contenido nuevo sin auto-scroll
Cuando llegan publicaciones nuevas mientras el usuario lee el feed, mostrar un indicador flotante ("3 publicaciones nuevas") que el usuario activa manualmente. Nunca hacer auto-scroll al tope ni inyectar contenido que desplace lo que está leyendo. El auto-scroll rompe el flujo de lectura y genera desorientación, especialmente en feeds con contenido largo. El indicador debe incluir la cantidad exacta de posts nuevos.
Twitter/X "N new posts" pattern · Mastodon new content indicator · Jakob Nielsen: "Don't Interrupt Users" · WCAG 2.1 SC 3.2.5 (Change on Request)
Preferir
Timeline
Leyendo
3 publicaciones nuevas
Mariana López hace 8m
El discovery de la feature de notificaciones reveló 3 patrones de uso que no habíamos considerado. Compartiendo hallazgos en el doc.
Andrés Solís hace 14m
Review del prototipo de onboarding con el equipo de producto listo. 4 iteraciones documentadas.
Claudia Reyes hace 22m
Benchmark de competidores actualizado. 5 apps analizadas con capturas y métricas.
Rafael Duarte hace 1h
Migración de iconos a Lucide completada. 48 iconos actualizados sin breaking changes.
Evitar
Timeline
Inyectado sin aviso
Nuevo Post 3 ahora
Este post apareció y desplazó todo hacia abajo.
Inyectado sin aviso
Nuevo Post 2 ahora
Otro post que desplazó el contenido que el usuario leía.
Inyectado sin aviso
Nuevo Post 1 ahora
Más contenido que empuja lo que el usuario estaba leyendo.
El contenido que leías se desplazó hacia abajo
Mariana López hace 8m
El discovery de la feature de notificaciones reveló 3 patrones...
1496
Engagement actions siempre visibles, nunca ocultas
Las acciones de engagement (like, comentar, compartir) deben estar siempre visibles debajo de cada post, no escondidas detrás de hover, long-press o swipe. En mobile no hay hover, y obligar al usuario a descubrir gestos ocultos destruye la tasa de interacción. Los contadores junto a cada acción refuerzan social proof y animan la participación. La zona de toque mínima debe ser 44x44px (WCAG).
Facebook engagement bar UX · Instagram visible actions · Fitts's Law · WCAG 2.1 SC 2.5.5 (Target Size) · NNGroup: Hover vs Always-Visible Controls
Preferir
Feed
Isabel Mendoza
hace 15m
Primer prototipo del sistema de filtros terminado. 6 variantes probadas con usuarios reales, los resultados son prometedores.
42
12
5
Touch target 44px, siempre visible
Ricardo Fuentes
hace 1h
Documentación de API actualizada con los 12 endpoints nuevos. Incluye ejemplos de request y response.
18
4
2
Evitar
Feed
Isabel Mendoza
hace 15m
Primer prototipo del sistema de filtros terminado. 6 variantes probadas con usuarios reales, los resultados son prometedores.
Pasa el cursor para ver acciones...
Ocultas detrás de hover
Ricardo Fuentes
hace 1h
Documentación de API actualizada con los 12 endpoints nuevos. Incluye ejemplos de request y response.
O desliza para ver opciones...
Ocultas detrás de swipe
1497
Card de contenido: aspect-ratio fijo y blur hash placeholder
Las imágenes en cards de feed deben tener aspect-ratio fijo (16:9 o 1:1) definido en CSS para evitar layout shifts al cargar. Nunca estirar ni distorsionar la imagen: usar object-fit:cover. Mientras carga, mostrar un blur hash placeholder que preserve los colores dominantes de la imagen. El blur hash elimina el "flash blanco" y crea percepción de carga instantánea, mejorando LCP perceptual.
Los hilos de respuestas deben usar indentación visual con un máximo de 3 niveles. A partir del cuarto nivel, las respuestas se aplanan al tercer nivel para evitar contenido ilegible en viewports estrechos. Hilos con más de 3 respuestas visibles deben colapsar con un link "Ver N respuestas más" que carga bajo demanda. Cada nivel necesita una línea de conexión vertical para mantener la jerarquía visual clara.
El nuevo flujo de checkout reduce 2 pasos. Buen trabajo del equipo de producto.
8Responder
Mario Sánchez hace 1hL2
Coincido. El A/B test mostró +18% en conversión.
3Responder
Paula Ríos hace 45mL3 max
Los datos del funnel confirman la mejora en mobile.
Ver 4 respuestas más
Carmen Estrada hace 30m
Pregunta: el nuevo flujo aplica también para guest checkout?
2Responder
Evitar
Nesting sin límite
Alejandra Vidal L1
El nuevo flujo de checkout reduce 2 pasos.
Mario S. L2
Buen trabajo.
Paula R. L3
Confirmado.
Ana M. L4
Texto cada vez más pequeño...
Luis P. L5
Ilegible en mobile...
Eva G. L6
Imposible leer
Carmen Estrada
Todos los comentarios expandidos a la vez, 47 visibles sin colapsar.
1499
Empty feed state con onboarding: sugerir personas y temas
Un feed vacío que solo muestra "No hay publicaciones" es una oportunidad perdida. El estado vacío debe funcionar como onboarding, sugiriendo personas a seguir, temas de interés y una acción primaria para crear el primer post. Mostrar avatares reales y nombres de personas populares con botón "Seguir" reduce la fricción de primer uso. El empty state debe comunicar que el feed se llenará conforme el usuario interactúe.
Social & Feed UI
8 reglasInfinite scroll con skeleton placeholders y restauración de posición
Cuando el feed usa infinite scroll, cada lote nuevo de contenido debe mostrarse primero como skeleton placeholders que preserven la altura exacta del contenido real para evitar CLS. Al navegar a un detalle y volver, la posición de scroll debe restaurarse exactamente donde el usuario la dejó, usando sessionStorage o History API. Sin esto, el usuario pierde contexto y abandona.
web.dev Content Layout Shift · History API scrollRestoration (MDN) · Instagram feed UX teardown · Nick Babich, Smashing Magazine: Infinite Scrolling Best PracticesPull-to-refresh: spinner nativo, threshold 80px, haptic feedback
El gesto de pull-to-refresh es la forma más natural de actualizar un feed en mobile. El spinner debe ser el nativo de la plataforma (no custom) para mantener familiaridad. El threshold de activación debe ser 80px para evitar activaciones accidentales al hacer scroll. El haptic feedback al cruzar el umbral comunica que la acción se registró, reduciendo la incertidumbre del usuario.
Apple HIG: Refresh Controls · Material Design: Pull to refresh · Luke Wroblewski: Touch Gesture Reference · WebKit overscroll-behavior (MDN)Timestamp relativo adaptativo: "ahora" a fecha completa
Los timestamps deben adaptarse al contexto temporal: "ahora" para menos de 1 minuto, "hace 3m" hasta 59 minutos, "hace 2h" hasta 23 horas, "ayer" para el día anterior, y fecha corta (14 jun) para todo lo demás. El formato largo (14 de junio de 2025 a las 10:32) se reserva para tooltip o vista de detalle. Nunca mostrar timestamps absolutos en el feed principal porque rompen la legibilidad rápida.
Twitter/X time formatting UX · Moment.js/Day.js relative time · John Saito: "Writing Dates and Times" (Dropbox Design) · Nielsen Norman Group: Date formatting in feedsIndicador de contenido nuevo sin auto-scroll
Cuando llegan publicaciones nuevas mientras el usuario lee el feed, mostrar un indicador flotante ("3 publicaciones nuevas") que el usuario activa manualmente. Nunca hacer auto-scroll al tope ni inyectar contenido que desplace lo que está leyendo. El auto-scroll rompe el flujo de lectura y genera desorientación, especialmente en feeds con contenido largo. El indicador debe incluir la cantidad exacta de posts nuevos.
Twitter/X "N new posts" pattern · Mastodon new content indicator · Jakob Nielsen: "Don't Interrupt Users" · WCAG 2.1 SC 3.2.5 (Change on Request)Engagement actions siempre visibles, nunca ocultas
Las acciones de engagement (like, comentar, compartir) deben estar siempre visibles debajo de cada post, no escondidas detrás de hover, long-press o swipe. En mobile no hay hover, y obligar al usuario a descubrir gestos ocultos destruye la tasa de interacción. Los contadores junto a cada acción refuerzan social proof y animan la participación. La zona de toque mínima debe ser 44x44px (WCAG).
Facebook engagement bar UX · Instagram visible actions · Fitts's Law · WCAG 2.1 SC 2.5.5 (Target Size) · NNGroup: Hover vs Always-Visible ControlsCard de contenido: aspect-ratio fijo y blur hash placeholder
Las imágenes en cards de feed deben tener aspect-ratio fijo (16:9 o 1:1) definido en CSS para evitar layout shifts al cargar. Nunca estirar ni distorsionar la imagen: usar object-fit:cover. Mientras carga, mostrar un blur hash placeholder que preserve los colores dominantes de la imagen. El blur hash elimina el "flash blanco" y crea percepción de carga instantánea, mejorando LCP perceptual.
BlurHash algorithm (Wolt) · web.dev CLS y aspect-ratio · Instagram blur placeholder · CSS aspect-ratio (MDN) · Refactoring UI: Designing Card LayoutsThreading: indentación máxima 3 niveles, colapsar hilos largos
Los hilos de respuestas deben usar indentación visual con un máximo de 3 niveles. A partir del cuarto nivel, las respuestas se aplanan al tercer nivel para evitar contenido ilegible en viewports estrechos. Hilos con más de 3 respuestas visibles deben colapsar con un link "Ver N respuestas más" que carga bajo demanda. Cada nivel necesita una línea de conexión vertical para mantener la jerarquía visual clara.
Reddit threading UX · Hacker News comment nesting · Discourse thread collapsing · NNGroup: Comment Threading Patterns · Material Design: Lists with nestingEmpty feed state con onboarding: sugerir personas y temas
Un feed vacío que solo muestra "No hay publicaciones" es una oportunidad perdida. El estado vacío debe funcionar como onboarding, sugiriendo personas a seguir, temas de interés y una acción primaria para crear el primer post. Mostrar avatares reales y nombres de personas populares con botón "Seguir" reduce la fricción de primer uso. El empty state debe comunicar que el feed se llenará conforme el usuario interactúe.
Twitter/X onboarding follow suggestions · LinkedIn empty feed · Samuel Hulick: UserOnboard teardowns · NNGroup: Empty States · Basecamp: "Getting Real" first-run experience