Hoje estamos lançando a versão 0.72!
Este lançamento adiciona recursos altamente solicitados para o Metro, melhorias no tratamento de erros e outras melhorias na experiência do desenvolvedor. Muito desse trabalho foi priorizado com base em seu feedback na pesquisa da comunidade de 2022 -- obrigado a todos que participaram!
Principais Recursos
Alterações que Quebram a Compatibilidade
Principais Recursos
Novos Recursos do Metro
Suporte a Símbolos (Beta)
O suporte a símbolos continua sendo um dos recursos mais solicitados no Metro e, na React Native 0.72, estamos felizes em anunciar o suporte beta para isso.
O suporte a símbolos permite que o React Native funcione transparentemente com configurações de monorepositório e pnpm, removendo a necessidade de contornar problemas. Consulte Ativar Recursos Beta para usar em seu aplicativo.
Atualmente está em beta para coletar feedback sobre a experiência do desenvolvedor considerando diferentes fluxos de trabalho, veja mais detalhes aqui. Planejamos habilitar por padrão os símbolos no 0.73.
Suporte a Exportação de Pacotes (Beta)
Exportações de Pacote é a alternativa moderna ao campo "main" do package.json e fornece novas capacidades para pacotes npm definirem sua API pública e alvo o React Native.
Habilitando suporte a Exportação de Pacotes em sua configuração Metro, seu aplicativo será compatível com um ecossistema mais amplo de JavaScript, incluindo via a nova condição comunitária "react-native". Consulte Ativar Recursos Beta para usar em seu aplicativo.
Ativando Recursos Beta
Para habilitar esses recursos em seu projeto, atualize o arquivo metro.config.js do seu aplicativo e defina as opções resolver.unstable_enableSymlinks ou resolver.unstable_enablePackageExports.
const config = {
In React Native 0.72, we’ve changed the config loading setup for Metro in React Native CLI. Please update your project’s metro.config.js file to match the template’s version.
Please update your config file to the following format. You can also follow the upgrade-helper.
These format changes to metro.config.js will become required in 0.73. For 0.72, we will log a warning if not updated.
This moves control over extending the base React Native Metro config into your project, and we’ve cleaned up the leftover defaults. In addition, this means that standalone Metro CLI commands, such as metro get-dependencies, will now work.
Developer Experience Improvements
No more redboxes with invalid style properties
Prior to this release, providing an invalid style property in StyleSheet would result in a redbox. This is a high signal error that disrupts the developer workflow for a relatively low-risk error.
In 0.72, we’ve relaxed this expectation to fail silently, like providing an invalid CSS property in the browser, and have updated types such that some errors may be caught in build-time vs. run-time.
Melhor leitura de erros no Hermes
O Hermes adicionou uma mensagem de erro melhorada ao invocar um chamável indefinido.
Além disso, os rastreamentos de pilha do LogBox agora filtram quadros internos de bytecode do Hermes que não são relevantes para os usuários do aplicativo.
Melhor saída de erros do CLI React Native
A versão 0.72 vem com o React Native CLI v11, que inclui melhorias para reduzir duplicações, esclarecer a terminologia, reduzir rastreamentos de pilha verbosos e adicionar links profundos para documentos relevantes nos seguintes comandos init, run-android e run-ios.
Você pode encontrar outras melhorias no changelogs do React Native CLI.
Compilação mais rápida e análise de JSON no Hermes
O Hermes melhorou o tempo de compilação de grandes literais de objeto. Por exemplo, em um problema relatado, #852, um usuário tinha todo um conjunto de dados escrito como um grande literal de objeto. Ao melhorar o algoritmo de deduplicação usado pelo Hermes, a compilação foi acelerada em 97% (221c). Essas melhorias beneficiarão os tempos de construção para aplicativos que empacotam muitos objetos.
Várias otimizações (de9c, 6e2d) para a análise de JSON também foram implementadas, beneficiando aplicativos que usam bibliotecas como redux-persist que dependem fortemente da manipulação de JSON.
Mais suporte ECMAScript no Hermes
O suporte às seguintes especificações no Hermes foi implementado na versão React Native 0.72:
Para usuários do JSC, essas funcionalidades já estão disponíveis.
Mudando Atualizações da Nova Arquitetura
A Nova Arquitetura está atualmente em fase experimental. Para manter as atualizações focadas no público-alvo, estamos movendo as atualizações da Nova Arquitetura na versão 0.72 e futuras versões para o grupo de trabalho dedicado working group. Essa mudança também permitirá atualizações mais frequentes, como o trabalho que é lançado em nossas noites.
Você pode ler as atualizações 0.72 para a Nova Arquitetura aqui. Assine os avisos do GitHub do grupo de trabalho para ficar informado sobre nosso progresso na Nova Arquitetura.
Quebras de Compatibilidade
Remoção de Componentes Obsoletos
Os seguintes pacotes foram removidos do React Native na versão 0.72. Por favor, migre para o pacote da comunidade recomendado:
Renomeação de Pacotes
Todos os pacotes publicados a partir do repositório react-native agora residem em react-native/packages, e são publicados sob o escopo de pacote @react-native npm scope para garantir uma clara atribuição de propriedade.
Não houve alterações no pacote react-native.
Nome do Pacote Antigo Novo Nome do Pacote @react-native-community/eslint-config@react-native/eslint-config@react-native-community/eslint-plugin@react-native/eslint-plugin@react-native/polyfills@react-native/js-polyfills@react-native/normalize-color@react-native/normalize-colors@react-native/assets@react-native/assets-registryreact-native-codegen@react-native/codegenreact-native-gradle-plugin@react-native/gradle-plugin
Esta mudança não afetará você se você não tiver nenhuma dependência direta em um pacote renomeado. Caso contrário, ao atualizar para o React Native 0.72, atualize qualquer dependência renomeada para sua versão ~0.72.
Você pode ler a motivação por trás dessas mudanças no RFC dedicado.
Agradecimentos
Muitas dessas mudanças vieram diretamente do feedback da comunidade. De relatórios sobre redboxes barulhentos, bugs com Package Exports, benchmarking para a nova arquitetura — tudo isso é valioso e apreciamos o tempo que você dedica para compartilhar feedback.
A versão 0.72 contém mais de 1100 commits de 66 contribuidores. Obrigado pelo seu trabalho duro!
Atualização para a versão 0.72
Confira a lista de alterações necessárias no upgrade-helper, ou leia a documentação sobre como atualizar seu projeto existente em documentação de upgrade. Você também pode criar um novo projeto com o comando npx react-native@latest init MeuProjeto.
Se você usa Expo, a versão 0.72 do React Native será suportada na release do SDK 49.
A versão 0.72 é agora a última versão estável do React Native e a versão 0.69.x passa para o estado de não suporte. Para mais informações, consulte a política de suporte do React Native.

