Lecciones aprendidas de la construcción de aplicaciones interactivas en React

Rate this content
Bookmark

Cuando los usuarios manipulan directamente objetos en la pantalla en lugar de usar controles separados para manipularlos, están más comprometidos y comprenden más fácilmente los resultados de sus acciones. Las animaciones sutiles pueden brindar a las personas una retroalimentación significativa para ayudar a aclarar el resultado de sus acciones. Pero, el diablo está en los detalles. Lo que a menudo parece simple puede ser complejo de hacer correctamente, especialmente cuando te importa la accesibilidad. Sid comparte las lecciones que ha aprendido construyendo interfaces de usuario interactivas.

35 min
14 May, 2021

Video Summary and Transcription

Las animaciones pueden mejorar la experiencia del usuario y proporcionar contexto en el diseño de interfaces. El uso de frame y motion en React puede crear efectos de desvanecimiento suaves y mejorar la navegación. Las actualizaciones optimistas y la aparición instantánea de comentarios pueden eliminar el tiempo de espera y mejorar la experiencia del usuario. El movimiento se puede utilizar de varias formas para dar contexto y mejorar la experiencia del usuario. Se debe tener en cuenta la accesibilidad y el rendimiento al implementar animaciones. Elegir la biblioteca adecuada, como frame of motion o React Spring, puede simplificar la implementación de animaciones. Las animaciones pueden mejorar el rendimiento percibido e influir en la percepción de velocidad de los usuarios.

Available in English

1. Introducción a las animaciones de interfaz

Short description:

Hola, soy Sid y hago muchas cosas aquí y allá. He estado explorando qué hace que una interfaz sea fácil de usar. Las animaciones se pueden utilizar para dar contexto al usuario cuando se usan con buen gusto. Permíteme mostrarte un ejemplo con mi sitio web de redes sociales llamado Saturday. Actualmente, la interfaz carece de suavidad, por lo que la primera mejora que haremos es desvanecer los elementos.

Hola, soy Sid y hago muchas cosas aquí y allá, así que lo he puesto todo en la pantalla para ti. Pero lo que quiero hablar contigo es el trabajo que he realizado en Code Sandbox durante el último año y medio. La mayor parte de ese trabajo se centró en el frente del front-end y me enfoqué en las animations, el design, los gestos, el arrastrar y soltar, ese tipo de cosas. Y quiero hacerles esta pregunta. ¿Qué hace que una interfaz sea fácil de use? Esto es lo que he estado explorando durante el último año. Y hay respuestas comunes, como que debe estar bien diseñada, debe ser minimalista, sin desorden en la pantalla. Debe ser rápida para que cuando uses la interfaz, se sienta ágil, se cargue rápidamente, haya retroalimentación. Pero algo que a menudo se pasa por alto es el uso del movimiento o las animations para ayudarte. Y las animations se clasifican en esta categoría donde se utilizan para sitios web caprichosos o, ya sabes, si estás haciendo un sitio web de películas o juegos, entonces podrías usarlas. Pero estoy aquí para decirte que las animations se pueden utilizar para dar contexto al usuario cuando se usan con buen gusto, y definitivamente las quieres en tus sitios web profesionales también. Así que suficiente charla. Voy a mostrarte a qué me refiero. Así que construí esta especie de sitio web de redes sociales. Se llama Saturday, y la lógica es que solo está abierto los sábados. Y esta es mi, esta es mi feed. Tengo algunas publicaciones de mis amigos, y permíteme mostrarte cómo se ve eso. Así que cuando hago clic en una publicación, simplemente se abre. Simplemente aparece. Y luego aparece esta respuesta. Y si hago clic en la segunda, va a la página de feed. Va a la página de la publicación y puedes ver cómo cambia la URL y simplemente aparece. Así que eso se ve un poco extraño. Permíteme ir a pantalla completa en esto. Y luego las respuestas también simplemente aparecen. Entonces, eso realmente no da la sensación de que esta es una interfaz con la que estás interactuando. No se siente suave. Así que lo primero que haremos es desvanecerlos. Y eso, creo que es bastante común.

2. Usando Frame y Motion para animaciones de desvanecimiento

Short description:

Puedes usar frame y motion para animaciones CSS en React. Al usar motion.div, puedes definir los estados inicial y animado de un elemento. Esto crea un efecto de desvanecimiento suave al abrir publicaciones y comentarios, proporcionando una sensación de contexto y cambio. Al implementar este efecto de desvanecimiento, puedes mejorar la experiencia del usuario y mejorar la navegación entre diferentes secciones de tu sitio web.

cosa en la web. Lo ves bastante a menudo. Y puedes, por supuesto, hacer cualquiera de los ejemplos que te muestro con CSS animaciones. Pero voy a usar frame y motion para mis ejemplos solo porque es lo que he estado usando durante un tiempo. Y si ya estás en el mundo de React, definitivamente deberías echar un vistazo a frame of motion si no lo has hecho.

