TL;DR 📌
Atualização React 19.1.0 traz suporte a gradientes radiais, builds iOS mais rápidos, APKs Android menores, fim da arquitetura legada, novos avisos para deep imports, TypeScript estrito opt-in, descontinuação oficial do JSC, mudanças críticas com Kotlin 2.1.20 e ESLint, além de dependências iOS pré-compiladas.
E aí, galera dev! 👋 Finalmente saiu a versão oficial do React Native 0.80! Depois de acompanharmos os RCs, agora temos a versão estável com todas as novidades confirmadas. Vamos ver o que realmente entrou, o que mudou desde os RCs e o que você precisa saber antes de atualizar seus projetos.
Grandes Novidades Confirmadas! 🚀
React 19.1.0 Chegou!
A versão final do RN 0.80 vem com o React 19.1.0 fresquinho (0e11e6a28b)! Isso traz melhorias como "owner stacks" para ajudar a identificar qual componente causou um erro específico (embora tenha um bug conhecido se você usar o plugin @babel/plugin-transform-function-name
).
Chega de Deep Imports! 🚫
Aqueles imports profundos tipo import {Alert} from 'react-native/Libraries/Alert/Alert'
agora estão oficialmente deprecados (319ba0afd2, 9fc2a9b9e6). O ESLint e o console JS vão te avisar quando você fizer isso (87809d9326). A ideia é que no futuro você só use imports diretos da raiz:
// Antes - import profundo
import {Alert} from 'react-native/Libraries/Alert/Alert';
// Agora - import da raiz
import {Alert} from 'react-native';
Algumas APIs não estão disponíveis na raiz e vão sumir mesmo. Isso é intencional pra reduzir a superfície da API do React Native.
API TypeScript Estrita (Opcional) 🧐
Tem uma nova opção de tipos TypeScript mais precisos e seguros (6ea24f7bb9)! Esses tipos são:
- Gerados diretamente do código-fonte (mais precisos)
- Restritos ao arquivo index do React Native (definindo melhor a API pública)
É opt-in por enquanto, então você pode migrar quando estiver pronto. Se você usa APIs padrão, provavelmente nem vai precisar mudar nada.
Arquitetura Legacy Oficialmente Congelada ❄️
A New Architecture é o padrão desde a versão 0.76, e agora a Legacy Architecture está oficialmente congelada. Isso significa:
- Sem novos bugfixes ou features na Legacy Architecture
- Sem testes na Legacy Architecture durante o desenvolvimento de novas versões
- Avisos no DevTools para APIs que não funcionarão na New Architecture (706b6e878d)
Você ainda pode optar por usar a Legacy Architecture, mas ela será removida no futuro.
Dependências iOS Pré-compiladas (Experimental) ⚡
Cansado de esperar o primeiro build iOS? Agora tem uma opção experimental para usar dependências pré-compiladas que reduzem o tempo de build inicial em ~12%! Para usar, basta:
RCT_USE_RN_DEP=1 bundle exec pod install
Ou adicionar no seu Podfile:
ENV['RCT_USE_RN_DEP'] = '1'
APKs Android Mais Enxutos 📦
Graças à Otimização Interprocedural (IPO) habilitada para React Native (f107c28d2f) e Hermes (2da062f9d1), os APKs Android ficaram ~1MB menores! E você não precisa fazer nada além de atualizar para a versão 0.80.
Redesign da New App Screen 🎨
A tela inicial do template foi movida para seu próprio pacote (3cf0102007) e ganhou um visual novo. Isso reduz o boilerplate inicial e melhora a experiência em telas maiores.
Última Versão com Suporte Oficial ao JSC ⚠️
Esta é a última versão do React Native com suporte oficial ao JavaScriptCore. No futuro, o suporte será oferecido via pacote comunitário @react-native-community/javascriptcore
.
O Que Mudou Desde os RCs? 🔄
Campo "exports" no package.json
Foi adicionado o campo "exports" no package.json do react-native para preparar a API JavaScript estável. Por enquanto, ele ainda expõe todos os subpaths por padrão, mas isso pode afetar como os módulos são resolvidos:
- No Metro, extensões específicas de plataforma não serão expandidas automaticamente
- No Jest, a capacidade de mockar imports profundos pode ser alterada
Kotlin 2.1.20
A versão do Kotlin foi atualizada para 2.1.20, trazendo novos recursos de linguagem em preview que você pode começar a usar nos seus módulos/componentes.
Mais Classes Internas e Migrações para Kotlin
Várias classes foram marcadas como internas no Android, incluindo StateWrapperImpl
(9f941c50c9), ChoreographerCompat
(f8b2956437) e ModuleDataCleaner
(6fa1864d52). Além disso, mais classes foram migradas de Java para Kotlin, incluindo todo o pacote com.facebook.react.devsupport
(9da485b54c).
Breaking Changes que Você Precisa Saber 💥
JavaScript
- ESLint Plugin React Hooks atualizado de v4.6.0 para v5.2.0 (4de592756b), podendo gerar novos erros de lint
- Nomes de componentes não podem mais começar com
_
(underline)
Android
-
StandardCharsets
foi removida (40b38d0a44) (usejava.nio.charset.StandardCharsets
) - Classes como
ReactEditText
(cac27d15be),NetworkModule
(8726e26348),ReactTextInputManager
(ab47834eb1) foram convertidas para Kotlin - Várias classes foram marcadas como internas e não devem ser acessadas diretamente
iOS
-
RCTFloorPixelValue
foi removido deRCTUtils.h
(dc97df10a2) - Helpers de configuração
BridgeModuleBatchDidComplete
foram deletados (cbad8aafa5)
Novidades Extras Confirmadas 🌟
Gradientes Radiais
Finalmente temos suporte nativo a gradientes radiais (1b45dc8033, a2409941c2, d7533dce1c)!
Mais Cores no CSS
Suporte para notação hwb()
(692b05e77d) e alpha no rgb()
tipo rgb(R G B / A)
(7441127040).
URLSearchParams Nativo
Implementação nativa de URLSearchParams
(af1f1e4fe5) para manipular query strings sem precisar de libs extras.
Acessibilidade Melhorada
Nova prop accessibilityOrder
para Android e iOS (8cf4d5b531), além de screenReaderFocusable
para Android (4ce093154d) e accessibilityRespondsToUserInteraction
para iOS (fd8a3456ca).
Pressable com onPressMove
Agora o componente Pressable
expõe a prop onPressMove
(6df938c72e) para mais controle durante interações de toque.
Como Atualizar? 🛠️
Use o React Native Upgrade Helper para ver as mudanças de código entre versões e siga a documentação oficial de upgrade.
Se você usa Expo, o React Native 0.80 será suportado em uma versão canary do Expo SDK.
Resumindo... 🎯
O React Native 0.80 traz o React 19.1, estabiliza a API JavaScript, congela oficialmente a Legacy Architecture, reduz o tamanho dos APKs Android e o tempo de build iOS. É uma versão focada em estabilidade, performance e preparação para o futuro sem a Legacy Architecture.
Agora é hora de atualizar seus projetos e aproveitar todas essas melhorias! Bom código! 🚀
Top comments (0)