React Native

React Native 0.83 - React 19.2, novas funcionalidades do DevTools, sem alterações quebradoras

A versão 0.83 do React Native foi lançada com novidades como o React 19.2, recursos aprimorados para os DevTools e suporte aos Web Performance e Intersection Observer APIs (em fase canária). A atualização traz também APIs importantes como <Activity> e useEffectEvent, além de melhorias significativas no painel de desempenho dos DevTools.

Compartilhar
React Native 0.83 - React 19.2, New DevTools features, no breaking changes · React Native

Estamos muito animados em anunciar o lançamento do React Native 0.83!

Esta versão inclui o React 19.2, novas funcionalidades significativas para os DevTools do React Native e suporte às APIs Web Performance e Intersection Observer (Canário). Este é também o primeiro lançamento do React Native sem alterações quebradoras visíveis pelo usuário.

Principais pontos

React 19.2

Este lançamento inclui o React 19.2, trazendo as novas APIs <Activity> e useEffectEvent para o React Native.

No momento do lançamento, react-native@0.83.0 depende de react@19.2.0, e você pode ter visto recentemente o Vulnerabilidade de Segurança Crítica em React Server Components.

Queremos enfatizar que o React Native NÃO é afetado diretamente por esta vulnerabilidade, pois não depende dos pacotes impactados:

  • react-server-dom-webpack
  • react-server-dom-parcel
  • react-server-dom-turbopack

No entanto, se você está usando o React Native como parte de um mônorepositório onde esses pacotes podem estar presentes, verifique e atualize-os imediatamente.

Vamos atualizar todas as dependências do React para 19.2.1 em nossa próxima versão corretiva.

<Activity>

<Activity> permite que você divida seu aplicativo em "atividades" que podem ser controladas e priorizadas. Você pode usar Activity como uma alternativa para renderizar condicionalmente partes do seu aplicativo, e atualmente ele suporta 2 modos: 'visible' e 'hidden'.

  • hidden: oculta as crianças, desmonta os efeitos e adia todas as atualizações até que o React não tenha mais nada para trabalhar.
  • visible: mostra as crianças, monta os efeitos e permite processar normalmente as atualizações.

Uma característica interessante das árvores ocultas usando <Activity mode='hidden'> é que elas preservam seu estado. Portanto, quando se tornarem visíveis novamente, por exemplo, mantêm o status de pesquisa e a seleção de uma interação anterior do usuário.

React 19.1.1React 19.2.1

Você pode ler mais sobre <Activity> nos documentos do React.

useEffectEvent

Um padrão comum com useEffect é notificar o código do aplicativo sobre algum tipo de "evento" de um sistema externo. O problema com essa abordagem é que uma alteração em qualquer valor usado dentro de tal evento fará com que o efeito circundante seja reexecutado.

Para resolver isso, a maioria dos usuários desativa a regra do linter e exclui a dependência. Mas isso pode levar a bugs, pois o linter não poderá mais ajudar você a manter as dependências atualizadas se precisar atualizar o Efeito posteriormente.

Com useEffectEvent, você pode separar a parte do "evento" dessa lógica fora do Efeito que o emite.

Você pode ler mais sobre useEffectEvent nos documentos do React.

No 0.83, estamos animados em entregar algumas funcionalidades e melhorias na qualidade de vida esperadas há muito tempo para os DevTools do React Native.

Painéis de Rede e Desempenho

A inspeção da rede e o rastreamento de desempenho são duas novas capacidades poderosas nos DevTools do React Native, disponíveis hoje.

Lista do painel de Rede no React Native DevTools

Inspeção da rede, agora disponível para todos os aplicativos React Native, permite que você visualize e entenda as solicitações de rede feitas pelo seu aplicativo. As solicitações registradas fornecem detalhes metadados como tempos e cabeçalhos enviados/recebidos, bem como prévias das respostas. E — pela primeira vez — você pode usar a guia Iniciador para ver onde em seu código uma solicitação de rede teve origem.

💡 Cobertura de eventos de rede, suporte ao Expo

Quais eventos de rede são capturados?

Hoje, registramos todas as chamadas de rede através do fetch(), XMLHttpRequest e <Image> — com suporte para bibliotecas personalizadas de rede, como o Expo Fetch, chegando em breve.

Diferenças da Rede do Expo