Entonces, la forma en que funciona frame of motion es que puedes tomar cualquier elemento y puedo decir motion.div. Y si usas styled components o algo similar, la API es similar a eso. Donde básicamente puedes obtener cualquier elemento de motion y usarlo. Solo voy a usar motion.div porque eso es lo que era. Y como estoy usando una biblioteca de componentes aquí, voy a pasarlo como prop 'as' y eso es solo para mostrar que frame of motion se puede combinar bien con tus bibliotecas de componentes. Entonces me da acceso a estas dos props. La primera es 'initial' y la segunda es 'animate'. Y puedo decir cuál es el estado inicial y a qué debe animarse. Por supuesto, hay muchas otras props, pero esto es suficiente para comenzar. Ahora, cuando abro una publicación, se desvanece en lugar de simplemente aparecer, lo que te da esta sutil sensación de que algo ha cambiado. Hay algún contexto aquí. Incluso la primera publicación, aunque esté en su lugar, solo ese pequeño destello que se desvanece te da la sensación de que has navegado a un lugar diferente. Así que hagamos eso también con nuestros comentarios. Porque ahora mismo los comentarios o respuestas simplemente aparecen, como si nada. Así que voy a cambiar de rama porque ya he escrito el código para ello. Permíteme guardar esto y cambiar a esta rama, solo desvanecer. Así que esta es mi rama donde todo se desvanece. Y puedes ver cuando paso de una publicación a otra, las respuestas se desvanecen sutilmente. Y esto está bien. Aún no es genial. Otro lugar donde puedes ver esto es si tienes nuevas publicaciones, entonces se desvanecen y te da una sensación de que algo ha cambiado aunque hayas perdido tu posición allí. Así que hagamos algo al respecto primero. Voy a recargar. Y este es un patrón común que también se ve en Twitter y estoy seguro de que tienen sus razones para ello. Cuando cargas más publicaciones o cuando eligen cargar más publicaciones para ti, las publicaciones aparecen al frente o

3. Mejorando las interacciones de Feed y Comentarios

Short description:

Y es especialmente molesto cuando fuiste tú quien lo inició. Voy a eliminar este feed de opacidad cero a uno y en su lugar usar la propiedad de diseño. Ahora, cuando hay nuevas publicaciones, todos estos elementos se desplazan hacia abajo para hacer espacio para este nuevo elemento. La publicación original se desplaza hacia abajo, dándote el contexto de que estas publicaciones han venido desde arriba. Ahora hablemos de estos comentarios. Estoy tratando de simular que hay una solicitud a la API en curso. Lo malo es que realmente no conduce a una buena interacción para el usuario.

se desvanecen, pero pierdes un poco tu posición de dónde estabas. Y es especialmente molesto cuando fuiste tú quien lo inició. Así que básicamente perdiste tu posición en el feed. Así que voy a ir a mi feed y sugerir este cambio. Ya tengo frame of motion aquí. Todos estos elementos, cada uno de estos elementos de la lista ya es un motion.li y voy a eliminar este feed de opacidad cero a uno y en su lugar usar la propiedad de diseño y eso es todo. Solo digo dame una animación de diseño y lo que hace con frame of motion es que le dice a frame of motion que todos los elementos que son hermanos o tienen la propiedad de diseño, anímalos juntos. Es difícil de decir. Así que déjame mostrarte lo que eso significa. Ahora, cuando hay nuevas publicaciones, fíjate qué sucede con estas tarjetas. Ves que se desplazaron. Permíteme mostrarte de nuevo, porque es fácil pasarlo por alto. Así que cuando hay nuevas publicaciones, todos los elementos se desplazan hacia abajo para hacer espacio para este nuevo elemento. Y eso es más o menos lo que las animaciones de diseño te dan. Así que cuando cargo más publicaciones, la publicación original se desplaza hacia abajo. Permíteme mostrarte eso de nuevo, porque esta animación es realmente gratificante. Cuando hay nuevas publicaciones, la publicación original se desplaza hacia abajo, se mueve hacia abajo. Y creo que eso es una forma brillante de hacerlo porque te da el contexto de que estas publicaciones han venido desde arriba y simplemente han desplazado tus publicaciones originales. Así que si quieres, puedes desplazarte hacia abajo y aún encontrar tus publicaciones. Y es especialmente agradable si la primera publicación que estaba antes todavía es visible. Pero incluso cuando no lo es, solo la animación de desplazamiento te da el contexto de que puedes desplazarte hacia abajo y encontrar tu lugar nuevamente. Así que eso es, eso es realmente una buena mejora según mi opinión. Ahora hablemos de estos comentarios por un momento. Así que estos se desvanecen, lo cual es agradable. Y luego puedo agregar un nuevo comentario, nuevo comentario, y simplemente se desvanece después de un tiempo. ¿Ves este retraso extraño allí? No estoy seguro por qué. Y quiero decir, sí sé por qué. Estoy tratando de simular que hay una solicitud a la API en curso. Entonces agregas un comentario, lo envías a una API y cuando tiene éxito, luego agregas el comentario. Y este es un patrón bastante común en la web de esperar la validación del servidor y luego insertarlo. Lo malo es que realmente no conduce a una buena interacción para el usuario casi nunca porque al usuario realmente no le importa cuál es la validación de tu servidor.

4. Actualizaciones Optimistas y Aparición Instantánea de Comentarios

Short description:

Al dejar un comentario, debería aparecer instantáneamente siguiendo el enfoque de actualizaciones optimistas. Las aplicaciones móviles suelen insertar comentarios o interacciones primero y luego sincronizarlos con el fondo. Esto mejora la experiencia del usuario al eliminar el tiempo de espera para la validación. Para simular este comportamiento, estoy utilizando la propiedad de retraso de Framer Motion, que permite secuenciar las animaciones. Al eliminar el retraso, los comentarios pueden aparecer inmediatamente, mejorando la experiencia general del usuario.

o cuál es tu lógica allí. Lo que quieren es dejar un comentario en esta publicación. Así que cuando dejo un comentario, dejo un comentario, quiero que aparezca instantáneamente porque quiero estar en el camino feliz. Ya he terminado aquí. Y te das cuenta de que esto es lo que hacen las aplicaciones móviles. Siempre insertan tu comentario o tu interacción primero y luego lo sincronizan con el fondo. No hay espera para la validación, generalmente es una sincronización en segundo plano más tarde. Y creo que eso es lo que deberíamos hacer aquí y hay un nombre para ello, que son las actualizaciones optimistas, lo que significa que sea cual sea la actualización que debamos hacer, vamos a asumir que va a pasar, eso es el optimismo y si no pasa, entonces hacemos la tarea más complicada de cómo mostrar el error de validación. Así que el caso de error es más difícil de manejar, pero el camino feliz siempre es bueno. En realidad no tengo un backend para esto. Lo estoy simulando utilizando la propiedad de retraso de Framer Motion, que es útil si estás haciendo animaciones en dos animaciones donde una debe venir después de la otra. Así que en este caso, simplemente voy a eliminar el retraso y esto es cómo debería verse. Así que cuando agregas un comentario, eso no es el retraso correcto. Este. Así que cuando ahora cuando agrego un comentario de nuevo, debería verse

