Sitemap

React Native 0.80 — React 19.1, alterações na API JS, congelamento do Legacy Arch e muito mais

9 min readSep 2, 2025

12 de junho de 2025 · 12 min de leitura

Hoje estamos entusiasmados em lançar o React Native 0.80!

Esta versão traz a versão do React que enviamos dentro do React Native para a versão estável mais recente disponível: 19.1.0.

Também estamos enviando uma série de melhorias de estabilidade para nossa API JS: importações profundas agora dispararão um aviso e estamos oferecendo uma nova API Strict TypeScript opcional que oferece tipos mais precisos e seguros de usar.

Além disso, a Arquitetura Legada do React Native agora está oficialmente congelada, e você começará a ver avisos para APIs que deixarão de funcionar quando encerrarmos completamente a Arquitetura Legada.

Destaques

Destaques

Depreciação profunda de importações de JavaScript

Nesta versão, estamos tomando medidas para melhorar e estabilizar a API JavaScript pública do React Native. O primeiro passo para isso é definir melhor quais de nossas APIs são importáveis por aplicativos e estruturas. Em linha com isso, estamos descontinuando formalmente as importações profundas do React Native (veja RFC), e estão introduzindo avisos via ESLint e o console JS.

Esses avisos têm como escopo importações de dentro do código-fonte do seu projeto e podem ser optou por não participar. No entanto, tenha em mente que pretendemos remover importações profundas da API do React Native em uma versão futura e, em vez disso, elas devem ser atualizadas para a importação raiz.

// Before - import from subpath
import {Alert} from 'react-native/Libraries/Alert/Alert';

// After - import from `react-native`
import {Alert} from 'react-native';

Algumas APIs não são exportadas no root e ficarão indisponíveis sem importações profundas. Isso é intencional, a fim de reduzir a área de superfície geral da API do React Native. Temos um aberto tópico de feedback para problemas do usuário e trabalharemos com a comunidade para finalizar quais APIs exportaremos (pelo menos) nas próximas duas versões do React Native. Por favor, compartilhe seu feedback!

Saiba mais sobre essa mudança em nossa postagem dedicada: Rumo a uma API JavaScript estável.

API TypeScript estrita de opt-in

Com a redefinição acima das exportações em nossa API pública, também estamos enviando um novo conjunto de tipos TypeScript para o react-native pacote em 0.80, que estamos chamando de API Strict TypeScript.

Optar pela API Strict TypeScript é uma prévia da nossa futura e estável API JavaScript para React Native. Esses novos tipos são:

  1. Gerado diretamente a partir do nosso código fonte — melhorando a cobertura e a correção, para que você possa esperar garantias de compatibilidade mais fortes.
  2. Restrito ao arquivo de índice do React Native — definindo mais rigorosamente nossa API pública, o que significa que não quebraremos a API ao fazer alterações internas no arquivo.

Estamos enviando-os junto com nossos tipos existentes, o que significa que você pode optar por migrar quando estiver pronto. Além disso, se você estiver usando APIs React Native padrão, muitos aplicativos devem ser validados com sem alterações. Incentivamos fortemente os primeiros usuários e os aplicativos recém-criados a optarem por participar por meio do seu tsconfig.json arquivo.

Quando a comunidade estiver pronta, a API Strict TypeScript se tornará nossa API padrão no futuro — sincronizada com a remoção profunda de importações.

Saiba mais sobre essa mudança em nossa postagem dedicada: Rumo a uma API JavaScript estável.

Congelamento e avisos de arquitetura legada

A nova arquitetura do React Native é a escolha padrão desde a versão 0.76 e nós temos lido histórias de sucesso de projetos e ferramentas que dele se beneficiam muito.

Recentemente compartilhamos que agora consideramos a Arquitetura Legada como congelada. Não desenvolveremos mais novas correções de bugs ou recursos na Arquitetura Legada e pararemos de testar a Arquitetura Legada enquanto trabalhamos em uma versão.

Para facilitar a migração, ainda permitimos que os usuários optem por não participar da Nova Arquitetura caso estejam enfrentando bugs ou regressões.

No entanto, enviar duas arquiteturas com React Native é um grande desafio, o que afeta o desempenho do tempo de execução, o tamanho do aplicativo e a manutenção da nossa base de código.

É por isso que eventualmente teremos que encerrar a Arquitetura Legada em algum momento no futuro.

Na versão 0.80, adicionamos uma série de avisos que aparecerão no React Native DevTools para avisá-lo se você estiver usando APIs que não funcionarão na Nova Arquitetura.

