E aí, galera dev! 👋
O React Native 0.80 tá batendo na porta com suas versões Release Candidate (RC).
Bora dar uma olhada no que tem de novo, o que foi consertado e o que pode precisar de um carinho extra nos seus projetos?
Agora com os commits pra quem gosta de fuçar! 😉
Atenção Aqui! 🚨 (Breaking Changes)
Sempre tem aquelas mudanças que podem quebrar alguma coisa, né? Fica de olho nessas:
- Tela de Boas-Vindas Renovada: A
NewAppScreen
(aquela tela padrão) foi redesenhada e movida parareact-native/new-app-screen
(3cf0102007). - Imports Mais Restritos: Com a introdução do
"exports"
nopackage.json
(319ba0afd2, 9fc2a9b9e6), imports de pastas internas (tiporeact-native/Libraries/...
) podem dar ruim. Use os caminhos oficiais! Importar direto dereact-native/virtualized-lists
também não rola mais (be8393c41b). - Nomes de Componentes: Regra nova do ESLint (via
eslint-plugin-react-hooks
v5.2.0): nomes de componentes não podem mais começar com_
(4de592756b). - Para a Galera do Android: Muita coisa virou Kotlin! 🤖 Se você estendia classes como
ReactEditText
(cac27d15be),NetworkModule
(8726e26348),ReactTextInputManager
(ab47834eb1),DevSupportManagerBase
(9da485b54c), ouReactInstanceDevHelper
(09492075e8), pode precisar ajustar assinaturas. Classes comoModuleDataCleaner
(6fa1864d52) eDeviceInfoModule
(f02607badb) ficaram internas.ChoreographerCompat
(f8b2956437) eStandardCharsets
(40b38d0a44) foram deletadas. A funçãoloadSplitBundleFromServer
foi removida da interfaceDevSupportManager
(86cd31eb6b). - Para a Galera do iOS: Helpers de configuração
BridgeModuleBatchDidComplete
foram deletados (cbad8aafa5).
Brinquedos Novos na Caixa! 🎁 (Novidades)
Sempre bom ter coisa nova pra brincar, né?
- TypeScript Mais Rigoroso (Opcional): Chegou o
react-native-strict-api
(6ea24f7bb9). Ative para mais checagens! -
<Image>
Mais Flexível: Suporte a headerscrossOrigin
ereferralPolicy
direto nasource.uri
(49ea9d80b8). - Gradientes Radiais: Finalmente! ✨ (1b45dc8033).
- Mais Cores no CSS: Suporte pra notação
hwb()
(692b05e77d) e alpha norgb()
tiporgb(R G B / A)
(7441127040). - Alerta da Arquitetura Antiga: Aviso se o app roda na arquitetura antiga (706b6e878d).
- Regra ESLint
no-deep-imports
: Ajuda a evitar imports de caminhos internos (87809d9326). -
URLSearchParams
Nativo: Manipulação de query string direto no core (af1f1e4fe5). - Acessibilidade Melhor: Nova prop
accessibilityOrder
pra Android e iOS (8cf4d5b531). -
Pressable
comonPressMove
: Mais controle no toque (6df938c72e). - APIs do EventEmitter: Métodos
addListener
eremoveListener
expostos (ff4537c15e). - Opção
compact
no Babel Preset: Permite desabilitar remoção de espaços em branco (86911003dc). - Utilitários Codegen Exportados: Funções e tipos do Codegen agora na raiz do pacote (c7aa3f3fe7).
- Específico Android: Prop
screenReaderFocusable
exposta (4ce093154d), aviso para componentes legados comYogaMeasureFunction.measure()
(9345c88a61), prop para filtrar drag-and-drop em TextInputs (d10dd7130c). - Específico iOS: Props de acessibilidade
accessibilityLabelledBy
,accessibilityDescribedBy
,accessibilityHint
(5b5cf0e199).
Faxina nos Bugs! 🧹 (Correções)
Ninguém gosta de bug, né? A equipe do RN mandou ver nas correções (aqui não vou listar commits pra não poluir muito, mas o changelog original tem tudo!):
- Geral: Timers (
setTimeout
, etc.) mais alinhados com a web. Referências de tipos globais no TypeScript. Genéricos emVirtualizeSectionList
e tipos emVirtualizedList
. Estado controlado doSwitch
. Layout comListEmptyComponent
. Atualização de texto ao mudar a escala da fonte. Tratamento de outline comoutline-offset
. - Android: Muita atenção aos
TextInput
! Foco em versões antigas, renderização de bordas (uniformes e translúcidas), navegação pelo teclado, seleção dupla comdataDetectorType
. Layout (bordas RTL, clipping comremoveClippedSubviews
, navegação com teclado em listas). Crashes (estado do pai não encontrado, event emitters em arm32). Segurança contra nulos (null safety) em várias partes. Fetch de URIscontent://
. Foco com teclado. - iOS: Adição de views filhas via interop layer. Medição de texto multiline. Interações com
ScrollView
(betterHitTest
). Crash noRCTPullToRefreshViewComponentView
. Tratamento de views inline na New Arch com texto truncado.
Hora do Adeus... 👋 (Deprecations e Remoções)
Algumas coisas estão dando tchau ou se preparando pra isso:
- Tipos
*EventData
(Image, Switch, TextInput) estão deprecated. Use*Event
(701859b397). - Android:
ReactContextBaseJavaModule.getCurrentActivity()
deprecated (1408c69fd8).UIManagerType.DEFAULT
deprecated (useLEGACY
) (a8668319ad).ResourceDrawableIdHelper.instance
removido (8de401c625). ConstrutorEventBeatManager(ReactApplicationContext)
removido (c97af95a7f).FabricSoLoader
removido da API pública (902f82656e).(un)registerEventEmitter
removido da interfaceEventDispatcher
(d1c0f57073).TouchesHelper
não é mais API pública (2196597e2b). - iOS:
loadImageForURL
deprecated (use nova assinatura comcompletionHandlerWithMetadata
) (43c9a609de).RCT_NEW_ARCH_ENABLED
eRCTSetNewArchEnabled
deprecated (6dd721b258).RCTComputeScreenScale
(094876367f) eRCTFloorPixelValue
(dc97df10a2) removidos.
Por Baixo dos Panos ⚙️ (Outras Mudanças)
- Android: Gradle atualizado pra 8.14.1 (827a6851d0).
- Frontend do Debugger atualizado (647af1c4ca).
Resumindo a Ópera 🎶
É isso! O React Native 0.80.0-rc traz um monte de refinamentos, continua a migração pra Kotlin no Android, adiciona funcionalidades legais (oi, gradientes radiais!) e corrige vários bugs. Os links dos commits estão aí pra quem quiser cavar mais fundo!
Fica de olho principalmente nos breaking changes, especialmente se você tem código nativo customizado ou dependia de imports internos. Agora é testar e preparar seus apps! Bom código pra todo mundo! 🚀
Fica Ligado! 👀
Este review cobre o que rolou até a versão v0.80.0-rc.3
.
Conforme novas versões RC forem saindo, vou atualizar este post pra gente ficar sempre por dentro das últimas novidades, beleza?
Ah, e só pra contar os bastidores: pra montar este resumão, usei uma ajudinha da IA pra dar aquela primeira filtrada e organizada no changelog gigante. Depois, claro, veio o toque humano pra refinar, simplificar a linguagem e garantir que tudo fizesse sentido pro nosso dia a dia. 😉
Top comments (0)