5. Animating Replies and New Comments

Short description:

Pero allí, ¿recuerdas cómo vimos este movimiento? Estamos utilizando el cambio de posición para dar contexto al usuario. Estas respuestas salen de la publicación, dando la sensación de que son parte de ella. El código utiliza una posición inicial de menos 40 en el eje Y y anima hasta una posición de 0, creando una animación de transformación. Al agregar un nuevo comentario, este proviene del cuadro de entrada de respuesta.

Simplemente aparecen sin más. Así está bien. Me gusta la aparición. Pero allí, ¿recuerdas cómo vimos este movimiento? Estamos utilizando el cambio de posición para dar contexto al usuario. Probablemente deberíamos hacer lo mismo aquí. Así que déjame revisar eso. Voy a guardar esto de nuevo. Cambiar a pre-final. Así que, bien, ahí vamos. Eso es mucho movimiento. Voy a recargar. Entonces, lo que estoy tratando de hacer aquí es, ¿ves estas respuestas? Estas respuestas salen de esta publicación. Y eso te da la sensación de que son parte de la publicación. Y luego se extienden desde ella con un retraso. Entonces, el código para esto se ve así, tengo una posición inicial de menos 40 en el eje Y. Y esta posición de menos 40 se convierte en una animación de transformación con un desplazamiento en Y, lo cual es bueno para animar porque es más eficiente. Y cuando pasas de menos 40, que es su posición final, Framer Motion calcula su posición final, luego va de menos 40 y lo anima hasta ese punto. Así que estoy haciendo menos 40 hasta una posición de 0. Y también tengo una animación de altura automática, lo cual es genial. Y cuando abres esta publicación, los comentarios salen de la publicación. Viene de la dirección de la publicación, lo que te da la sensación de que estos dos son contenido relacionado. Entonces, la publicación viene primero. Y luego los comentarios salen de ella. Ahora, mira lo que sucede cuando agrego un nuevo comentario. Entonces, si no hago nada, también vendrá desde arriba, como las otras respuestas. Pero eso no tiene mucho sentido porque, quiero decir, ¿por qué vendría de las otras respuestas? Entonces, en cambio, lo que he hecho es, déjame mostrarte cómo se vería si no hago nada. Entonces, cuando agrego un nuevo comentario, proviene del comentario anterior, lo cual no tiene sentido. Entonces, en cambio, le agrego un más 20 y trato de hacer que parezca que viene de la respuesta, del cuadro de entrada. Así que aquí vamos. Nuevo comentario, y ves que esto se desplaza hacia abajo y el nuevo comentario ocupa su lugar. Te lo voy a mostrar. Lo siento,

6. Using Motion to Enhance User Experience

Short description:

La nueva respuesta proviene del cuadro de entrada y se agrega a la lista. Aquí estamos utilizando varias animaciones. Este es un buen ejemplo de cómo se puede utilizar el movimiento de varias formas para dar contexto al usuario. En la web, tenemos una mezcla de símbolos que realmente no dicen lo que significan. La aplicación de Twitter en dispositivos móviles utiliza el movimiento y la dirección para crear un nuevo contexto. Instagram también proporciona un buen ejemplo de cómo utilizar el movimiento.

Permíteme recargar y mostrártelo de nuevo. Nueva respuesta. La nueva respuesta proviene del cuadro de entrada y se agrega a la lista. Así que aquí estamos utilizando varias animaciones. La primera es para la publicación. La segunda es para las respuestas que salen de la publicación y la tercera es para una nueva respuesta que va desde el formulario hasta la lista de respuestas. Y este es un buen ejemplo de cómo se puede realmente utilizar el movimiento de varias formas para siempre, siempre pensar en dónde viene esto para dar contexto al usuario. Y honestamente, esto es, este tipo de cosas es lo que hace que las aplicaciones nativas se sientan más nativas, las hace más suaves y agradables de usar cuando las usas con el pulgar, y podemos hacer todo eso también en la web.

Bien, ahora me salté algo de lo que debería hablar. Hay este patrón. En realidad, ¿sabes qué? Permíteme primero mostrarte Twitter. Así que lo siento, voy a abrir una nueva pestaña y hay esta cosa que es bastante común en la web, que es cuando abres una nueva publicación. Así que voy a abrir esta. Ves este botón de retroceso, ¿verdad? Y cuando presionas este botón de retroceso, vuelves atrás en el historial. Y todos sabemos lo que eso significa. También saludo a Michael. Pero esta flecha apunta hacia la izquierda. Ahora, no hay nada en el lado izquierdo, ¿verdad? Aquí tengo este vocabulario compartido de tres puntos. Significa que hay un menú aquí. Hay más. Entonces hay un menú y un corazón significa que vas a darle me gusta a esta publicación y una flecha izquierda significa retroceso. Ahora, aunque en realidad no se va a la izquierda en absoluto. Así que en la web, tenemos una especie de mezcla interesante de símbolos, que realmente no dicen lo que significan. Y compara eso con, esta es la aplicación en, esta es la aplicación de Twitter en dispositivos móviles. Grabé el video. Y así, cuando cargas una publicación, voy a cargar la primera publicación. Viene desde la derecha, y luego cuando presionas la flecha izquierda, en realidad va hacia la izquierda, ¿verdad? Así que ellos tienen esta noción de que hay dos pantallas. Cuando haces clic en una de las publicaciones, la otra pantalla viene desde la derecha, y luego cuando presionas el botón de retroceso, vuelve allí. Así que en realidad están utilizando el movimiento y la dirección para crear un nuevo contexto, literalmente. Y luego, cuando haces clic en la izquierda, revela lo que está en el lado izquierdo.