Recomendamos que você não ignore esses avisos e considere migrar seus aplicativos e bibliotecas para a Nova Arquitetura para estar pronto para o futuro.

Press enter or click to view image in full size

Você pode aprender mais sobre essas mudanças na palestra “Life After Legacy: The New Architecture Future” apresentamos recentemente em App.js.

React 19.1.0

Esta versão do React Native vem com o mais recente React estável: 19.1.0

Você pode ler sobre todos os novos recursos e correções de bugs introduzidos no React 19.1.0 no descrição do lançamento.

Aviso: Um recurso notável do React 19.1.0 é a implementação e melhorias de pilhas de proprietários. Este é um recurso exclusivo de desenvolvimento que deve ajudá-lo a identificar qual componente é responsável por um erro específico.

No entanto, estamos cientes de que as pilhas de proprietários não estão funcionando como esperado no React Native se você usar o @babel/plugin-transform-function-name Plugin Babel, que é habilitado por padrão no React Native Babel Preset. Enviaremos uma correção para isso em uma versão futura do React Native.

Experimental — As dependências do React Native iOS agora são pré-construídas

Se você estiver criando um aplicativo React Native para iOS, provavelmente notou que a primeira criação nativa levará algum tempo: alguns minutos ou até mais em máquinas mais antigas. Isso ocorre porque precisamos compilar todo o código React Native iOS, além de todas as suas dependências.

Nas últimas semanas, temos experimentado pré-construir parte do núcleo do React Native para iOS, de forma semelhante ao que acontece no Android, para reduzir o tempo de construção quando você executa um aplicativo React Native pela primeira vez.

O React Native 0.80 é a primeira versão que pode enviar parte do React Native para iOS como uma pré-compilação para ajudar a reduzir os tempos de compilação.

Durante o processo de lançamento do React Native, estamos produzindo um XCFramework chamado ReactNativeDependencies.xcframework esta é uma versão pré-construída apenas das dependências de terceiros das quais o React Native depende.

Experimentamos e comparamos quanto tempo essa pré-compilação inicial para iOS está economizando e, em nossos benchmarks, executadas em uma máquina M4, as compilações para iOS são cerca de 12% mais rápidas com a pré-compilação do que com a compilação a partir do código-fonte.

