Hoje estamos animados em anunciar o lançamento do React Native 0.81!
Este lançamento inclui suporte para Android 16 (API level 36) e uma variedade de melhorias na estabilidade e correções de bugs, bem como suporte experimental para builds iOS mais rápidas usando pré-compilação.
Principais destaques
Principais destaques
Suporte ao Android 16
Aplicativos do Android construídos com o React Native 0.81 agora terão como padrão a compatibilidade com Android 16 (API level 36).
Como anunciado anteriormente pela Google, o Android 16 exige que os aplicativos sejam exibidos de borda a borda (sem suporte para optar por não usar essa funcionalidade).
Para apoiar isso, estamos depreciando o componente <SafeAreaView> como anunciado anteriormente em favor de alternativas. Veja abaixo (veja aqui) para obter um suporte melhor a bordas.
Também estamos adicionando uma nova propriedade gradle edgeToEdgeEnabled que permite escolher se deseja habilitar o modo de exibição de borda a borda em todas as versões do Android abaixo da 16.
A função de retrocesso previsível está habilitada por padrão para aplicativos que visam o Android 16. A API BackHandler deve continuar funcionando como antes para a maioria dos casos de uso. No entanto, se seu aplicativo depende de código nativo personalizado para lidar com o retrocesso (como sobrepor o método onBackPressed()), você pode precisar migrar manualmente seu código ou desativá-la temporariamente. Por favor, teste a navegação de retrocesso do seu aplicativo com cuidado após a atualização.
A Google agora espera que os aplicativos suportem layouts adaptáveis em dispositivos de tela grande, independentemente da orientação ou restrições de tamanho. Embora você possa optar por não usar agora, é recomendado testar e atualizar seu aplicativo para uma interface responsiva em telas grandes antes do Android 17.
A partir de 1º de novembro de 2025, todas as submissões de aplicativos no Google Play devem atender ao requisito de tamanho de página de 16 KB para binários nativos. Isso se aplica a novos aplicativos e atualizações que visam dispositivos Android 15+. O React Native já é compatível com o tamanho da página de 16KB. Certifique-se de que todo seu código nativo e bibliotecas terceiras também são compatíveis.
Para mais detalhes sobre as mudanças do Android 16 e os passos de migração, consulte este post no repositório discussions-and-proposals.
Deprecação do SafeAreaView
O componente de visualização integrado <SafeAreaView> foi originalmente projetado para fornecer suporte limitado e exclusivo para iOS para manter o conteúdo nas "áreas seguras" da tela (longe das câmeras notch, cantos arredondados, etc). Não é compatível com renderização de borda a borda no Android e não permite personalizações além do preenchimento. Como resultado, muitos aplicativos optaram por soluções mais portáteis e flexíveis, como o react-native-safe-area-context.
No React Native 0.81, o componente legado <SafeAreaView> está obsoleto e você verá avisos no React Native DevTools se seu aplicativo usá-lo.
Ele será removido em uma versão futura do React Native. Recomendamos que você migre para o react-native-safe-area-context ou um pacote semelhante para garantir que seu aplicativo esteja no melhor visual em todas as plataformas.
Suporte comunitário ao JavaScriptCore
Como anunciamos no ano passado, o suporte para a engine JavaScriptCore (JSC) foi movido para um pacote mantido pela comunidade que é lançado separadamente do React Native em si. No React Native 0.81, estamos removendo a versão integrada de JavaScriptCore. Todos os aplicativos que exigem o JavaScriptCore devem agora usar o pacote da comunidade para atualizar para 0.81. Consulte as instruções de instalação para mais detalhes.
Esta alteração não afeta aplicativos que estão usando o Hermes.
Compilações pré-compiladas experimentais do iOS
O React Native 0.81 introduz compilações pré-compiladas para iOS, reduzindo os tempos de compilação em até 10x em projetos onde o React Native é a principal dependência. Esta é uma colaboração entre a Expo e a Meta e expande o trabalho que já foi lançado no React Native 0.80.
Esta funcionalidade ainda está em fase experimental, mas esperamos habilitá-la para todos os aplicativos em uma futura versão. Se você gostaria de tentar compilações pré-compiladas no seu próprio aplicativo, pode ativá-las especificando as seguintes variáveis de ambiente ao executar pod install:
RCT_USE_RN_DEP=1 RCT_USE_PREBUILT_RNCORE=1 bundle exec pod install
Fornecer feedback em esta discussão do GitHub.
Há duas limitações que já conhecemos e estamos trabalhando para resolver:
- In builds pré-compilados, você não pode depurar e entrar nos internos do React Native. Você ainda pode depurar seu próprio código nativo enquanto usa uma versão pré-compilada do React Native.
- Prebuilds não são suportados no Xcode 26 Beta, porque o IDE constrói todos os alvos com módulos Swift explícitos habilitados. Para usar builds pré-compiladas com o Xcode 26, defina a flag
SWIFT_ENABLE_EXPLICIT_MODULEScomoNOem seu projeto do Xcode. Resolveremos isso em uma próxima atualização de correção.
Você pode ler mais sobre essa funcionalidade no post completo do blog da Expo, Precompilado React Native para iOS: Construções mais rápidas estão chegando na 0.81.
Alterações que breakam o código
Versão mínima do Node.js aumentada para 20
O React Native agora requer a versão Node.js 20.19.4 (a última versão de manutenção LTS à época da escrita) ou superior. Você pode precisar atualizar o Node.js em seu ambiente de desenvolvimento ou CI ao atualizar para o React Native 0.81.
Versão mínima do Xcode aumentada para 16.1
O React Native agora requer Xcode 16.1 ou superior para construir projetos iOS. Você pode precisar atualizar o Xcode em seu ambiente de desenvolvimento ou CI ao atualizar para o React Native 0.81.
Metro agora respeita as opções resolveRequest e getModulesRunBeforeMainModule se especificadas no arquivo metro.config.js de um projeto do CLI da Comunidade React Native. Anteriormente, definir essas opções não teria efeito algum. Se você tiver valores personalizados para essas opções em seu arquivo metro.config.js, pode precisar excluí-los para restaurar o comportamento anterior.
Melhor relato de erros não capturados em JavaScript
Os React Native DevTools agora exibem a mensagem original e o rastreamento de pilha dos erros em JavaScript não capturados, bem como a causa do erro se houver alguma, e um Rastreamento de Proprietário (Owner Stack) para erros lançados por componentes. Isso torna os erros mais fáceis de depurar e corrigir.