7. Enhancing User Experience with Motion

Short description:

Cuando haces clic en el botón de la cámara en Instagram, se desliza desde la izquierda, indicando que hay contenido en el lado izquierdo que se puede arrastrar. Sin embargo, la ubicación de ciertos elementos, como un interruptor desplegable, a veces puede ser confusa y perder su significado previsto. Para solucionar esto, creé una vista de detalles en Saturday, donde al hacer clic en una publicación, se amplía y se muestra a pantalla completa. Al cerrar la publicación, vuelve a su posición original. Esto se logra al renderizar un componente de publicación seleccionada encima de la publicación original, animándolo y luego devolviéndolo a su posición original.

Así que ese es un buen ejemplo de cómo utilizar el movimiento. Otro que me gusta mucho es Instagram. Entonces, cuando haces clic en el botón de la cámara en Instagram, eso fue demasiado rápido. Así que cuando haces clic en el botón de la cámara en Instagram, no aparece de inmediato. En realidad, se desliza desde la izquierda y están tratando de hacer lo mismo, tratando de decir que hay una cámara en la pantalla izquierda. Entonces, en realidad, puedes arrastrarla y volver a arrastrarla allí para cerrarla. Y creo que eso es un gran uso del movimiento para darle al usuario una pista de que hay cosas en el lado izquierdo para que puedas arrastrarla. De lo contrario, en una pequeña pantalla móvil, ¿cómo le dices a la gente que puede arrastrar? Por supuesto, no todo es color de rosa. Mira este botón. Así que esto sigue siendo Instagram. Esto es la parte del perfil. Aquí hay una flecha, ¿verdad? Apunta hacia abajo. Y solo con este vocabulario compartido, sabemos que una flecha hacia abajo significa un menú desplegable o más opciones. Y cuando haces clic en esto, esperaba que apareciera un menú desplegable aquí o algo que viniera desde arriba porque la flecha está hacia abajo. Pero lo que sucede es que obtienes un interruptor en la parte inferior de la pantalla. Entonces no hay relación con por qué está en la parte inferior. Pero debido a que las pautas de iOS dicen que debe estar en la parte inferior para que esté más cerca de tu pulgar, lo cual tiene mucho sentido. Pero luego la flecha pierde su significado. Entonces, para Saturday, lo que decidí hacer fue crear una vista de detalles que es una vista de publicación e intentar hacer zoom en una publicación y hacer zoom fuera de una publicación. Y déjame mostrarte cómo funciona esto. Entonces tengo un componente de publicación seleccionada y la idea principal aquí es que en cualquier publicación, puedes hacer clic en ella y ahora estás en esa publicación. No puedes desplazarte fuera de ella, es una cosa de pantalla completa. Y cuando la cierras, vuelve a su posición original. Incluso esta, que está fuera de la pantalla, hago clic en ella, baja, se convierte en una página completa y luego cuando la cierro, va y se queda debajo del encabezado en su posición original. Y déjame mostrarte cómo funciona eso. Entonces hay varias formas de hacer animaciones de diseño compartido. La forma que me gusta es un poco antigua, que es tener un componente de publicación seleccionada, que es diferente al componente de publicación. Entonces, cuando haces clic en una publicación, se renderiza un componente de publicación seleccionada absolutamente encima de la publicación original. Entonces hay, esta es la publicación y esta es la publicación seleccionada. Y esta es la que, la publicación seleccionada es la que se anima y se resalta. Y cuando la cierras, vuelve a la posición original.

8. Calculando Posiciones Y Inicial y Final

Short description:

Para calcular la posición Y inicial de una publicación, puedes obtener el elemento y su posición Y. La posición Y final está en la parte superior de la pantalla. Al cerrar la publicación, debería volver a su posición Y inicial. Esto se puede lograr utilizando el cuadro delimitador y el marco de movimiento, estableciendo la posición inicial y animándola hasta Y cero.

y luego deja de renderizar. Así que parece que es el mismo componente. Y la forma en que me gusta hacer esto es calcular la posición Y inicial de la publicación. Por ejemplo, esta publicación, obtener el elemento, obtener la posición Y. Esta es la posición Y inicial. La posición Y final, por supuesto, es Y cero, porque es la parte superior de la pantalla. Y luego, cuando la cierras, la salida debería volver a su posición Y inicial. Así que hago esto de manera muy imperativa. Obtengo el cuadro delimitador y obtengo la posición Y inicial, y luego con el marco de movimiento, digo que la posición inicial es la posición Y inicial, animada hasta Y cero. Tengo una duración, tengo un retraso. Tengo una salida, que vuelve a la posición inicial.

9. Tip: Animaciones de entrada y salida

Short description:

Quieres que tu animación de entrada sea más larga que tu animación de salida. Al entrar, quieres proporcionar contexto, pero al cerrar, quieres eliminarlo rápidamente de la pantalla. Devuélvelo a su posición, pero evita mostrar una animación larga. La animación de salida siempre debe ser más corta que la animación de entrada.

Y. Y aquí tienes un pequeño consejo sobre las animaciones. Quieres que tu animación de entrada. En este caso, dura 300 milisegundos. Quieres que tu animación de salida sea más corta que la de entrada, porque cuando entras, quieres dar contexto, pero cuando la cierras, quieres que desaparezca rápidamente de la pantalla. Aún quieres devolverla a su posición, pero no quieres mostrar al usuario una animación larga. La cancelaron, quieren seguir adelante. Así que quieres sacarla rápidamente de allí. Ese es un pequeño consejo. La animación de salida siempre debe ser un poco más corta.