Em nossa experiência, também observamos que vários relatórios de bugs de usuários são causados por problemas de compilação relacionados às dependências de terceiros do React Native (exemplo #39568). A pré-construção das dependências de terceiros nos permite construí-las para você, para que você não enfrente mais esses problemas de construção.

Observe que não estamos pré-construindo todo o React Native: estamos apenas pré-construindo as bibliotecas que o Meta não controla diretamente, como Folly e GLog.

Em uma versão futura, também enviaremos o restante do núcleo do React Native como uma pré-construção.

Como usá-los

Esse recurso ainda é experimental, portanto não é ativado por padrão.

Se você quiser usá-los, você pode instalar seus pods adicionando o RCT_USE_RN_DEP variável env:

RCT_USE_RN_DEP=1 bundle exec pod install

Alternativamente, se você quiser habilitá-lo para todos os desenvolvedores que trabalham nisso, você pode modificar seu Podfile assim:

if linkage != nil
Pod::UI.puts "Configuring Pod with #{linkage}ally linked Frameworks".green
use_frameworks! :linkage => linkage.to_sym
end

+ENV['RCT_USE_RN_DEP'] = '1'

target 'HelloWorld' do
config = use_native_modules!

Por favor, relate qualquer problema que as pré-compilações possam causar a você e ao seu aplicativo esta discussão. Estamos comprometidos em analisá-los e garantir que o uso dos níveis seja transparente para o seu aplicativo.

Outras Mudanças

Android — Tamanho menor do APK graças ao IPO

Esta versão vem com redução significativa de tamanho para todos os aplicativos Android criados com React Native. A partir de 0,80, habilitamos Otimização Interprocedimental para compilações React Native e Hermes.

Isso resultou em uma economia de ~1 Mb para todos os aplicativos Android.

Press enter or click to view image in full size

Você obterá esse tamanho de vitória atualizando sua versão do React Native para 0.80 e não serão necessárias mais alterações em seu projeto.

Novo redesenho da tela do aplicativo

Se você não estiver usando o Expo, mas estiver usando o Community CLI & Template, nesta versão movemos a nova tela do aplicativo para ela pacote próprio e deu-lhe uma nova camada de tinta. Isso reduz o padrão de código inicial quando você cria um novo aplicativo com o Community Template e também proporciona uma melhor experiência quando visualizado em telas maiores.

Press enter or click to view image in full size

Aviso sobre o apoio da comunidade JSC

O React Native 0.80 é a última versão do React Native a oferecer suporte JSC de primeira linha. O suporte para JSC será oferecido por meio do pacote mantido pela comunidade @react-native-community/javascriptcore.

Caso você tenha perdido o anúncio, você pode leia mais sobre isso aqui

Quebrando Mudanças

Adicionado "exports" campo no pacote principal

Como parte de nossas alterações na API JS Stable, introduzimos um "exports" campo no package.json manifesto de react-native.

Em 0,80, esse mapeamento continua a expor todos os subcaminhos JavaScript por padrão e, portanto, não deve ser uma grande mudança drástica. Ao mesmo tempo, isso pode afetar sutilmente a forma como os módulos dentro do react-native os pacotes são resolvidos:

  • Sob o metrô, extensões específicas da plataforma não será expandido automaticamente contra "exports" partidas. Fornecemos vários módulos de calço para acomodar isso (#50426).
  • No Jest, a capacidade de simular importações profundas pode ser alterada, o que pode exigir a atualização dos testes.

Outras mudanças de última hora

Esta lista contém uma série de outras alterações drásticas que suspeitamos que possam ter um impacto menor no código do seu produto e vale a pena observar:

JS

  • Nós esbarramos eslint-plugin-react-hooks da v4.6.0 à v5.2.0 (ver completo changelog aqui). O react-hooks as regras de lint podem produzir novos sinais de erro que você terá que corrigir ou suprimir

Android

  • Esta versão eleva a versão Kotlin fornecida com React Native para a versão 2.1.20. O Kotlin 2.1 apresenta novos recursos de linguagem na visualização que você pode começar a usar em seus módulos/componentes. Você pode ler mais sobre isso em as notas oficiais de lançamento.
  • Nós excluímos o StandardCharsets aula. Está obsoleto desde 0,73. Você deve usar o java.nio.charset.StandardCharsets classe em vez disso.
  • Fizemos várias aulas internas. Essas classes não fazem parte da API pública e não devem ser acessadas. Já notificamos ou enviamos patches para as bibliotecas afetadas:
  • com.facebook.react.fabric.StateWrapperImpl
  • com.facebook.react.modules.core.ChoreographerCompat
  • com.facebook.react.modules.common.ModuleDataCleaner
  • Migramos várias classes de Java para Kotlin. Se você estiver usando essas classes, a nulidade e os tipos de algum parâmetro mudaram, então talvez seja necessário ajustar seu código:
  • Todas as aulas dentro com.facebook.react.devsupport
  • com.facebook.react.bridge.ColorPropConverter
  • com.facebook.react.views.textinput.ReactEditText
  • com.facebook.react.views.textinput.ReactTextInputManager

iOS

  • Nós excluímos o RCTFloorPixelValue campo de RCTUtils.h - O RCTFloorPixelValue o método não foi usado no React Native e o removemos completamente.

Outras mudanças menores de quebra são listadas no CHANGELOG para 0,80.

Agradecimentos

O React Native 0.80 contém mais de 1167 commits de 127 colaboradores. Obrigado por todo o seu trabalho duro!

Gostaríamos de enviar um agradecimento especial aos membros da comunidade que enviaram contribuições significativas neste comunicado:

Além disso, também gostaríamos de agradecer aos autores adicionais que trabalharam na documentação de recursos nesta postagem de lançamento:

  • Riccardo Cipolleschi para criar a parte relacionada às pré-compilações do iOS para dependências do React Native.
  • Alex Caça para depreciação de importações profundas, opt-in Strict TypeScript API, novo redesenho da tela do aplicativo.
  • Nicola Corti para o congelamento e avisos da arquitetura legada.

Atualize para 0.80

Por favor, use o Ajudante de atualização do React Native para visualizar alterações de código entre versões do React Native para projetos existentes, além dos documentos de atualização.

Para criar um novo projeto:

Se você usar o Expo, o React Native 0.80 será suportado em uma versão canária do Expo SDK. Instruções sobre como usar o React Native 0.80 no Expo também estão disponíveis em uma postagem de blog dedicada.

Informações

0.80 é agora a versão estável mais recente do React Native e 0.77.x passa para não suportado. Para obter mais informações, consulte a política de suporte do React Native. Nosso objetivo é publicar uma atualização final de fim de vida útil de 0,77 em um futuro próximo.

--

--

Newerton Vargas de Araujo
Newerton Vargas de Araujo

Written by Newerton Vargas de Araujo

Software Enginner | Next.js | NestJs | React Native | Flutter | DevOps

No responses yet