Conheça o Aurora

Na equipe do Chrome, nos preocupamos com a experiência do usuário e um ecossistema da Web em expansão. Queremos que os usuários tenham a melhor experiência possível na Web, não apenas com documentos estáticos, mas também quando usam aplicativos ricos e altamente interativos.

Ferramentas e frameworks de código aberto desempenham um papel importante para que os desenvolvedores criem apps modernos para a Web, além de oferecer uma boa experiência para os desenvolvedores. Esses frameworks e ferramentas capacitam empresas de todos os tamanhos, bem como indivíduos que desenvolvem para a Web.

Acreditamos que os frameworks também podem desempenhar um papel importante para ajudar os desenvolvedores com aspectos importantes de qualidade, como desempenho, acessibilidade, segurança e preparação para dispositivos móveis. Em vez de pedir que todos os desenvolvedores e proprietários de sites se tornem especialistas nessas áreas e acompanhem as práticas recomendadas em constante mudança, o framework pode oferecer suporte a elas com soluções integradas. Isso permite que os desenvolvedores se concentrem na criação de recursos do produto.

Resumindo, nossa visão é que um alto nível de qualidade de UX se torna um efeito colateral da criação para a Web.

Aurora: uma colaboração entre o Chrome e ferramentas e frameworks da Web de código aberto

Por quase dois anos, trabalhamos com alguns dos frameworks mais conhecidos, como Next.js, Nuxt e Angular, para melhorar o desempenho da Web. Também financiamos ferramentas e bibliotecas conhecidas, como Vue, ESLint e webpack. Hoje, vamos dar um nome a esse esforço: Aurora.

Uma aurora é um fenômeno luminoso natural que brilha no céu. Como estamos tentando ajudar a melhorar a experiência do usuário com frameworks, achamos que esse nome era a escolha certa.

Logotipo da Aurora

Nos próximos meses, vamos compartilhar mais detalhes sobre o Aurora. Essa é uma colaboração entre uma pequena equipe de engenheiros do Chrome (chamada internamente de WebSDK) e autores do framework. Nosso objetivo é oferecer a melhor experiência possível para apps de produção, independentemente do navegador em que você está renderizando.

Qual é nossa estratégia?

No Google, aprendemos muito ao usar frameworks e ferramentas para criar e manter aplicativos da Web em grande escala, como a Pesquisa Google, o Maps, a Pesquisa de imagens, o Google Fotos etc. Descobrimos como os frameworks podem ter um papel crucial na qualidade previsível do app, fornecendo padrão fortes e ferramentas com opiniões.

Os frameworks têm uma perspectiva única para influenciar a DX e a UX, já que abrangem todo o sistema: o cliente e o servidor, os ambientes de desenvolvimento e produção e integram ferramentas como compilador, bundler, linter etc.

Gráfico que mostra
  ferramentas comuns em frameworks
Ferramentas comuns usadas por desenvolvedores de framework

Quando as soluções são integradas ao framework, as equipes de desenvolvedores podem usar essas soluções e se concentrar no que mais importa para o produto: lançar ótimos recursos para os usuários.

Enquanto trabalhamos para melhorar as ferramentas que existem em todas as camadas da pilha, os frameworks como Next.js, Nuxt e Angular CLI gerenciam cada etapa do ciclo de vida de um aplicativo. Por esse motivo e pelo fato de que a adoção do React é a maior no ecossistema principal de frameworks de interface, a maioria das nossas otimizações começou com a comprovação no Next.js antes de expandir para o restante do ecossistema.

O Aurora oferece suporte ao sucesso em grande escala, trazendo soluções para a camada certa de pilhas de tecnologia conhecidas. Ao preencher a lacuna entre navegadores e frameworks, ele permite que a alta qualidade seja um efeito colateral do desenvolvimento para a Web, atuando como um ciclo de feedback para melhorar a plataforma da Web.

Qual é nosso processo de trabalho?

Nossos princípios para a forma como o Aurora conecta navegadores e o ecossistema de desenvolvedores são: humildade, curiosidade, investigação científica e pragmatismo. Trabalhamos com os autores do framework para melhorias, colaboramos com a comunidade e fazemos a devida diligência antes de fazer mudanças.

Processo orientado por parceiros da Aurora para melhorar as métricas do Core Web Vitals

Para resumir as etapas que seguimos para qualquer novo recurso em que trabalhamos:

  1. Identifique a dificuldade da experiência do usuário em uma pilha popular usando apps representativos.
  2. Crie protótipos de soluções que resolvam esse problema, com ênfase em "padrões fortes".
  3. Verifique o recurso com outra pilha de framework para garantir que ele seja adaptável.
  4. Valide o recurso fazendo experimentos em alguns apps de produção, normalmente com testes de laboratório para desempenho.
  5. Direcione o design usando o processo de RFC, abordando o feedback da comunidade.
  6. Lance o recurso em uma pilha popular, geralmente por trás de uma flag.
  7. Ative o recurso em um app de produção representativo para avaliar a qualidade e a integração do fluxo de trabalho do desenvolvedor.
  8. Meça a melhoria de desempenho monitorando métricas em apps de produção representativos que adotaram o recurso ou fizeram upgrade.
  9. Ative o recurso como padrão na pilha para que todos os usuários que fizerem upgrade se beneficiem.
  10. Depois de comprovado, trabalhe com outros frameworks para lançar o recurso.
  11. Identifique lacunas na plataforma da Web com um ciclo de feedback.
  12. Passe para os próximos problemas.