Por isso, os aplicativos usando o Expo continuarão a ver o painel "Expo Network" — uma implementação separada pelo quadro do Expo que registrará essas fontes de solicitação adicionais mas terá recursos ligeiramente reduzidos.

  • Cobertura para eventos de rede específicos ao Expo.
  • Sem suporte a iniciador de solicitações.
  • Sem integração com o painel de desempenho.

Estamos trabalhando com o Expo para integrar o Expo Fetch e bibliotecas personalizadas de rede com nossa nova linha de montagem de inspeção da rede em futuras versões.

Um rastreamento de desempenho no React Native DevTools

Rastreamento de desempenho permite que você registre uma sessão de desempenho dentro do seu aplicativo para entender como o código JavaScript está sendo executado e quais operações levaram mais tempo. No React Native, mostramos a execução de JavaScript, rastros de desempenho do React, eventos de rede e tempos personalizados User Timings, renderizados em um único cronograma de desempenho.

Junto com o suporte às APIs de Desempenho da Web no 0.83, esta é uma poderosa coleção de recursos fornecendo visibilidade granular sobre o que pode estar tornando seus aplicativos React Native lentos. Encorajamos todos a experimentar o painel de desempenho e incorporá-lo em sua rotina diária.

Saiba mais sobre nossas novas funcionalidades dos DevTools do React Native e rastros de desempenho do React.

Novo aplicativo para desktop

Anteriormente, os DevTools do React Native eram iniciados em uma janela de navegador e exigiam a instalação do Chrome ou Edge. Hoje, estamos introduzindo uma experiência para desktop muito melhorada com nosso novo aplicativo embalado para desktop. Ele inclui:

  • A mesma configuração sem instalação como antes, agora com necessidade zero de navegador web.
  • Inicialização mais rápida por meio de um binário desktop leve e notarizado. Em casos raros em que isso não pode ser baixado (como uma firewall corporativa), caímos no fluxo anterior de inicialização via navegador.
  • Melhor gerenciamento de janelas, com melhor multitarefa no macOS, levantamento automático ao atingir um breakpoint, levantamento automático quando reconectado ao mesmo aplicativo e arranjo de janela salvo na relançagem.
  • Melhor confiabilidade executando DevTools separadamente do perfil pessoal do seu navegador. Em particular, isso resolve os relatórios de bugs que recebemos sobre certas extensões pré-instaladas do Chrome causando o colapso dos React Native DevTools.

Ícone do React Native DevTools no Dock macOS

Observadores de Interseção (Canário)

Como parte do nosso esforço para trazer APIs web para React Native, adicionamos suporte para IntersectionObserver na versão canário para 0.83.

IntersectionObserver permite observar de forma assíncrona a interseção do layout entre um elemento-alvo e seu ancestral. Consulte nossa API e documentação de implementação para mais detalhes. Também incluímos exemplos no RNTester.

Outras mudanças

APIs de Desempenho Web como estáveis

Como introduzido em 0.82, o React Native agora implementa um subconjunto das APIs de Desempenho disponíveis na Web — agora lançadas como estáveis:

Essas APIs permitem rastrear diferentes aspectos do desempenho em seu aplicativo, visíveis na aba Performance no React Native DevTools, bem como em tempo de execução via PerformanceObserver.

PerformanceObserver também funciona em builds de produção, abrindo novas oportunidades para capturar métricas reais de desempenho nos seus aplicativos.

Experimental - Hermes V1

Hermes logo

Hermes V1 é a próxima evolução do Hermes, com melhorias no compilador e na VM que significativamente aumentam o desempenho do JavaScript.

No React Native 0.82, lançamos Hermes V1 como uma opção experimental. E no 0.83, o Hermes V1 inclui melhorias adicionais de desempenho.

💡 Ativando Hermes V1

Aviso: Enquanto o Hermes V1 está em fase experimental, você precisará construir o React Native a partir da fonte para testá-lo.

Para testar o Hermes V1 no seu próprio projeto, use os seguintes passos:

  1. Force seu gerenciador de pacotes a resolver a versão experimental do pacote compilador Hermes V1 modificando a seção correspondente do seu arquivo package.json (observe que a convenção de versionamento atual é apenas para a fase experimental do Hermes V1):

package.json

{"resolutions":{"hermes-compiler":"250829098.0.4"}

Fonte original

Conteúdo traduzido e adaptado pela redação do Notícias Mobile. Confira também a matéria na fonte original.

Leia a matéria completa