10. Implementando la funcionalidad de arrastrar y volver

Short description:

Incluso cuando está fuera de la pantalla, puedes hacer clic en él y vuelve a su posición y recuerda la posición inicial en Y. Favorite Motion tiene soporte para arrastrar y soltar. Vuelve a su posición original en función de la distancia arrastrada. La opacidad del fondo cambia en función del desplazamiento del arrastre, creando una experiencia interactiva suave.

que tu animación de entrada. Ahora, sí. Entonces, la parte que realmente me gusta de este enfoque es que incluso cuando está fuera de la pantalla, puedes hacer clic en él y vuelve a su posición y recuerda la posición inicial en Y. Entonces se vuelve a colocar allí. Muy bien. Dos pensamientos aquí. Si puedes abrirlo así, si haces clic en él y vuelve a la parte superior de la pantalla, ¿no deberías poder empujarlo hacia atrás? Y aquí es donde se vuelve realmente interesante en dispositivos móviles porque usas tus dedos. Entonces, si vas a saturday.wursel.app, que es donde se encuentra alojada esta aplicación en este momento. Entonces, si la abres en tu teléfono móvil, puedes arrastrarla junto conmigo. Y esto es lo que quiero mostrarte. Entonces, Favorite Motion ya tiene soporte para arrastrar y soltar o al menos arrastrar. Entonces puedo decir arrastrar y, que establece la dirección del arrastre. Ahora puedo arrastrarlo y simplemente enviarlo a donde quiera. Pero también puedo cambiar el impulso y las restricciones. Entonces, lo que esto hace es que puedo intentar arrastrar un componente pero siempre volverá a su posición original. Entonces, cuando lo arrastro, volverá atrás. Y dependiendo de cuánto arrastre, la velocidad se ajustará según la distancia. Y esto se debe a que Favorite Motion utiliza animaciones de resorte. Entonces, si lo arrastro muy lejos, la velocidad será más rápida que si lo arrastro un poco porque quiero que tome el mismo tiempo. Y finalmente, cuando deja de arrastrar, si ha arrastrado más de 100 píxeles, si el desplazamiento es superior a 100 píxeles en cualquier dirección, quiero que vuelva a su posición original. Y estoy manejando el desplazamiento, en realidad estoy almacenando el desplazamiento y el estado para poder cambiar también la opacidad de su fondo. Así que mira, mira, mira cómo se ve eso. Entonces, cuando comienzo a arrastrar, verás que puedes ver el fondo lentamente según el movimiento. Y esto es para darle al usuario una pista de que cuando comienzas a arrastrar, esto es lo que se espera que suceda, que volverás al feed y tu tarjeta volverá a su posición. Pero también estamos utilizando, uh, estamos usando el desplazamiento del arrastre para calcular la opacidad. Entonces, la retroalimentación que recibe el usuario se basa en ese movimiento. Y eso crea una interacción suave realmente. Realmente se siente como si estuvieras interactuando con la interfaz de usuario. Así que voy a arrastrarlo más de cien píxeles, lo que significa

11. Accesibilidad y Movimiento

Short description:

Aunque estamos tratando de inventar nuevos patrones aquí, realmente ayuda hacerlos más cercanos a las semánticas que ya están disponibles en la web. Hay una trampa de enfoque en este modelo para evitar pasar a otras publicaciones. La accesibilidad es importante, ya que no todos quieren movimiento y algunos usuarios pueden tener enfermedades vestibulares. Frame of Motion tiene un gancho para el movimiento reducido, permitiendo que las animaciones se desplacen a la siguiente posición. Con el movimiento, debemos considerar las preocupaciones de accesibilidad y asegurarnos de que sea útil y accesible para todos los usuarios.

volverá a su posición. Permíteme hacerlo de nuevo. Ahí lo tienes. Y sí, esto es lo que tenía en ejemplos de movimiento para mostrarte. Un par de cosas para recordar aquí. Aunque estamos tratando de inventar nuevos patrones aquí, como este es un acercamiento y un alejamiento. Realmente ayuda hacerlos más cercanos a las semánticas que ya están disponibles en la web. Entonces por ejemplo, esto, si lo piensas, se parece mucho a cómo se ve un diálogo. ¿Verdad? Y ya tenemos estas semánticas de accesibilidad para ello. Por ejemplo, si presiono escape, debería cerrarlo y enfocarse automáticamente en esta respuesta. Pero si presiono tabulador, debería ir al botón de salida, la cruz. Y cuando presiono tabulador nuevamente, debería volver. Entonces hay una trampa de enfoque en este modelo y eso se debe a que no deberías comenzar a pasar por las publicaciones siguientes y siguientes y llegar hasta el pie de página. Aunque las únicas cosas visibles aquí son estas dos. Así que estoy usando un patrón que ya existe para obtener beneficios de accesibilidad. Y la otra cosa de accesibilidad a tener en cuenta es la idea de que no todos quieren movimiento. Hay personas que tienen enfermedades vestibulares que en realidad, uh, ¿cuál es lo opuesto a beneficiarse? En realidad, odiarían cuando ocurre la animación porque les hace sentir enfermos. Un buen ejemplo de esto está en Mac. Entonces puedes arrastrar entre ventanas. Estoy seguro de que has visto esto con los dedos peleando. Pero si vas a la configuración de accesibilidad y dices que quieres movimiento reducido, ahora cuando intento hacer lo mismo, no se mueve. En realidad, solo se desvanece entre los dos y los navegadores nos exponen esto. Entonces, uh, Frame of Motion ya tiene un gancho para ello. Así que voy a usar el gancho de movimiento reducido. Y lo que puedo hacer con esto es nuestra animación que se expande y se cierra. Voy a decir que si el usuario tiene movimiento reducido, entonces no debería hacer esta expansión. Debería simplemente desplazarse a la siguiente posición y lo mismo para la salida. Y sería bueno si hacemos un pequeño desvanecimiento aquí, pero ese no es el punto. Así que ahora, si tengo movimiento reducido activado, puedo hacer clic y va hacia arriba. No hay movimiento en la publicación. Deberíamos hacer lo mismo con las respuestas, pero si desactivo el movimiento reducido, entonces obtengo las mismas animaciones. Entonces todo esto para decir que, um, con el movimiento, también debemos recordar las preocupaciones de accesibilidad que vienen con el movimiento. Y quiero decir que es realmente posible tener ambas cosas y hacerlo útil y accesible para todo tipo de usuarios porque las APIs y

