React Native

React Native 0.84 - Hermes V1 como Padrão

A versão 0.84 do React Native foi lançada com o JavaScript engine Hermes V1 como padrão, trazendo melhorias significativas de desempenho para todas as aplicações. Além disso, a versão inclui binários pré-compilados para iOS por padrão e continua a remoção da arquitetura legada em ambas as plataformas.

Compartilhar
React Native 0.84 - Hermes V1 by Default · React Native

Hoje estamos animados em anunciar o lançamento do React Native 0.84!

Nesta versão, o Hermes V1 se torna o motor JavaScript padrão para todas as aplicações React Native, trazendo melhorias significativas de desempenho. Continuamos removendo a Arquitetura Legada em ambos os sistemas iOS e Android, além de fornecer binários pré-compilados por padrão no iOS.

Hermes V1 como Padrão

O Hermes V1 agora é o motor JavaScript padrão para React Native em ambas as plataformas iOS e Android, após a introdução experimental inicial na versão 0.82 do React Native.

O Hermes V1 representa a próxima evolução do motor Hermes, com melhorias significativas tanto no compilador quanto na máquina virtual que entregam desempenho de JavaScript mensuravelmente superior.

Significado para sua Aplicação

  • Ganhos de desempenho automáticos: Todas as aplicações usarão o Hermes V1 por padrão, trazendo uma velocidade de execução melhorada e uso reduzido de memória.
  • Nenhuma migração necessária: Se você já está usando o Hermes (padrão desde 0.70), receberá automaticamente o Hermes V1. Nenhuma alteração na configuração é necessária.

Opcionalmente desativar o Hermes V1

  • Gerenciador de pacotes override: Força a instalação do pacote legado hermes-compiler no seu arquivo package.json:
  • {
      "overrides": {
        "hermes-compiler": "0.15.0"
      }
    }
    
    {
      "resolutions": {
        "hermes-compiler": "0.15.0"
      }
    }
    
    {
      "pnpm": {
        "overrides": {
          "hermes-compiler": "0.15.0"
        }
      }
    }
  • iOS: Ao instalar as dependências do CocoaPods, passe as variáveis de ambiente RCT_HERMES_V1_ENABLED=0 e RCT_USE_PREBUILT_RNCORE=0.
  • Android: Adicione hermesV1Enabled=false dentro do arquivo android/gradle.properties, e configure o aplicativo para construir o React Native a partir da fonte.

Binários Pré-compilados no iOS por Padrão

O React Native 0.84 agora envia binários pré-compilados no iOS por padrão. Anteriormente introduzidos como uma opção de configuração, os binários pré-compilados estão agora habilitados por padrão, reduzindo significativamente o tempo de construção para aplicações iOS.

Isso significa que você não precisa mais compilar a parte principal do React Native a partir da fonte toda vez que faz uma limpeza e recompilação. Os binários pré-compilados .xcframework são automaticamente baixados e usados durante o processo de instalação dos pods.

Caso precise construir o React Native a partir da fonte (por exemplo, para optar por fora do Hermes V1), você pode desabilitar os binários pré-compilados definindo RCT_USE_PREBUILT_RNCORE=0 ao instalar pods.

Códigos de Componentes da Arquitetura Legada Removidos

A partir do trabalho iniciado na versão 0.82 (que tornou a Nova Arquitetura a única opção de tempo de execução), o React Native 0.84 continua removendo códigos da Arquitetura Legada em ambos os sistemas iOS e Android.

iOS

Na versão 0.83, introduzimos a flag experimental RCT_REMOVE_LEGACY_ARCH para compilar fora do código da Arquitetura Legada. Na versão 0.84, isso é agora o comportamento padrão — códigos da Arquitetura Legada não são mais incluídos em suas builds iOS, reduzindo tanto o tempo de construção quanto o tamanho do aplicativo.

Nenhuma quebra está esperada para aplicações já na Nova Arquitetura — o código da camada Interop necessária para compatibilidade permanece no lugar.

Reativar códigos da Arquitetura Legada em iOS

  • Caso precise reativar os códigos da Arquitetura Legada nas builds iOS, você precisará construir a partir da fonte. Instale as dependências do CocoaPods com as seguintes flags:
  • RCT_USE_PREBUILT_RNCORE=0 RCT_REMOVE_LEGACY_ARCH=0 bundle exec pod install

Android

  • Códigos de classes da Arquitetura Legada removidos As seguintes classes foram removidas nesta versão:
  • com.facebook.react.LazyReactPackage
    com.facebook.react.bridge.CxxModuleWrapper
    com.facebook.react.bridge.CxxModuleWrapperBase
    com.facebook.react.bridge.CallbackImpl
    com.facebook.react.bridge.NotThreadSafeBridgeIdleDebugListener
    com.facebook.react.bridge.OnBatchCompleteListener
    com.facebook.react.bridge.ReactCxxErrorHandler
    com.facebook.react.bridge.ReactInstanceManagerInspectorTarget
    com.facebook.react.modules.debug.DidJSUpdateUiDuringFrameDetector
    com.facebook.react.devsupport.BridgeDevSupportManager
    com.facebook.react.uimanager.NativeKind
    com.facebook.react.uimanager.debug.NotThreadSafeViewHierarchyUpdateDebugListener
    com.facebook.react.uimanager.layoutanimation.LayoutAnimationController
    com.facebook.react.uimanager.layoutanimation.LayoutAnimationListener

Node.js 22 Mínimo

O React Native 0.84 requer Node.js v22.11 ou posterior. Esta atualização melhora a disponibilidade de recursos modernos do JavaScript em toda a ecossistema de ferramentas React Native.

Garanta que você atualize sua versão do Node.js antes de fazer o upgrade. Recomendamos usar um gerenciador de versões como nvm ou fnm.

Outras Mudanças

  • React 19.2.3: Esta versão sincroniza o React 19.2.3 com o React Native, incluindo os últimos fixes e melhorias da equipe do React.
  • ESLint v9 Flat Config: A configuração ESLint do React Native agora suporta ESLint v9 Flat Config, tornando mais fácil adotar as últimas ferramentas de ESLint no seu projeto.

Suporte a Plataforma

  • Formatos de imagem: O React Native 0.84 inclui suporte para formatos adicionais de imagens (HEIC e HEIF), tornando mais fácil trabalhar com saídas modernas de câmera e bibliotecas de imagens.
  • PlatformColor: Testes aprimorados e suporte para PlatformColor em interpolações animadas e faixas de saída.
  • Eventos do teclado no Android: Adicionado suporte para eventos onKeyDown/onKeyUp no Android, permitindo a manipulação de eventos de teclado para teclados físicos e controladores remotos.

Acessibilidade

  • Componentes de texto com onPress ou onLongPress: Agora recebem automaticamente a propriedade accessibilityRole="link" para suporte de acessibilidade melhorado, garantindo que leitores de tela anunciem corretamente elementos de texto interativos.
  • No Android, trabalho significativo foi feito para resolver problemas com o estado de acessibilidade em views recicladas — assegurando que os estados isClickable e OnClickListener sejam adequadamente reinicializados quando as views são recicladas, prevenindo leitores de tela de anunciar estados incorretos.

Melhorias na API URL

Adicionamos propriedades padrão ausentes para URL (hash, host, pathname, etc.) e métodos para URLSearchParams (get, set, delete, etc.), trazendo a implementação de URL do React Native mais próxima das especificações da web.

Fonte original

Conteúdo traduzido e adaptado pela redação do Notícias Mobile. Confira também a matéria na fonte original.

Leia a matéria completa