Sitemap

React Native 0.75 — Suporte para valores em porcentagem no layout, estabilização da Nova Arquitetura, atualizações de template & init, e mais

4 min readAug 24, 2025

Hoje estamos animados em lançar o React Native 0.75!

Esta versão traz vários recursos, como o Yoga 3.1 com suporte a valores em “%”, várias correções de estabilidade para a Nova Arquitetura, e a introdução da recomendação para que usuários utilizem um framework React Native.

Destaques

  • Yoga 3.1 e melhorias no layout
  • Estabilização da Nova Arquitetura
  • Uso de frameworks

Breaking Changes

  • Touchables em TypeScript não podem mais ser usados como tipos em expressões genéricas
  • Última versão com suporte a minSdk 23 e minIOSVersion 13.4
  • Android: remoção do JSIModule
  • Android: PopUp Menu removido do core
  • iOS: trabalho de descontinuação do Push Notifications finalizado
  • Community CLI: remoção dos comandos ram-bundle e profile-hermes

Destaques Detalhados

Yoga 3.1 e Melhorias no Layout

Desde a entrega da versão 3.0 do Yoga no React Native 0.74, continuamos adicionando melhorias e novos recursos de layout. O RN 0.75 vem com o Yoga 3.1.

Uma funcionalidade notável e muito solicitada é o suporte a valores em “%” em vários casos, como gaps e transformações. Esses recursos estão disponíveis somente para a Nova Arquitetura — caso deseje usá-los, considere migrar para ela.

Valores em porcentagem em gaps

Com a versão 0.75, as props gap, columnGap e rowGap agora suportam strings com valores em “%”.

Exemplo em React:

function App(): React.JSX.Element {
return (
<SafeAreaView
style={{
marginTop: 20,
alignItems: 'center',
flex: 1,
rowGap: '20%',
}}>
<View style={{ flex: 1, flexDirection: 'row', columnGap: '10%' }}>
<View style={{ backgroundColor: 'purple', width: 100, height: 100 }} />
<View style={{ backgroundColor: 'blue', width: 100, height: 100 }} />
<View style={{ backgroundColor: 'green', width: 100, height: 100 }} />
</View>
{/* Outras Views aninhadas... */}
</SafeAreaView>
);
}

Valores em porcentagem em transformações

A prop transform agora aceita valores com “%” para transformações translate.

Exemplo:

function Translated() {
return (
<SafeAreaView style={{ marginTop: 20, flex: 1, rowGap: '20%' }}>
<View
style={{
backgroundColor: 'red',
width: 100,
height: 100,
transform: [{ translateY: '100%' }, { translateX: '100%' }],
}}
/>
</SafeAreaView>
);
}

Estabilização da Nova Arquitetura

Desde que anunciamos o beta da Nova Arquitetura na React Conf, várias correções e melhorias foram introduzidas. Nosso objetivo é que a Nova Arquitetura seja considerada estável em breve. Nos últimos meses, focamos em preencher lacunas entre a arquitetura antiga e a nova.

Alguns bugs e faltas solucionados incluem:

  • Correção de adjustsFontSizeToFit no Android
  • textAlign agora funciona com views inline no Android
  • Alinhamento de baseline de texto corrigido no iOS

Trabalhamos com a equipe da Expo para adicionar informações sobre suporte à Nova Arquitetura no React Native Directory, facilitando a verificação de compatibilidade de bibliotecas.

Também disponibilizamos uma nova API considerada estável para acessar o jsi::Runtime em TurboModules de forma segura, substituindo a abordagem experimental anterior.

Como usar o jsi::Runtime em TurboModules

  • iOS: implemente o protocolo RCTTurboModuleWithJSIBindings, usando installJSIBindingsWithRuntime para acesso thread-safe ao runtime em Swift/Obj-C.
  • Android: implemente a interface TurboModuleWithBindings, e utilize o método JNI getBindingsInstaller para acesso via C++.