12. Conclusión y Recursos

Short description:

Depende de ti cómo los uses. Si tienes curiosidad por profundizar más, no dudes en consultar el repositorio al final de la última publicación. Muchas gracias por escuchar.

la tecnología y la configuración y todo está ahí. Depende de ti cómo los uses. Muy bien. Creo que eso es todo lo que tengo. Entonces, uh, si ya tienes la URL, genial. Um, tengo el repositorio al final de la última publicación, y puedes abrir este repositorio, tiene los ejemplos y las ramas múltiples por las que salté. Así que tiene un ejemplo de desvanecimiento y los ejemplos de movimiento. Uh, la última publicación trata sobre un curso que estoy haciendo sobre los temas. Entonces, si tienes curiosidad por profundizar más, no dudes en consultar eso. Y, uh, sí, eso es todo. Muchas gracias por escuchar.

QnA

Audience Response and Common Animation Patterns

Short description:

¡Hola Sid, esa fue una charla increíble! Buen trabajo. El 75% de la audiencia dijo que todas las aplicaciones web deberían usar animaciones. Comencemos con una pregunta de Vasilish Shelkov sobre patrones de animación comunes. La mejor manera de aprender es observar tus aplicaciones favoritas y notar los patrones que utilizan. Por ejemplo, los menús de iOS vienen desde abajo y los menús hamburguesa vienen desde la izquierda. Simplemente observar otras aplicaciones es la mejor manera de aprender. También hay patrones comunes en diferentes bibliotecas. Otra pregunta, esta es de Chris J.

¡Hola Sid, esa fue una charla increíble! Buen trabajo. Veamos la respuesta a la pregunta. Así que tú preguntaste qué tipo de aplicaciones web deberían usar animaciones y parece que el 75% de la audiencia dijo que todas. Así que la gente está bastante interesada en las animaciones. Genial. Sí, me alegra ver eso. Esperaba un número más pequeño, de hecho, comenzó con un número más pequeño. Pero luego creció y creció. Así que supongo que aquí se hizo el trabajo. Eso es increíble. Muy bien. Bueno, tenemos un montón de preguntas de la gente en Discord. Así que empecemos con una de Vasilish Shelkov. ¿Tienes algún recurso sobre patrones de animación comunes que se apliquen a menudo en muchos casos de uso y que nos puedan ayudar con animaciones sencillas en nuestro día a día? Esa es una buena pregunta. Hay algunos artículos de blog aquí y allá. No he visto un recurso dedicado que solo tenga patrones. Pero creo que la mejor manera, o al menos la forma que realmente me gusta para aprender sobre esto, es tomar tus aplicaciones favoritas y tratar de observarlas detenidamente hasta que te canses. Y pensar en qué patrones están utilizando. Y luego comenzarás a ver estas tendencias comunes, como el menú de iOS que viene desde abajo, los menús hamburguesa que vienen desde la izquierda y el fondo que se oscurece lentamente. Así que creo que, sí, simplemente observar otras aplicaciones es, diría yo, la mejor manera de hacerlo. Esa es una gran respuesta. Solo ver lo que ya está ahí. Y usas estas aplicaciones a diario, ves estas animaciones y vas construyendo este repositorio interno de patrones comunes que ves en el día a día. Genial. También creo que hay patrones comunes en diferentes bibliotecas también. Así que ese podría ser otro lugar para buscar. Otra pregunta,

Accessibility and Performance

Short description:

No todos quieren mucha animación, pero aún puedes tener cosas como opacidades de sombreado. Al crear animaciones, es importante considerar la accesibilidad y encontrar el elemento o patrón nativo más cercano. Para el rendimiento, puedes animar ciertas propiedades con la ayuda de la GPU, pero debes tener cuidado con las re-renderizaciones adicionales que pueden causar problemas de rendimiento. Es importante perfilar tu aplicación e identificar cualquier re-renderización adicional que pueda estar causando ralentizaciones.

