DEV Community

Cover image for React Native 0.80 Oficial: Saiu! O Que Mudou de Verdade?
Aroldo Goulart
Aroldo Goulart

Posted on

React Native 0.80 Oficial: Saiu! O Que Mudou de Verdade?

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';
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Ou adicionar no seu Podfile:

ENV['RCT_USE_RN_DEP'] = '1'
Enter fullscreen mode Exit fullscreen mode

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) (use java.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 de RCTUtils.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)