Se você está registrando erros em JavaScript no seu backend ou em um serviço de relatório de erros de terceiros, isso pode afetar os logs que você vê após a atualização para o React Native 0.81 (por exemplo: você pode ver mais erros lançados que costumavam ser relatados via console.error), e você pode precisar atualizar algumas lógicas do backend de acordo.
RN_SERIALIZABLE_STATE e bandeiras C++.
Nesta versão do React Native, introduzimos um novo macro chamado RN_SERIALIZABLE_STATE para suportar estado serializável para os Componentes na Nova Arquitetura.
Se você é o autor de uma biblioteca e tem um arquivo personalizado CMakeLists.txt, será necessário especificar este macro no seu arquivo CMakeLists.txt ou seu código C++ pode falhar ao compilar.
Para suportar isso, introduzimos uma nova função do CMake chamada target_compile_reactnative_options que cuidará de configurar este macro e todas as bandeiras necessárias em C++. Você pode invocá-la da seguinte maneira no seu arquivo CMakeLists:
target_compile_reactnative_options(myLibraryName PRIVATE)Você pode ver um exemplo de como o react-native-screens configurou este macro.
Esta mudança afetará apenas bibliotecas mais avançadas e complexas. Se sua biblioteca está usando codegen e não tem um arquivo CMake personalizado, você não será afetado por esta mudança.
Outros Cambios de Compatibilidade
Esta lista contém uma série de outros cambios que podem ter um impacto menor no seu código e são importantes para notar:
Android
- Fizemos várias classes internas. Essas classes não fazem parte da API pública e não devem ser acessadas. Já notificamos ou submetimos patches às bibliotecas afetadas:
com.facebook.react.fabric.mounting.MountingManagercom.facebook.react.views.text.TextLayoutManager
- Movemos a prop nativa
textAlignVerticaldeTextAttribute.hparaParagraphAttribute.h- A prop
textAlignVerticalafeta apenas o texto superior mais próximo (parágrafo). No entanto, ela existe nas propriedades de atributos de texto. Para refletir melhor essa limitação da plataforma, foi movida para as propriedades do parágrafo. - Essa mudança não afeta a API JS do componente
<Text>. - Você será afetado por essa mudança apenas se implementar um componente Fabric que interage com o C++ Text API.
- Caso seja afetado por essa mudança, você pode substituir
TextAttributes.hporParagraphAttribute.hem seu código
- A prop
Consulte a lista completa de mudanças quebradoras no CHANGELOG para 0.81.
Agradecimentos
O React Native 0.81 contém mais de 1110 commits de 110 contribuidores. Obrigado pelo trabalho duro!
Queremos enviar um agradecimento especial aos membros da comunidade que entregaram contribuições significativas nesta versão:
Atualizar para 0.81
Use o React Native Upgrade Helper para visualizar as alterações de código entre versões do React Native em projetos existentes, além dos documentos de atualização.
Para criar um novo projeto:
npx @react-native-community/cli init MyProject --version latestSe você usa o Expo, o React Native 0.81 será suportado na futura versão do SDK Expo 54 como a versão padrão do React Native.