y este es de Chris J. Lee. Creo que hablaste un poco sobre esto en tu charla, pero ¿cómo solucionas la accesibilidad en tus animaciones? Sí. Aquí hay dos aspectos importantes. El primero es que no todos quieren mucha animación. Y eso es algo que debemos recordar. Los navegadores nos brindan una forma, hay algo en CSS, en JavaScript, llamado preferred reduced motion. Y es interesante porque no está en contra de las animaciones. Se trata del movimiento. Así que aún puedes tener cosas como opacidades de sombreado, y eso está perfectamente bien. Siempre y cuando evites las animaciones temblorosas y de rebote. Y el segundo aspecto con algo como las animaciones es que muchas de estas cosas no tienen elementos nativos. Así que tendemos a crear los nuestros. Y luego intentamos encontrar el elemento nativo más cercano o un patrón para la accesibilidad, de modo que aún tengas, no rompas los lectores de pantalla, no rompas la navegación por teclado. El ejemplo que mostré en la demo fue la animación de zoom, pero utilicé un diálogo como primitiva porque aún tenemos primitivas de accesibilidad para eso. Genial. Genial. Es importante pensar en la accesibilidad. Y algo que creo que está relacionado es que recibimos muchas preguntas sobre el rendimiento. Entonces, para agrupar todas estas preguntas, ¿cuáles son tus consejos para hacer que las animaciones sean eficientes en el rendimiento? Y también, ¿cuál es el impacto en el rendimiento para el tipo de animaciones que mostraste en tu charla? Sí. La respuesta breve es que hay algunas propiedades que puedes animar con la ayuda de la GPU. Así que si buscas propiedades de animación aceleradas por GPU, hay un subconjunto como opacidad, transformación, escala y rotación. Y luego el resto de ellas tienen un rendimiento deficiente. Así que las demos que te mostré, React Spring intenta utilizar la aceleración de GPU tanto como sea posible. Pero debido a que React Spring es una biblioteca de React, es posible que termines con re-renderizaciones adicionales si no tienes mucho cuidado al respecto. Y esas serán la causa de tus problemas de rendimiento en lugar de las animaciones que estás ejecutando. Esos son los dos aspectos, que son buscar qué es seguro animar y qué no. Y segundo, si tu aplicación se siente lenta, perfílala y descubre qué re-renderizaciones adicionales estás causando. Genial. Esa es una respuesta muy completa y un excelente resumen. Otra pregunta y

Choosing Frame of Motion and Other Libraries

Short description:

Elegí Frame of Motion por su API simple y su sensación mágica. Oculta mucha abstracción y proporciona una experiencia de animación suave. Otra biblioteca que recomiendo es React Spring, que ofrece más control sobre las animaciones de resorte.

este es de Tanvir Singh. ¿Por qué elegiste Frame of Motion en lugar de cualquier otra biblioteca de animación y hay alguna otra biblioteca que también recomendarías? Esa es una pregunta difícil porque no estoy seguro. ¿Hay otras bibliotecas en el react ecosistema? No lo sé. Estoy seguro de que hay cientos de ellas. Me gusta mucho lo simple que es su API y cómo casi siempre se siente como magia porque ocultan mucha abstracción. Pero la otra que he usado antes y realmente me gusta se llama React Spring, que aún se basa en animaciones de resorte pero está más cerca del resorte metálico. Te brinda mucho más control sobre la animación de resorte.

Using GreenStock and Examples of Web Applications

Short description:

He usado GreenStock y me gusta. Ejemplos de aplicaciones web que utilizan bien la animación son Linear, Discord y el panel de control de Koth sandbox. Eliminar las animaciones en la interacción del usuario puede aumentar la percepción del rendimiento, pero usar animaciones de manera incorrecta o en exceso también puede arruinarlo.

Genial, genial. Tenemos una pregunta específica de Jason como seguimiento aquí. ¿Has usado GreenStock antes y qué opinas al respecto si lo has usado? Lo he usado. Me gusta. Termino usando React mucho y por eso termino usando frame of motion con él mucho. Todo lo que mostré, se puede hacer con GreenStock, CSS animación. No hay X versus Y aquí.

Genial. Otra pregunta, ¿cuáles son algunos ejemplos de aplicaciones web que utilizan bien la animación? Entonces, los que me gustan mucho son Linear. Linear es esta nueva aplicación de edición de tareas. También está Discord. Discord lo hace muy bien. Si estás en Discord ahora mismo, publicando estas preguntas, intenta usar la barra lateral. Observa las docenas de microinteracciones allí. Y voy a mencionar el panel de control de Koth sandbox porque es el que construí. Eso es genial. Eso es genial. A veces tienes que promocionar tu propio trabajo. Eso es genial. Genial. Veamos. Estoy tratando de revisar estas. Creo que pude agrupar muchas de ellas juntas. Ok. Una más. Ayer Ken Wheeler mencionó que puedes aumentar la percepción del rendimiento eliminando las animaciones en la interacción del usuario. Cuando un usuario realiza una acción, no retrases el resultado con una animación. ¿Cuál es tu respuesta a eso? Me encanta. Es una pregunta brillante. Creo que puedes usar animaciones para mejorar la percepción

Using Animations for Perceived Performance

Short description:

El uso de animaciones puede crear una sensación de velocidad y hacer que las acciones parezcan más rápidas. Sin embargo, el uso excesivo de animaciones, especialmente en menús de carga lenta, puede arruinar la experiencia del usuario. Material UI proporciona pautas sobre la velocidad y la distancia adecuadas para las animaciones. Es importante utilizar las animaciones con buen gusto para mejorar el rendimiento percibido. La conversación sobre el rendimiento percibido está ganando fuerza en la comunidad de desarrolladores, ya que las animaciones pueden influir en la percepción de velocidad de los usuarios. Es un tema fascinante.

El performance y si se utiliza de forma incorrecta o en exceso, también puedes arruinarlo. Entonces, piénsalo de esta manera. Si haces clic en algo y las publicaciones van a cargarse y tarda medio segundo, podrías usar animations expandiéndose durante ese tiempo y eso crea la sensación de que se ha expandido y los resultados ya están aquí. De esa manera puedes usar el movimiento para acelerar las cosas o al menos sentir que es más rápido. Pero muchas veces, como cuando abres un menú y tarda 300, 400 milisegundos en abrirse, eso se siente lento. Como si ya supieras la siguiente acción pero tienes que esperar por ella. Ahí es donde puedes usar animations para arruinar las cosas para ti mismo. Así que hay una publicación de blog muy buena de Material UI, que habla sobre qué distancia debe cubrir una animación y qué tan rápido debe ser en función de eso. Y la idea principal es que si la distancia es muy pequeña, como un tooltip o un menú, debe sentirse muy ágil. Pero si es una transición de página, entonces debes ir hasta 300 milisegundos o 50 milisegundos para que se sienta suave. Así que estoy totalmente de acuerdo con Ken. Pero úsalas con buen gusto y estarás bien. Úsalo demasiado, como todo. Y puedes arruinarlo. Eso es genial. Me encanta que esta conversación sobre el performance percibido esté teniendo más impacto en la community de desarrolladores. Porque desde una perspectiva psicológica, me resulta muy interesante que las personas puedan percibir las cosas como más rápidas o más lentas basándose en las animaciones. Así que creo que es un tema interesante. Increíble. Muchas gracias. Nuevamente, por favor, denle un gran aplauso a Sid en Discord. Esta fue una charla excelente y sé que aprendí mucho de ella.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

