Nuestra comprensión del rendimiento y la experiencia del usuario ha evolucionado mucho a lo largo de los años. Las herramientas de desarrollo web necesitan evolucionar de manera similar para asegurarse de que sean centradas en el usuario, accionables y contextuales donde se refiere a las experiencias modernas. En esta charla, Addy te guiará a través de cómo Chrome y otros han estado pensando en este problema y qué actualizaciones han estado haciendo a las herramientas de rendimiento para reducir la fricción para construir grandes experiencias en la web.
This talk has been presented at JSNation 2022, check out the latest edition of this JavaScript Conference.
FAQ
Adi Osmani es un gerente de ingeniería que trabaja en el equipo de Chrome en Google, especializado en herramientas de rendimiento y DevTools.
Las Core Web Vitals son métricas de rendimiento centradas en el usuario que incluyen Largest Contentful Paints, First Input Delay y Cumulative Layout Shift, cubriendo aspectos de carga, interactividad y estabilidad visual de la página.
DevTools permite grabar interacciones de usuario para medir el rendimiento a lo largo de un viaje completo, como añadir productos al carrito y proceder al pago, facilitando la optimización de la experiencia del usuario.
El inspector de animaciones en DevTools es una herramienta que permite modificar y ajustar las animaciones en las páginas web, como el tiempo, los retrasos y las duraciones, mejorando la experiencia visual del usuario.
Chrome Canary ha introducido mejoras como la importación y exportación de flujos de usuario en JSON y soporte de panel de Lighthouse para flujos, permitiendo una interacción más rica y mediciones durante las interacciones del usuario.
Interacción hasta la Próxima Pintura es una métrica de rendimiento que mide la respuesta visual de una página tras la interacción del usuario, ayudando a evaluar y mejorar la capacidad de respuesta de la página.
Los flujos de usuario grabados con DevTools pueden ser exportados y utilizados en herramientas como web page test y Cypress para pruebas más profundas y entender el rendimiento a lo largo de interacciones complejas de usuario.
La charla de hoy discute el futuro de las herramientas de rendimiento, centrándose en enfoques centrados en el usuario, accionables y contextuales. La introducción destaca la experiencia de Adi Osmani en herramientas de rendimiento y su pasión por las características de DevTools. La charla explora la integración de los flujos de usuario en DevTools y Lighthouse, permitiendo la medición y optimización del rendimiento. También muestra la función de importación/exportación para flujos de usuario y el potencial de colaboración con Lighthouse. La charla profundiza aún más en el uso de flujos con otras herramientas como web page test y Cypress, ofreciendo capacidades de prueba en varios navegadores. El aspecto accionable enfatiza la importancia de métricas como Interacción hasta la Siguiente Pintura y Tiempo Total de Bloqueo, así como las mejoras en Lighthouse y las herramientas de depuración de rendimiento. Por último, la charla enfatiza la naturaleza iterativa de la mejora del rendimiento y el futuro centrado en el usuario, accionable y contextual de las herramientas de rendimiento.
Hola a todos, mi nombre es Adi Osmani. Soy un gerente de ingeniería que trabaja en el equipo de Chrome en Google. Hoy vamos a hablar sobre el futuro de las herramientas de rendimiento. Es posible que me conozcas de internet por publicar sobre las características de DevTools y hablar sobre el rendimiento.
Hola a todos, mi nombre es Adi Osmani. Soy un gerente de ingeniería que trabaja en el equipo de Chrome en Google. Y hoy vamos a hablar sobre el futuro de las performance tooling. Es posible que me conozcas de internet por publicar sobre las características de DevTools y hablar sobre performance, pero he pasado por la pandemia de la misma manera que todos los demás. Ha sido una larga pandemia. Ha habido muchas personas recientemente anunciando que tienen nuevos trabajos. Yo también estoy emocionado de anunciar mi nueva posición. Es la posición fetal. He estado en ella durante algún tiempo. Probablemente voy a permanecer en ella justo después de esto. Los últimos dos años fueron una buena prueba de resistencia.
2. El Futuro de las Herramientas de Rendimiento
Short description:
Hoy, vamos a hablar sobre el futuro de las herramientas de rendimiento. El deleite puede significar hacer la experiencia más agradable a través de la adición de cosas como animaciones. DevTools tiene un inspector de animaciones incorporado. Es una de mis características favoritas. Hay esfuerzos para llevar dichas APIs a la plataforma. El futuro de las herramientas de rendimiento es centrado en el usuario, accionable y contextual. Core Web Vitals son tres métricas que cubren la carga, la interactividad y la estabilidad visual. Podemos hacer más para acercar cómo pensamos sobre el rendimiento a la experiencia del usuario.
Ahora, como mencioné, tiendo a hablar mucho sobre cosas como JavaScript y los paquetes de JavaScript, pero hoy quería dar un paso atrás y centrarme en la experiencia del usuario. Ahora, los usuarios a menudo experimentan las páginas web como un viaje, y hay algunos momentos clave para ello. ¿Está sucediendo? ¿Es útil? ¿Es usable? ¿Es agradable? El deleite puede significar hacer la experiencia más agradable a través de la adición de cosas como animaciones.
Ahora, como mencioné, me encanta compartir consejos de DevTools, y una cosa que algunas personas, ya sabes, muchas personas no saben es que DevTools en realidad tiene un inspector de animaciones incorporado. Aquí está en acción. Puedes usarlo para modificar el tiempo de las animaciones, retrasos, duraciones, y mucho más. Aquí está trabajando contra una aplicación de transiciones de página de Sarah Drasner. Me encanta el inspector de animaciones. Es una de mis características favoritas. Ahora, a veces la gente pregunta, bueno, ¿hay esfuerzos para llevar tales APIs a la plataforma? Jake Archibald dio una gran charla sobre una nueva API de Transiciones de Página. Y aquí hay una demostración genial de ella construida por la comunidad. Así que tenemos una transición de elemento compartido aquí donde al hacer clic en una URL, nos lleva a esta página. Volvemos atrás, y verás que tanto la barra de URL está cambiando, así como nos da estas hermosas animaciones. Ahora, queda mucho trabajo por hacer para soportar cosas como las Transiciones de Página en el inspector de animaciones, pero ya podemos ver cosas como ser capaces de reproducir estas animaciones y ver todos los diferentes tipos de movimiento que estamos añadiendo a nuestras páginas. Cosas realmente poderosas, y me encanta.
Así que a nuestra pregunta principal, ¿cómo es el futuro de las herramientas de rendimiento? Ahora, creo que son tres cosas. Creo que es centrado en el usuario, accionable y contextual. Empecemos con centrado en el usuario. Ahora, en los últimos años, Chrome ha hablado de la importancia de centrarse en las métricas de rendimiento centradas en el usuario, como las Core Web Vitals. Ahora, las Core Web Vitals son tres métricas. Son Largest Contentful Paints, First Input Delay, y Cumulative Layout Shift. Esto cubre la carga, la interactividad y la estabilidad visual. Ahora, estas son geniales. Recomendamos revisarlas utilizando datos reales en el campo, o en el laboratorio. Pero hay mucho más que podemos hacer para acercar cómo pensamos sobre el rendimiento a la experiencia del usuario. Ahora, probablemente hay un conjunto de viajes de usuario centrales que te importan en tu sitio estos días. Esto no es algo que las herramientas de rendimiento de laboratorio, o las herramientas que usamos en nuestros portátiles, hayan reconocido completamente todavía. En cambio, nos hemos centrado en cosas como el rendimiento de la carga inicial de la página. Esto sigue siendo muy importante, por cierto. Pero es una historia que hemos contado en algunos lugares, como en Lighthouse y en DevTools.
3. Entendiendo los Flujos de Usuario y el Grabador de DevTools
Short description:
Estamos evolucionando nuestra comprensión de la experiencia del usuario, incluyendo el rendimiento después de la carga y los flujos de usuario. Los flujos de usuario son una serie de pasos que un usuario realiza para alcanzar un objetivo. Hemos añadido soporte para flujos de usuario en DevTools y Lighthouse, comenzando con el grabador de DevTools. Captura interacciones y selectores.
Pero estamos evolucionando nuestra comprensión de la user experience todo el tiempo. Ahora, si miras en el núcleo de las métricas de Vitals, algunas de ellas ya están pensando en ese rendimiento post-carga, incluyendo cosas como los cambios de diseño que podrían suceder después de que la página inicial se haya asentado. Tu pintura más grande y significativa puede cambiar. Y hay tantos factores que juegan aquí, como si eres una MPA o una SPA, ¿tienes una navegación suave? ¿Estás prebuscando o prerendiendo? ¿Cuál es tu estrategia de caché? Hay mucha sutileza aquí.
Y así, me gustaría que pensáramos en los flujos de usuario. Ahora, un flujo de usuario es una serie de pasos que un usuario realiza para alcanzar un objetivo significativo. Esta es una de las mejores definiciones que existen. Y es de Alexander Handley. Ahora, un flujo de usuario generalmente comienza en el punto de entrada de un usuario en una experiencia. Y generalmente termina completando una tarea particular, como completar un registro o hacer un pedido. Aquí hay varios ejemplos de flujos. Podrías estar haciendo cosas como intentar comprar un producto, sabes, pasando por las fases de encontrar lo que quieres, personalizarlo y así sucesivamente hasta que lo añades a tu carrito y pagas. Podrías estar en proceso de incorporación, podrías estar intentando crear cosas o cancelar un plan. Ahora, la forma en que hemos pensado en medir el rendimiento de este tipo de experiencias es generalmente dividiéndolas en URLs. Así que diremos, bueno, ¿cuál es el rendimiento de la carga de la página del paso uno, del paso dos, del paso tres, en lugar de razonar sobre ellos en conjunto o en su totalidad, de la forma en que un usuario los experimenta. Y creo que hay una oportunidad para hacer algo para acercar esto mucho más a lo que el usuario siente. Me alegra compartir que hemos añadido soporte para flujos de usuario en DevTools y Lighthouse. Esto es un gran avance. Hemos estado trabajando en ello durante algún tiempo y estoy realmente emocionado de guiarte a través de ello. Todo comienza con el grabador de DevTools. Así que aquí está el grabador que nos permite medir a través de todo un viaje. Voy a empezar con un flujo de Añadir al Carrito. Tengo nuestra experiencia de comercio. Estoy navegando por categorías. Estoy añadiendo algunas cosas a mi carrito. Quizás quiero usar la función de búsqueda para encontrar una camiseta. Así que vamos a hacer eso. Vamos a personalizar algunos colores. Luego vamos a proceder a nuestro pago. Ahora aquí puedo pulsar stop y verás que todas esas interacciones fueron capturadas por DevTools, incluyendo los selectores
4. Reproducción de Flujos y Medición del Rendimiento
Short description:
Ahora puedo reproducir flujos de usuario, medir el rendimiento y optimizar partes específicas de la experiencia en el panel de rendimiento de DevTools. Los flujos también pueden ser exportados a Puppeteer para pruebas y utilizados con Lighthouse para visualizar pasos, ver auditorías e identificar áreas de mejora.
que estuvieron involucrados. Ahora puedo reproducir ese flujo. No tengo que ir y decirle a cada miembro de mi equipo que lo haga ellos mismos. Puedo pulsar replay. Va a ir de principio a fin y allí vamos. Hemos hecho el checkout. Puedo medir el performance de este flujo. Así que tenemos un botón de medir performance aquí. Va a reproducir el flujo entero, generar un rastro de la experiencia de principio a fin y aquí lo tenemos. Estamos en el panel de performance de DevTools y puedo hacer zoom en cualquier parte de esa experiencia que quiera optimizar. También podemos exportar flujos a Puppeteer en caso de que estemos escribiendo pruebas y queramos que esas pruebas también reflejen lo que estamos haciendo. Así que aquí estoy. Me ha generado un script de Puppeteer. También podemos usar estos scripts de Puppeteer con Lighthouse para algunos bonos. Así que en este caso estoy usando una característica de Lighthouse que nos permite anotar cosas como intervalos de tiempo y capturas de pantalla y a través de Puppeteer soy capaz de obtener este nuevo informe, este informe de flujo. Esto nos permite visualizar todos esos diferentes pasos
5. Importación/Exportación de Flujos de Usuario y Soporte de Lighthouse
Short description:
En Chrome Canary, el panel del grabador ahora te permite importar y exportar flujos de usuario utilizando JSON. Esta adición facilita compartir y colaborar en flujos de usuario. También puedes editar flujos de usuario, personalizar productos y medir partes específicas del flujo utilizando el panel de Lighthouse. Esto te permite identificar áreas de mejora, como problemas de desplazamiento acumulativo de diseño. Encuentra esta poderosa característica en Canary y sácale el máximo provecho.
y ver auditorías para partes de la experiencia que podrían necesitar un poco de trabajo. Ahora en Chrome Canary hemos continuado iterando en este soporte. El panel del grabador ahora también te permite importar y exportar flujos de usuario, incluyendo el uso de JSON. Esta adición hace realmente trivial que puedas comprometer tus flujos de usuario a tu repositorio de GitHub, compartir con los miembros de tu equipo, compartirlo con QA, y va a ser realmente poderoso para tu historia de compartir. También puedes hacer cosas como editar flujos de usuario para sus selectores y tiempos de espera, en caso de que las cosas tomen un poco más de tiempo de lo que podrías esperar. También en Canary tenemos soporte de panel de Lighthouse para flujos, por lo que puedes seleccionar un lapso de tiempo, puedes iniciar el lapso de tiempo, y comenzar a interactuar con esa experiencia. Esta es la primera vez que te hemos permitido interactuar mientras Lighthouse ha estado funcionando, por lo que puedes interactuar con esta experiencia, puedes personalizar tus productos. Y luego, cuando hayas terminado con la parte del flujo que quieres medir, puedes finalizar el lapso de tiempo. Esto irá y generará una parte de ese informe de flujo y podemos usarlo para descubrir cosas como, ya sabes, ¿necesito hacer un poco más de trabajo en mi desplazamiento acumulativo de diseño, porque tal vez hubo algún desplazamiento de diseño que ocurrió durante mis interacciones. Esto es realmente poderoso,
6. Flujos con Otras Herramientas y Pruebas en Diferentes Navegadores
Short description:
Ahora exploremos el uso de flujos con otras herramientas. El equipo de web page test tiene un repositorio de scripts de grabador de DevTools a web page test. Al exportar flujos a un archivo cart.json, podemos razonar sobre todo el flujo de usuario, obteniendo información de rendimiento, filmstrips y procesos de carga visual de la página. También podemos utilizar las características de cascada de web page test. Además, cypress.io ofrece un paquete para exportar pruebas de Cypress desde las grabaciones de Chrome DevTools. Esto permite pruebas en diferentes navegadores y reproducción de flujos grabados, permitiendo la depuración y una poderosa interoperabilidad entre navegadores.
puedes encontrarlo en canary y esperamos que lo encuentres útil. Ahora otra pregunta que tuvimos después de trabajar en flujos fue ¿qué pasaría si pudieras usar flujos con otras herramientas? Estoy feliz de compartir algo muy experimental, muy emocionante. Me encanta usar web page test, y el equipo de web page test ha creado un útil repositorio de scripts de grabador de DevTools a web page test que puedes revisar. Así que digamos que he exportado mi flujo a un archivo cart.json usando uno de los pasos anteriores. Puedo usar esto con este script. Así es como se ve la salida. No es muy interesante, pero vamos a saltar adelante. Y déjame mostrarte lo que esto permite. Podemos pegar esto en nuestra ejecución de web page test y ahora puedo razonar sobre todo mi flujo de usuario. Obtengo información de rendimiento para mis navegaciones, para mis clics. Obtengo filmstrips. Puedo ver el proceso de carga visual de la página para cualquiera de mis pasos. Soy capaz de desplazarme hacia abajo, soy capaz de usar cualquiera de las grandes características de cascada de web page test para entender los cuellos de botella. Todo esto es realmente genial y nos da un paso hacia la interoperabilidad de herramientas, lo cual me emociona mucho. Aquí, por ejemplo, podemos ver que también tenemos características como los videos de web page test, que me encanta usar. Ahora otra pregunta que nos hacemos es ¿qué pasa con las pruebas de flujos en diferentes navegadores? Tal vez sepas a dónde vamos con esto. Así que cypress.io es una herramienta de automatización de pruebas amigable para el usuario para pruebas de extremo a extremo. Es genial para cosas como pruebas de UI, suites de regresión, integración y pruebas unitarias. Ahora, el equipo de Cypress tiene un nuevo paquete especial que puede exportar pruebas de Cypress desde las grabaciones de Google Chrome DevTools. Digamos que tomamos nuestro cart.json una vez más, y quiero ejecutarlo con Cypress. Voy a usar el paquete de conversión de Recorder en mi cart.json. Vamos a seguir adelante y decir que hemos terminado eso. Ahora vamos a ejecutar Cypress. Veamos qué pasa. Así que npx cypress open, va a abrir una ventana de Cypress. Puedo seleccionar un navegador aquí. Así que voy a seleccionar Firefox, nuestro users.spec.js es el script de Cypress convertido. Y aquí estoy con el flujo que grabé usando Chrome DevTools y está reproduciendo todo mi flujo en Firefox. Esto es genial. Puedo ir a todos los diferentes pasos y secuencias que estuvieron involucrados en este flujo. Puedo depurar, sabes, qué podría no estar funcionando bien en diferentes navegadores o podría no estar funcionando bien y es realmente poderoso que obtengas este tipo de interoperabilidad entre navegadores
7. Cuenta de Cypress y Grabación
Short description:
Si tienes una cuenta de Cypress y una clave API, puedes grabar y persistir las grabaciones de flujos en tu panel de Cypress. Puedes compartir y reproducir las grabaciones, proporcionando una experiencia poderosa. ¡Compruébalo!
casi a través de dicha tooling. Es realmente, realmente genial. Ahora, si tienes una cuenta de Cypress y tienes una clave API, puedes hacer cosas como usar record para persistir tu grabación de flujo en tu panel de Cypress. Así que, aquí tienes un ejemplo de eso. Voy a mostrarte algo que hice anteriormente. Aquí, tenemos nuestra experiencia de Añadir al Carrito y podemos ver lo que acabamos de... Ya sabes, donde estamos demostrando. Aquí hay un video de esa experiencia. Puedo compartirlo con otros, puedo reproducirlo. Obtengo la misma experiencia de Cypress que obtendría si estuviera creando estos flujos yo mismo. Así que, realmente, realmente poderoso
8. Acción: Nuevas métricas y mejoras en Lighthouse
Short description:
A continuación, tenemos Acción. Ahora, mencioné antes que estaba emocionado de anunciar mi nueva posición. Ahora, cuando la gente a menudo mira la línea de tiempo, el panel de rendimiento, lo encuentran desalentador. Casi quieren llorar. Ahora, un buen consejo de vida es que si JavaScript no trae alegría a los usuarios, agradézcanlo y deséchenlo. Hemos estado trabajando para asegurarnos de que herramientas como Lighthouse sean lo más accionables posible para los web vitals. Hemos estado trabajando en una nueva métrica de preparación de interacción llamada Interacción hasta la siguiente pintura. Mide la capacidad de respuesta en tiempo de ejecución, la latencia de interacción completa, e incluye toques, arrastres y eventos de entrada de teclado. El tiempo total de bloqueo es una buena métrica a considerar.
cosas. Espero que lo revisen. A continuación, tenemos Acción. Ahora, mencioné antes que estaba emocionado de anunciar mi nueva posición. Así es como me veo cuando estoy mirando rastreos de performance en DevTools la mayor parte del tiempo. Me encantan los DevTools, por cierto. Ahora, cuando la gente a menudo mira la línea de tiempo, el panel de performance, lo encuentran desalentador. Casi quieren llorar. A veces lloro cuando estoy mirando el panel de performance. ¿Sabías que hay algo así como 17 músculos que se activan cuando estás llorando? 17 músculos. Genial para el fitness. He estado haciendo algo de eso durante la pandemia también, no voy a mentir. Ahora, cuando estás mirando el panel de performance, a menudo tienes muchos data aquí. Aquí tenemos una tarea larga. Si alguna vez te has preguntado por qué el tiempo hasta interactivo no es genial, a menudo es porque las tareas largas de JavaScript mantienen ocupado el hilo principal. Ahora, un buen consejo de vida es que si JavaScript no trae alegría a los usuarios, agradézcalo y deséchelo. Estoy bastante seguro de que esto es de un especial de Marie Kondo. De hecho, ella no dijo JavaScript. Pero creo que este es un buen tipo de consejo Evergreen.
Ahora, hemos estado trabajando para tratar de asegurarnos de que herramientas como Lighthouse sean tan accionables como sea posible para los web vitals. Y si no has revisado Lighthouse recientemente, tenemos todo tipo de auditorías que pueden ayudarte a hacer cosas como identificar tus tareas de hilo principal largas o cuáles son tus grandes cambios de diseño. Y tratamos de hacer esta experiencia bastante visual. Y tratamos de señalar exactamente a qué nodos DOM podrías querer prestar atención. Ahora, hablamos mucho sobre la preparación para la interacción. Y quería hablarles sobre la capacidad de respuesta de entrada por un momento. Entonces, ¿qué es la capacidad de respuesta? La capacidad de respuesta significa entender cuán rápido responden las páginas web a la entrada del usuario. Ahora, esto puede significar cosas como cuando intento abrir el menú en un sitio web, ¿cuánto tiempo tarda antes de que realmente suceda algo? O si estoy tratando de agregar algo a mi carrito, ¿cuánto tiempo tarda antes de que realmente pueda ver que mi artículo ha sido agregado? Todos estos son pasos importantes en un flujo de usuario. Ahora, hemos estado trabajando en una nueva métrica de preparación de interacción y la llamamos Interacción hasta la siguiente pintura. Esta es una nueva métrica de capacidad de respuesta experimental. Mide la capacidad de respuesta en tiempo de ejecución, la latencia de interacción completa, e incluye cosas como toques, arrastres y eventos de entrada de teclado también. La forma en que esto difiere del primer retraso de entrada es que mide toda la latencia de entrada desde que un usuario interactúa hasta que realmente ven una respuesta visual, no solo el retraso inicial en el hilo principal.
9. Mejorando las Métricas de Rendimiento y Depuración
Short description:
Descubrimos que el 70% de los usuarios tienen una experiencia terrible con la capacidad de respuesta al menos una vez a la semana. Optimizar para métricas como el tiempo total de bloqueo e IMP es crucial. IMP ha sido introducido en las herramientas de Chrome, incluyendo PageSpeed Insights y Lighthouse. La nueva función Fast Crux proporciona acceso instantáneo a los datos de campo. Lighthouse ahora incluye la interacción hasta la próxima pintura en sus informes, junto con una nueva auditoría llamada Minimizar el Trabajo Durante la Interacción Clave. La Extensión Web Vitals también soporta la interacción hasta la próxima pintura. Estamos trabajando constantemente en la mejora de las herramientas de depuración de rendimiento, y tenemos una vista previa del experimento de insights de rendimiento.
En el laboratorio, el Tiempo Total de Bloqueo es una métrica proxy bastante buena a la que hay que prestar atención. Descubrimos que se correlaciona bastante bien con la Interacción hasta la Próxima Pintura. Una de las cosas agradables de esto es que es automático y está listo para usar. La Interacción hasta la Próxima Pintura es una métrica de campo principalmente y puede variar dependiendo de las interacciones que un usuario esté realizando. Esta es una de las razones por las que es genial usar cosas como los flujos de usuario porque te permite saber cuáles son las interacciones clave.
Ahora, lo que descubrimos es que el 70% de los usuarios tienen una experiencia que es terrible en lo que respecta a la capacidad de respuesta al menos una vez a la semana. Esta es realmente una gran oportunidad para nosotros de hacerlo mejor, especialmente dado que la investigación de UX dice que idealmente deberías estar mirando 100 milisegundos para la latencia de entrada esperada. Descubrimos que en el escritorio los usuarios cargan el doble de páginas si experimentan una buena capacidad de respuesta allí. Así que muchas razones para optimizar para estas métricas.
A medida que estas métricas han ido saliendo también hemos podido compartir una orientación más concreta. Por ejemplo, si estás usando React 18 y envuelves tu UI en límites de suspense puedes hacer que la hidratación no sea bloqueante porque ocurre en rebanadas en lugar de en un solo bloque. Esto puede mejorar cosas como tu tiempo total de bloqueo. Y estoy esperando con ansias aún más orientación concreta para optimizar métricas como el tiempo total de bloqueo e IMP que saldrá antes de mucho tiempo. Ahora, hemos estado trabajando duro en la introducción de IMP a muchas de las herramientas de Chrome, empezando por PageSpeed Insights. Así que lo primero que voy a mostrar es una nueva función llamada Fast Crux. Esto te da acceso instantáneo a los datos de campo. Verás que acabo de pulsar analizar. Esto no está acelerado y tienes acceso instantáneo a los datos de campo y luego se cargarán progresivamente tus datos de diagnóstico de Lighthouse para que entiendas dónde puedes mejorar. Así que IMP ya está en PageSpeed Insights. A continuación tenemos Lighthouse donde tenemos ese modo de lapso de tiempo. Voy a interactuar con una de las experiencias más interactivas de Google, Google Flights y aquí voy a mostrarte que estoy realizando una serie de interacciones. He acelerado esto un poco y vamos a terminar nuestro lapso de tiempo aquí. Y lo que esto nos da es un informe de Lighthouse que incluye la interacción hasta la Próxima Pintura. Podemos desplazarnos hacia abajo y podemos ver que tenemos una nueva auditoría llamada Minimizar el Trabajo Durante la Interacción Clave. Esto incluye nuestro retraso de entrada, retraso de procesamiento, retraso de presentación así como todas las otras auditorías que Lighthouse normalmente te da para razonar sobre tareas largas y el rendimiento de JavaScript. Finalmente hemos trabajado en herramientas como la Extensión Web Vitals que sé que a muchos les gusta. Esto también ahora tiene interacción hasta la Próxima Pintura. Ahora, en el lado de la depuración de rendimiento, la gente ha estado usando el panel de rendimiento durante años y años y en realidad comenzó en un lugar donde era un poco más simple. Con el tiempo añadimos gráficos de llama y la capacidad de razonar sobre la profundidad de la pila de llamadas pero se inclinó un poco hacia las herramientas que los ingenieros de navegadores usaban para la depuración de rendimiento. ¿Podría ser mejor? Tenemos una vista previa de algo en lo que hemos estado pensando. Así que me gustaría presentar
10. Contextual: Stack Packs y Mejorando el Rendimiento
Short description:
Mejorar el rendimiento es un viaje. Pequeños cambios pueden llevar a grandes ganancias. El primer paso podría ser un esquema, el segundo paso no es una solución repentina. Es el resultado de invertir iterativamente en mejorar la experiencia del usuario con el tiempo. Tus usuarios te agradecerán por una experiencia de rendimiento mejorada. El futuro de las herramientas de rendimiento es centrado en el usuario, accionable y contextual.
te presento el experimento de insights de performance. Esto está disponible como una vista previa y esperamos que lo revises y te sientas libre de compartir tus comentarios. Y finalmente tenemos lo contextual. Ahora hemos introducido una característica llamada stack packs que permite a Lighthouse mostrar suggestions específicas del stack. Sabemos que mucha gente a menudo está usando frameworks o CMSs cuando están construyendo cosas y por lo tanto hemos estado trabajando duro para asegurarnos de que Lighthouse pueda empezar a darte un contexto un poco mejor si estás usando un stack moderno. Aquí tienes un ejemplo. Así que en una aplicación que está usando Next.js en lugar de simplemente decirte que deberías estar usando un formato de imagen moderno, te diremos que deberías estar usando la API de optimization de imagen de Next.js para servir formatos modernos como avif. En lugar de decirte simplemente que cargues tus imágenes de forma perezosa, te diremos que uses el componente de imagen de Next.js que por defecto tiene la carga igual a perezosa. Cosas realmente poderosas, cosas realmente contextuales. También te diremos cuándo deberías considerar dividir tus paquetes de JavaScript usando react.lazy o usando una biblioteca de terceros como loadable components.
Ahora, un pensamiento final es que mejorar el performance es un viaje. Hay muchos pequeños cambios que pueden llevar a grandes ganancias. El primer paso podría ser un esquema. El segundo paso definitivamente no es esto. No vas a resolver de repente todos los problemas del mundo. Pero podrías terminar similar a donde yo usualmente lo hago con el performance, que es el paso 1.5. Está bien. Es el resultado de invertir iterativamente en mejorar tu user experience con el tiempo. Y eventualmente llegarás a algo más cercano a esto. Pero esto está bien. Todavía es bonito. Tus usuarios te van a agradecer por una experiencia de performance mejorada al final del día. Así que espero que hayas obtenido algún valor de esta charla. Creo que el futuro de las herramientas de performance es centrado en el usuario, accionable y contextual. He sido Adi Osmani. Muchas gracias.
This transcription provides a brief guide to React rendering behavior. It explains the process of rendering, comparing new and old elements, and the importance of pure rendering without side effects. It also covers topics such as batching and double rendering, optimizing rendering and using context and Redux in React. Overall, it offers valuable insights for developers looking to understand and optimize React rendering.
This Talk discusses modern web debugging and the latest updates in Chrome DevTools. It highlights new features that help pinpoint issues quicker, improved file visibility and source mapping, and ignoring and configuring files. The Breakpoints panel in DevTools has been redesigned for easier access and management. The Talk also covers the challenges of debugging with source maps and the efforts to standardize the source map format. Lastly, it provides tips for improving productivity with DevTools and emphasizes the importance of reporting bugs and using source maps for debugging production code.
Mishko, the creator of Angular and AngularJS, discusses the challenges of website performance and JavaScript hydration. He explains the differences between client-side and server-side rendering and introduces Quik as a solution for efficient component hydration. Mishko demonstrates examples of state management and intercommunication using Quik. He highlights the performance benefits of using Quik with React and emphasizes the importance of reducing JavaScript size for better performance. Finally, he mentions the use of QUIC in both MPA and SPA applications for improved startup performance.
React 18's concurrent rendering, specifically the useTransition hook, optimizes app performance by allowing non-urgent updates to be processed without freezing the UI. However, there are drawbacks such as longer processing time for non-urgent updates and increased CPU usage. The useTransition hook works similarly to throttling or bouncing, making it useful for addressing performance issues caused by multiple small components. Libraries like React Query may require the use of alternative APIs to handle urgent and non-urgent updates effectively.
PlayCanvas is an open-source game engine used by game developers worldwide. Optimization is crucial for HTML5 games, focusing on load times and frame rate. Texture and mesh optimization can significantly reduce download sizes. GLTF and GLB formats offer smaller file sizes and faster parsing times. Compressing game resources and using efficient file formats can improve load times. Framerate optimization and resolution scaling are important for better performance. Managing draw calls and using batching techniques can optimize performance. Browser DevTools, such as Chrome and Firefox, are useful for debugging and profiling. Detecting device performance and optimizing based on specific devices can improve game performance. Apple is making progress with WebGPU implementation. HTML5 games can be shipped to the App Store using Cordova.
I'm Nadia, a developer experienced in performance, re-renders, and React. The React team released the React compiler, which eliminates the need for memoization. The compiler optimizes code by automatically memoizing components, props, and hook dependencies. It shows promise in managing changing references and improving performance. Real app testing and synthetic examples have been used to evaluate its effectiveness. The impact on initial load performance is minimal, but further investigation is needed for interactions performance. The React query library simplifies data fetching and caching. The compiler has limitations and may not catch every re-render, especially with external libraries. Enabling the compiler can improve performance but manual memorization is still necessary for optimal results. There are risks of overreliance and messy code, but the compiler can be used file by file or folder by folder with thorough testing. Practice makes incredible cats. Thank you, Nadia!
Los primeros intentos de Ivan en la depuración de rendimiento fueron caóticos. Vería una interacción lenta, intentaría una optimización aleatoria, vería que no ayudaba, y seguiría intentando otras optimizaciones hasta que encontraba la correcta (o se rendía). En aquel entonces, Ivan no sabía cómo usar bien las herramientas de rendimiento. Haría una grabación en Chrome DevTools o React Profiler, la examinaría, intentaría hacer clic en cosas aleatorias, y luego la cerraría frustrado unos minutos después. Ahora, Ivan sabe exactamente dónde y qué buscar. Y en esta masterclass, Ivan te enseñará eso también. Así es como va a funcionar. Tomaremos una aplicación lenta → la depuraremos (usando herramientas como Chrome DevTools, React Profiler, y why-did-you-render) → identificaremos el cuello de botella → y luego repetiremos, varias veces más. No hablaremos de las soluciones (en el 90% de los casos, es simplemente el viejo y regular useMemo() o memo()). Pero hablaremos de todo lo que viene antes - y aprenderemos a analizar cualquier problema de rendimiento de React, paso a paso. (Nota: Esta masterclass es más adecuada para ingenieros que ya están familiarizados con cómo funcionan useMemo() y memo() - pero quieren mejorar en el uso de las herramientas de rendimiento alrededor de React. Además, estaremos cubriendo el rendimiento de la interacción, no la velocidad de carga, por lo que no escucharás una palabra sobre Lighthouse 🤐)
ReactJS es extremadamente popular y, por lo tanto, ampliamente soportado. TypeScript está ganando popularidad y, por lo tanto, cada vez más soportado.
¿Los dos juntos? No tanto. Dado que ambos cambian rápidamente, es difícil encontrar materiales de aprendizaje precisos.
¿React+TypeScript, con los IDEs de JetBrains? Esa combinación de tres partes es el tema de esta serie. Mostraremos un poco sobre mucho. Es decir, los pasos clave para ser productivo, en el IDE, para proyectos de React utilizando TypeScript. En el camino, mostraremos el desarrollo guiado por pruebas y enfatizaremos consejos y trucos en el IDE.
TypeScript no es solo tipos e interfaces. Únete a esta masterclass para dominar características más avanzadas de TypeScript que harán tu código a prueba de balas. Cubriremos tipos condicionales y notación de inferencia, cadenas de plantillas y cómo mapear sobre tipos de unión y propiedades de objetos/arrays. Cada tema se demostrará en una aplicación de muestra que se escribió con tipos básicos o sin tipos en absoluto y juntos mejoraremos el código para que te familiarices más con cada característica y puedas llevar este nuevo conocimiento directamente a tus proyectos. Aprenderás:- - ¿Qué son los tipos condicionales y la notación de inferencia?- ¿Qué son las cadenas de plantillas?- Cómo mapear sobre tipos de unión y propiedades de objetos/arrays.
Construir aplicaciones web instantáneas a gran escala ha sido elusivo. Los sitios del mundo real necesitan seguimiento, análisis y interfaces y interacciones de usuario complejas. Siempre comenzamos con las mejores intenciones pero terminamos con un sitio menos que ideal. QwikCity es un nuevo meta-framework que te permite construir aplicaciones a gran escala con un rendimiento de inicio constante. Veremos cómo construir una aplicación QwikCity y qué la hace única. El masterclass te mostrará cómo configurar un proyecto QwikCity. Cómo funciona el enrutamiento con el diseño. La aplicación de demostración obtendrá datos y los presentará al usuario en un formulario editable. Y finalmente, cómo se puede utilizar la autenticación. Todas las partes básicas para cualquier aplicación a gran escala. En el camino, también veremos qué hace que Qwik sea único y cómo la capacidad de reanudación permite un rendimiento de inicio constante sin importar la complejidad de la aplicación.
Sumérgete en el mundo de la IA con nuestro masterclass interactivo diseñado específicamente para desarrolladores web. "Masterclass: Integrando LangChain con JavaScript para Desarrolladores Web" ofrece una oportunidad única para cerrar la brecha entre la IA y el desarrollo web. A pesar de la prominencia de Python en el desarrollo de IA, el vasto potencial de JavaScript sigue siendo en gran medida inexplorado. Este masterclass tiene como objetivo cambiar eso.A lo largo de esta sesión práctica, los participantes aprenderán cómo aprovechar LangChain, una herramienta diseñada para hacer que los modelos de lenguaje grandes sean más accesibles y útiles, para construir agentes de IA dinámicos directamente dentro de entornos JavaScript. Este enfoque abre nuevas posibilidades para mejorar las aplicaciones web con funciones inteligentes, desde el soporte al cliente automatizado hasta la generación de contenido y más.Comenzaremos con los conceptos básicos de LangChain y los modelos de IA, asegurando una base sólida incluso para aquellos nuevos en IA. A partir de ahí, nos sumergiremos en ejercicios prácticos que demuestran cómo integrar estas tecnologías en proyectos reales de JavaScript. Los participantes trabajarán en ejemplos, enfrentando y superando los desafíos de hacer que la IA funcione sin problemas en la web.Este masterclass es más que una experiencia de aprendizaje; es una oportunidad de estar a la vanguardia de un campo emergente. Al final, los asistentes no solo habrán adquirido habilidades valiosas, sino que también habrán creado funciones mejoradas con IA que podrán llevar a sus proyectos o lugares de trabajo.Ya seas un desarrollador web experimentado curioso acerca de la IA o estés buscando expandir tus habilidades en áreas nuevas y emocionantes, "Masterclass: Integrando LangChain con JavaScript para Desarrolladores Web" es tu puerta de entrada al futuro del desarrollo web. Únete a nosotros para desbloquear el potencial de la IA en tus proyectos web, haciéndolos más inteligentes, interactivos y atractivos para los usuarios.
- Introducción- Prerrequisitos para la masterclass- Estrategias de obtención: fundamentos- Estrategias de obtención – práctica: API de obtención, caché (estática VS dinámica), revalidar, suspense (obtención de datos en paralelo)- Prueba tu construcción y sírvela en Vercel- Futuro: Componentes de servidor VS Componentes de cliente- Huevo de pascua de la masterclass (no relacionado con el tema, destacando la accesibilidad)- Conclusión
Comments