As ferramentas e plug-ins subjacentes (webpack, Babel, ESLint, TypeScript etc.) são compartilhadas em muitos frameworks. Isso ajuda a criar efeitos de repercussão, mesmo quando contribui para uma única pilha de framework.

Além disso, o Chrome Framework Fund oferece suporte a ferramentas e bibliotecas de código aberto com financiamento. Esperamos que haja sobreposição suficiente nas camadas de problemas e soluções para que nossos esforços acima se traduzam em outros frameworks e ferramentas, mas sabemos que podemos fazer mais. Para isso, queremos fazer nossa parte para garantir que as bibliotecas e frameworks que ajudam os desenvolvedores a ter sucesso possam prosperar. Essa é uma das razões pelas quais vamos continuar investindo no Chrome Framework Fund. Até o momento, ele oferece suporte ao trabalho com o Webpack 5, Nuxt e desempenho e melhorias no ESLint.

O que nosso trabalho já alcançou até agora?

Nosso trabalho tem se concentrado em otimizações básicas para recursos como imagens, JS, CSS e fontes. Fizemos várias otimizações para melhorar os padrões de vários frameworks, incluindo:

  • Um componente de imagem no Next.js que encapsula as práticas recomendadas para carregamento de imagens, seguido por uma colaboração com o Nuxt. O uso desse componente resultou em melhorias significativas nos tempos de pintura e no deslocamento de layout (exemplo: redução de 57% no Largest Contentful Paint e 100% no Cumulative Layout Shift em nextjs.org/give).
  • Inserção automática de CSS para declarações de fonte da Web no momento da criação. Esse recurso foi lançado no Angular (Google Fonts) e no Next.js (Google Fonts e Adobe Fonts), resultando em melhorias significativas na maior e na primeira exibição de conteúdo (exemplo).
  • Inserir CSS crítico usando Critters no Angular e no Next.js para reduzir os tempos de pintura. Resultou em uma melhoria de 20 a 30 pontos nas pontuações de desempenho do Lighthouse em um app Angular típico de grande escala quando foi combinado com o recurso de formatação de CSS inline.
  • Suporte pronto para uso ao ESLint no Next.js, que inclui um plug-in personalizado e uma configuração compartilhável para facilitar a detecção de problemas comuns específicos do framework no momento da criação, resultando em uma performance de carregamento mais previsível.
  • Introdução de um retransmissor de desempenho integrado no Create React App e no Next.js para permitir insights mais fáceis sobre o desempenho da página usando os Web Vitals e outras métricas personalizadas.
  • Chunking granular enviado no Next.js e no Gatsby, resultando em uma redução de 30 a 70% nos tamanhos de pacotes, além de melhorar o desempenho do armazenamento em cache. Esse é o padrão no Webpack 5.
  • Um fragmento de polyfill separado para navegadores mais antigos, em colaboração com a equipe do Next.js, para melhorar o tamanho do pacote em navegadores modernos.

Todos esses recursos foram automatizados para serem ativados por padrão ou precisam apenas de uma simples ativação. Isso é essencial para garantir que os desenvolvedores possam colher os benefícios com facilidade sem aumentar a complexidade do fluxo de trabalho.

O que planejamos para 2021?

Até o fim do ano, vamos nos concentrar em ajudar as pilhas de framework a melhorar a experiência do usuário e o desempenho em métricas como as Core Web Vitals. Esse trabalho vai incluir:

  • Conformidade para aplicar as práticas recomendadas. Confira a postagem do blog para saber mais.
  • Otimização da performance de carregamento inicial com base nas nossas colaborações para otimizar imagens, fontes e CSS crítico.
  • Carregar scripts de terceiros (3Ps, na sigla em inglês) com impacto mínimo na performance, criando nossa base de trabalho em um componente Script e realizando uma pesquisa profunda sobre a melhor forma de ordenar e ordenar 3Ps.
  • Desempenho do JavaScript em grande escala (por exemplo, suporte a componentes do servidor React no Next.js).

Nossa equipe vai postar informações mais regulares sobre RFCs e documentos de design para essas ideias, para que qualquer framework ou desenvolvedor que queira acompanhar possa fazer isso.

Conclusão

A equipe Aurora (Shubhie, Houssein, Alex, Gerald, Ralph, Addy, Kara, Keen, Katie) espera continuar trabalhando de perto com a comunidade de frameworks de código aberto para melhorar os padrões de experiência do usuário no Next.js, Nuxt e Angular. Vamos aumentar nosso engajamento para abranger ainda mais frameworks e ferramentas ao longo do tempo. Fique de olho para mais postagens no blog, palestras e RFCs da nossa equipe no próximo ano :)