TechLead Conference 2023TechLead Conference 2023
35 min
A Framework for Managing Technical Debt
Top Content
Let’s face it: technical debt is inevitable and rewriting your code every 6 months is not an option. Refactoring is a complex topic that doesn't have a one-size-fits-all solution. Frontend applications are particularly sensitive because of frequent requirements and user flows changes. New abstractions, updated patterns and cleaning up those old functions - it all sounds great on paper, but it often fails in practice: todos accumulate, tickets end up rotting in the backlog and legacy code crops up in every corner of your codebase. So a process of continuous refactoring is the only weapon you have against tech debt.In the past three years, I’ve been exploring different strategies and processes for refactoring code. In this talk I will describe the key components of a framework for tackling refactoring and I will share some of the learnings accumulated along the way. Hopefully, this will help you in your quest of improving the code quality of your codebases.

React Summit 2023React Summit 2023
24 min
Debugging JS
Top Content
As developers, we spend much of our time debugging apps - often code we didn't even write. Sadly, few developers have ever been taught how to approach debugging - it's something most of us learn through painful experience.  The good news is you _can_ learn how to debug effectively, and there's several key techniques and tools you can use for debugging JS and React apps.
React Advanced Conference 2022React Advanced Conference 2022
22 min
Monolith to Micro-Frontends
Top Content
Many companies worldwide are considering adopting Micro-Frontends to improve business agility and scale, however, there are many unknowns when it comes to what the migration path looks like in practice. In this talk, I will discuss the steps required to successfully migrate a monolithic React Application into a more modular decoupled frontend architecture.
React Advanced Conference 2023React Advanced Conference 2023
22 min
Power Fixing React Performance Woes
Top Content
Next.js and other wrapping React frameworks provide great power in building larger applications. But with great power comes great performance responsibility - and if you don’t pay attention, it’s easy to add multiple seconds of loading penalty on all of your pages. Eek! Let’s walk through a case study of how a few hours of performance debugging improved both load and parse times for the Centered app by several hundred percent each. We’ll learn not just why those performance problems happen, but how to diagnose and fix them. Hooray, performance! ⚡️

Workshops on related topic

JS GameDev Summit 2022JS GameDev Summit 2022
165 min
How to make amazing generative art with simple JavaScript code
Top Content
WorkshopFree
Instead of manually drawing each image like traditional art, generative artists write programs that are capable of producing a variety of results. In this workshop you will learn how to create incredible generative art using only a web browser and text editor. Starting with basic concepts and building towards advanced theory, we will cover everything you need to know.
React Summit Remote Edition 2021React Summit Remote Edition 2021
87 min
Building a Shopify App with React & Node
Top Content
WorkshopFree
Shopify merchants have a diverse set of needs, and developers have a unique opportunity to meet those needs building apps. Building an app can be tough work but Shopify has created a set of tools and resources to help you build out a seamless app experience as quickly as possible. Get hands on experience building an embedded Shopify app using the Shopify App CLI, Polaris and Shopify App Bridge.We’ll show you how to create an app that accesses information from a development store and can run in your local environment.
JSNation 2022JSNation 2022
41 min
Build a chat room with Appwrite and React
WorkshopFree
API's/Backends are difficult and we need websockets. You will be using VS Code as your editor, Parcel.js, Chakra-ui, React, React Icons, and Appwrite. By the end of this workshop, you will have the knowledge to build a real-time app using Appwrite and zero API development. Follow along and you'll have an awesome chat app to show off!
GraphQL Galaxy 2021GraphQL Galaxy 2021
164 min
Hard GraphQL Problems at Shopify
WorkshopFree
At Shopify scale, we solve some pretty hard problems. In this workshop, five different speakers will outline some of the challenges we’ve faced, and how we’ve overcome them.

Table of contents:
1 - The infamous "N+1" problem: Jonathan Baker - Let's talk about what it is, why it is a problem, and how Shopify handles it at scale across several GraphQL APIs.
2 - Contextualizing GraphQL APIs: Alex Ackerman - How and why we decided to use directives. I’ll share what directives are, which directives are available out of the box, and how to create custom directives.
3 - Faster GraphQL queries for mobile clients: Theo Ben Hassen - As your mobile app grows, so will your GraphQL queries. In this talk, I will go over diverse strategies to make your queries faster and more effective.
4 - Building tomorrow’s product today: Greg MacWilliam - How Shopify adopts future features in today’s code.
5 - Managing large APIs effectively: Rebecca Friedman - We have thousands of developers at Shopify. Let’s take a look at how we’re ensuring the quality and consistency of our GraphQL APIs with so many contributors.
JSNation 2023JSNation 2023
57 min
0 To Auth In An Hour For Your JavaScript App
WorkshopFree
Passwordless authentication may seem complex, but it is simple to add it to any app using the right tool.
We will enhance a full-stack JS application (Node.js backend + Vanilla JS frontend) to authenticate users with One Time Passwords (email) and OAuth, including:
- User authentication – Managing user interactions, returning session / refresh JWTs- Session management and validation – Storing the session securely for subsequent client requests, validating / refreshing sessions
At the end of the workshop, we will also touch on another approach to code authentication using frontend Descope Flows (drag-and-drop workflows), while keeping only session validation in the backend. With this, we will also show how easy it is to enable biometrics and other passwordless authentication methods.