Além disso, temos CallInvoker como API para executar trabalho de forma segura na thread JavaScript — tanto no iOS via RCTCallInvokerModule, quanto no Android via JNI CallInvokerHolder.

Uso de Frameworks

Conforme compartilhado na React Conf, a forma recomendada para criar aplicativos React Native agora é usando um framework, como o Expo.

Para refletir essa orientação, esta versão traz duas mudanças:

  • O diretório /template foi movido do pacote react-native para o repositório @react-native-community/template.
  • O comando react-native init será descontinuado em 31 de dezembro de 2024.

Se você já usa um framework como o Expo, essas mudanças não impactarão você. O RN 0.75 continua compatível com o Expo SDK 51.

Melhorias de desempenho no Auto-linking

Durante os aprimoramentos do comando init, reescrevemos a lógica de auto-linking para torná-la mais performática. Como resultado, a velocidade de build melhorou significativamente.

Se você usa Expo com o RN 0.75:

  • No Android: auto-linking até ~6,5× mais rápido
  • No iOS: até ~1,5× mais rápido

Breaking Changes Detalhados

Touchables em TypeScript

TouchableOpacity e TouchableHighlight foram convertidos em componentes funcionais, o que significa que não podem mais ser usados como tipo em expressões genéricas.

Exemplo inválido:

import { TouchableHighlight } from 'react-native';
const ref = useRef<TouchableHighlight>(); // ✗ inválido

Use alternatives:

const ref1 = useRef<React.ElementRef<typeof TouchableHighlight>>();
const ref2 = useRef<View>();

Suporte mínimo de versão

RN 0.75 será a última versão com suporte ao minSdk 23 (Android 6.0) e ao minIOSVersion 13.4. A partir do RN 0.76, os mínimos exigidos serão minSdk 24 (Android 7.0) e iOS 15.1.

Android: remoções importantes

  • O JSIModule foi removido; utilize Turbo Native Modules como alternativa.
  • Métodos relacionados ao PopUpMenu foram removidos do core; agora use o componente <PopupMenuAndroid /> do pacote @react-native/popup-menu-android.

iOS: finalização da descontinuação do PushNotificationIOS

Interfaces legadas foram removidas:

+ (void)didReceiveLocalNotification:(UILocalNotification *)notification;
+ (void)didReceiveRemoteNotification:(NSDictionary *)notification;

Use em seu lugar:

didReceiveNotification:(UNNotification *)notification

Community CLI: remoção de comandos

Foram removidos os comandos:

  • ram-bundle (antes usado para rodar bundles direto na memória; substituído pelo Hermes)
  • profile-hermes (usado para perfilamento de CPU com formato .cpuprofile, agora acessível via painel “Profiler” no debugger experimental)

Outras mudanças importantes (gerais, Android, iOS)

  • Refatorações em TurboModules, C++, ESLint, Linting, Runtime, CocoaPods, entre outros. (omito detalhes exaustivos por concisão, mas estão no original)

Agradecimentos

O React Native 0.75 contém mais de 1.491 commits de 165 contribuidores. Muito obrigado a todos!

Agradecimentos especiais a:

  • Nick Gerleman e Joe Vilches (Yoga 3.1 e Layout)
  • Arushi Kesarwani (support ao UIManager na Nova Arquitetura)
  • Phillip Pan (acesso ao jsi::Runtime via TurboModules)
  • Alan Lee e Soe Lynn (limites de suporte minSdk/iOS)
  • Kudo Chien (melhorias no auto-linking)
  • Alex Hunt (remoção dos comandos ram-bundle e profile-hermes)

Como atualizar para 0.75

  • Use o React Native Upgrade Helper para comparar e aplicar alterações da sua versão atual.
  • Para criar um novo projeto:
npx @react-native-community/cli@latest init MyProject --version latest
  • Se você usa o Expo, o RN 0.75 já é compatível com o Expo SDK 51 — atualizações possíveis conforme orientação da documentação.

0.75 é a versão estável mais recente; o suporte à versão 0.72.x foi encerrado.

--

--

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