# Nova Arquitetura do React Native em 2026: Hermes V1, Modo Bridgeless e Perguntas de Entrevista
> A Nova Arquitetura do React Native é agora o padrão em 2026 com Hermes V1, Modo Bridgeless, TurboModules e Fabric. Análise aprofundada dos ganhos de performance, padrões de migração e perguntas essenciais de entrevista.
- Published: 2026-05-09
- Updated: 2026-05-09
- Author: SharpSkill
- Tags: react-native, hermes, new-architecture, bridgeless, turbomodules, fabric, mobile-development, deep-dive
- Reading time: 10 min
---
A Nova Arquitetura do React Native atingiu maturidade plena em 2026. Com o React Native 0.84 entregando o [Hermes V1](https://reactnative.dev/blog/2026/02/11/react-native-0.84) como motor padrão e a versão 0.85 removendo todo vestígio da bridge legada, o framework agora entrega performance quase nativa sem exigir que os desenvolvedores se preocupem com flags de arquitetura ou camadas de compatibilidade.
> **Ponto Chave**
>
> A Nova Arquitetura (Fabric + TurboModules + Modo Bridgeless + Hermes V1) não é mais opcional. Todo projeto React Native 0.84+ a utiliza por padrão. O código relacionado à bridge legada deve ser removido das bases de código existentes.
## O que mudou na pilha arquitetural do React Native
A arquitetura antiga do React Native dependia de uma bridge JSON assíncrona single-thread para transmitir mensagens entre JavaScript e o código nativo. Cada interação passava por esse gargalo: eventos de toque, cálculos de layout, chamadas de módulos. A Nova Arquitetura substitui cada camada desse pipeline por uma alternativa direta e síncrona.
| Camada | Arquitetura Antiga | Nova Arquitetura |
|--------|-------------------|------------------|
| Motor JS | JavaScriptCore | Hermes V1 (bytecode + JIT) |
| Renderização | Paper (bridge async) | Fabric (síncrono, C++ compartilhado) |
| Módulos Nativos | Bridge Modules (serialização JSON) | TurboModules (JSI, chamadas diretas) |
| Comunicação | Bridge JSON Async | JSI (JavaScript Interface) |
| Inicialização | Init bridge + registro de módulos | Bridgeless (lazy, sob demanda) |
JSI (JavaScript Interface) é a base de tudo. Em vez de serializar cada chamada para JSON e passá-la por uma fila, o JSI expõe objetos host C++ diretamente ao JavaScript. Uma chamada TurboModule que antes exigia codificação JSON, enfileiramento na bridge e decodificação JSON agora se executa como uma invocação direta de função.
## Hermes V1: o motor JavaScript padrão
O Hermes V1 tornou-se o motor padrão no [React Native 0.84](https://reactnative.dev/blog/2026/02/11/react-native-0.84), lançado em fevereiro de 2026. Trata-se de uma reescrita completa do compilador e da VM, não apenas uma atualização incremental das versões anteriores do Hermes.
As melhorias abrangem quatro áreas: um compilador reescrito com novo formato de bytecode, um compilador JIT aprimorado, o coletor de lixo concorrente Hades e melhor suporte aos padrões JavaScript modernos utilizados pelo React 19.
```javascript
// HermesV1Benchmarks.js
// Comparing startup and runtime metrics
// Hermes V1 bytecode is pre-compiled at build time
// No parse-compile step at runtime = faster cold starts
// Cold start comparison (production build, Pixel 8):
// Hermes V1: ~850ms TTI
// JSC: ~1200ms TTI (29% slower)
// Memory footprint (complex app, 50+ screens):
// Hermes V1: ~45MB baseline
// JSC: ~72MB baseline (38% more)
// GC pause comparison (FlatList, 500+ complex cells):
// Hermes V1 (Hades): <12ms max pause
// Old Hermes: ~45ms occasional pauses
// Result: zero dropped frames in scroll benchmarks
```
O Hades, o coletor de lixo concorrente, merece atenção especial. As versões anteriores do Hermes utilizavam um GC stop-the-world que ocasionalmente causava engasgos visíveis durante a rolagem de listas. O Hades executa a coleta de forma concorrente em uma thread de background, mantendo as pausas do GC abaixo de 12 ms. Para aplicações que renderizam listas longas com células complexas, isso elimina a última fonte de queda de frames no lado do JavaScript.
> **Suporte a WebAssembly**
>
> O Hermes V1 também introduz suporte a WebAssembly no React Native 0.84. Código de alta performance escrito em Rust, C ou C++ pode ser compilado para WASM e executado dentro da aplicação, possibilitando inferência de IA on-device, computação numérica pesada ou reutilização de bibliotecas nativas existentes sem escrever bindings específicos de plataforma.
## Fabric: renderização e layout síncronos
O Fabric substitui o renderizador Paper por um núcleo C++ compartilhado entre iOS e Android. A diferença fundamental: os cálculos de layout acontecem de forma síncrona na thread JavaScript em vez de assincronamente através da bridge.
Esse modelo síncrono habilita duas capacidades que eram impossíveis com o Paper:
1. **Suporte a renderização concorrente**: O Fabric se integra com os recursos concorrentes do React 19. Transitions, boundaries de Suspense e `useTransition` funcionam corretamente porque o Fabric pode interromper e retomar a renderização.
2. **Layout C++ direto**: O Yoga (motor de layout) executa no mesmo espaço de memória que o runtime JavaScript. Sem overhead de serialização para cálculos de flexbox.
```typescript
// FabricConcurrentExample.tsx
// Concurrent features work correctly with Fabric
import React, { useState, useTransition } from 'react'
import { View, Text, FlatList, TextInput, StyleSheet } from 'react-native'
type Item = { id: string; name: string; category: string }
function SearchableList({ items }: { items: Item[] }) {
const [query, setQuery] = useState('')
const [filtered, setFiltered] = useState(items)
const [isPending, startTransition] = useTransition()
const handleSearch = (text: string) => {
setQuery(text) // Urgent: update input immediately
startTransition(() => {
// Non-urgent: filter can be deferred
const result = items.filter(item =>
item.name.toLowerCase().includes(text.toLowerCase())
)
setFiltered(result)
})
}
return (
{isPending && Filtering...}
item.id}
renderItem={({ item }) => (
{item.name}
)}
/>
)
}
const styles = StyleSheet.create({
container: { flex: 1, padding: 16 },
input: { borderWidth: 1, borderColor: '#ccc', padding: 12, marginBottom: 8 },
pending: { color: '#888', marginBottom: 4 },
row: { padding: 12, borderBottomWidth: 1, borderBottomColor: '#eee' },
})
```
O hook `useTransition` neste exemplo demonstra por que o Fabric é essencial. Com o Paper, `startTransition` não tinha efeito porque o renderizador não podia interromper uma renderização em andamento. A integração do Fabric com o modo concorrente do React 19 permite que atualizações diferidas funcionem conforme projetado, mantendo o campo de texto responsivo enquanto filtra milhares de itens em segundo plano.
## TurboModules e JSI: eliminação do overhead de serialização
Os TurboModules substituem o antigo sistema NativeModules. A diferença de performance vem da eliminação total da serialização JSON. Uma chamada via bridge seguia este caminho: objeto JS -> JSON.stringify -> fila da bridge -> JSON.parse -> chamada nativa -> JSON.stringify -> fila da bridge -> JSON.parse -> callback JS. Uma chamada TurboModule é uma invocação direta de função C++ através do JSI.
```typescript
// NativeDeviceInfo.ts
// TurboModule spec using the Codegen
import type { TurboModule } from 'react-native'
import { TurboModuleRegistry } from 'react-native'
export interface Spec extends TurboModule {
// Synchronous: returns immediately, no bridge round-trip
getDeviceModel(): string
getOSVersion(): string
getBatteryLevel(): number
// Asynchronous: for operations that genuinely need async
getStorageUsage(): Promise<{ used: number; total: number }>
}
export default TurboModuleRegistry.getEnforcing('DeviceInfo')
```
```kotlin
// DeviceInfoModule.kt
// Native Android implementation of the TurboModule
package com.app.modules
import com.facebook.react.bridge.ReactApplicationContext
import com.facebook.react.bridge.ReadableMap
import com.facebook.react.bridge.WritableNativeMap
import com.facebook.react.module.annotations.ReactModule
@ReactModule(name = "DeviceInfo")
class DeviceInfoModule(reactContext: ReactApplicationContext) :
NativeDeviceInfoSpec(reactContext) {
// Synchronous via JSI - no bridge, no JSON, no queue
override fun getDeviceModel(): String {
return android.os.Build.MODEL
}
override fun getOSVersion(): String {
return "Android ${android.os.Build.VERSION.RELEASE}"
}
override fun getBatteryLevel(): Double {
val manager = reactApplicationContext
.getSystemService(android.content.Context.BATTERY_SERVICE)
as android.os.BatteryManager
return manager.getIntProperty(
android.os.BatteryManager.BATTERY_PROPERTY_CAPACITY
).toDouble()
}
override fun getStorageUsage(
promise: com.facebook.react.bridge.Promise
) {
val stat = android.os.StatFs(
android.os.Environment.getDataDirectory().path
)
val map = WritableNativeMap().apply {
putDouble("used", (stat.totalBytes - stat.availableBytes).toDouble())
putDouble("total", stat.totalBytes.toDouble())
}
promise.resolve(map)
}
override fun getName(): String = "DeviceInfo"
}
```
O detalhe fundamental: `getDeviceModel()`, `getOSVersion()` e `getBatteryLevel()` são síncronos. A thread JavaScript chama diretamente o código nativo e recebe o valor de retorno no mesmo tick. Sem promises, sem callbacks, sem ida e volta pela bridge. Isso só é possível através do JSI.
## Modo Bridgeless: o que ele remove e por que importa
O Modo Bridgeless, introduzido no React Native 0.73 e tornado padrão na 0.74, completa a migração arquitetural ao eliminar inteiramente a inicialização da bridge. Mesmo após a adoção do Fabric e dos TurboModules, a bridge antiga ainda inicializava no startup para gerenciar emissores de eventos globais, timers e tratamento de erros. O Modo Bridgeless migra esses sistemas remanescentes para implementações baseadas em JSI.
O impacto prático:
- **Startup mais rápido**: sem overhead de inicialização da bridge. O runtime inicializa apenas o que a aplicação realmente utiliza através de carregamento preguiçoso.
- **Menor consumo de memória**: sem estruturas de dados da bridge alocadas no startup.
- **Tratamento de erros mais limpo**: error boundaries e handlers de erro globais funcionam pela nova arquitetura sem fallbacks da bridge.
O React Native 0.82 desabilitou permanentemente a bridge antiga. O React Native 0.85, lançado em abril de 2026, removeu todo o código restante relacionado à bridge da base de código. Não existe caminho de retorno.
## Migração em produção: benchmarks de performance reais
As migrações em produção da arquitetura antiga para a Nova Arquitetura mostram melhorias consistentes nas métricas chave:
| Métrica | Arquitetura Antiga | Nova Arquitetura | Melhoria |
|---------|-------------------|------------------|----------|
| Cold start (TTI) | 1,4s | 0,8s | 43% mais rápido |
| Transição de tela | 180ms | 110ms | 39% mais rápido |
| Memória base | 89MB | 66MB | 26% menor |
| Chamada JS-para-nativo | ~5ms (async) | ~0,1ms (sync) | 40x mais rápido |
| Pausa GC máxima | 45ms | 12ms | 73% mais curta |
| Scroll FlatList (1000 itens) | Engasgos ocasionais | 60fps fluido | Sem frames perdidos |
A melhoria mais significativa para a qualidade percebida pelo usuário é a redução das pausas do GC. O Hades mantém as pausas de coleta abaixo do orçamento de um frame (16,6 ms a 60 fps), eliminando a fonte mais comum de engasgos visíveis em aplicações React Native complexas.
## Compatibilidade do ecossistema em 2026
O ecossistema convergiu completamente para a Nova Arquitetura. O [Expo SDK 55](https://docs.expo.dev/guides/new-architecture/) e versões posteriores funcionam exclusivamente com a Nova Arquitetura, sem opção para desativá-la. Pontos chave de compatibilidade:
- **React Navigation 7.2+**: suporte completo ao Fabric com telas native-stack
- **Reanimated 3.5+**: backend de animação compartilhado com React Native 0.85
- **Gesture Handler 2.16+**: reconhecimento de gestos direto baseado em JSI
- **Vision Camera 4.0+**: processamento de frames via JSI
- **Detox**: testes E2E compatíveis com a Nova Arquitetura
Para equipes que usam Expo, `npx create-expo-app` gera um projeto com a Nova Arquitetura habilitada por padrão. Nenhuma configuração necessária.
> **Requisito de Migração**
>
> Aplicações ainda no React Native 0.75 ou anterior precisam migrar. A bridge antiga está permanentemente removida na 0.82+. Bibliotecas de terceiros que dependem da bridge (aquelas que usam `NativeModules` diretamente sem especificações TurboModule) precisam de atualizações. O [React Native Upgrade Helper](https://react-native-community.github.io/upgrade-helper/) e o [guia de migração oficial](https://reactnative.dev/architecture/landing-page) cobrem o processo passo a passo.
## Perguntas de entrevista: Nova Arquitetura do React Native
Estas perguntas aparecem frequentemente em entrevistas de React Native de nível sênior em 2026. Cada resposta cobre a profundidade esperada em nível staff/sênior.
**P1: Explicar a diferença entre a Bridge antiga e o JSI. Por que o JSI permite chamadas nativas síncronas?**
A bridge serializava cada mensagem JS-para-nativo como JSON, a colocava em uma fila assíncrona e a desserializava no lado nativo. O JSI (JavaScript Interface) expõe objetos host C++ diretamente na VM JavaScript. Funções nativas registradas através do JSI aparecem como funções JavaScript comuns que executam código nativo inline, sem serialização ou enfileiramento. Chamadas síncronas são possíveis porque o JSI opera no mesmo contexto de thread sem uma fila de mensagens intermediária.
**P2: Qual problema o renderizador Fabric resolve que o Paper não conseguia?**
O Paper renderizava assincronamente pela bridge, tornando impossível o suporte aos recursos concorrentes do React. Uma chamada a `startTransition` não tinha efeito porque o Paper não podia interromper uma árvore de renderização em progresso. O Fabric implementa a renderização em código C++ compartilhado, se integra diretamente com o reconciliador do React 19 e suporta renderização concorrente, Suspense e transitions. Os cálculos de layout via Yoga também ocorrem sincronamente no mesmo espaço de memória, eliminando a latência da bridge.
**P3: Por que o Hermes é necessário para a Nova Arquitetura? Outro motor poderia ser usado?**
A Nova Arquitetura depende do JSI, que requer que o motor JavaScript suporte o registro de objetos host C++. O Hermes foi projetado desde o início com integração JSI. O JavaScriptCore poderia teoricamente suportar JSI, mas a implementação oficial e os testes são construídos em torno do Hermes. O Hermes V1 fornece adicionalmente pré-compilação para bytecode (eliminando parsing em runtime), o GC concorrente Hades (pausas abaixo de 12 ms) e suporte a WebAssembly, nenhum dos quais está disponível pela integração JSC do React Native.
**P4: Como os TurboModules diferem da antiga API NativeModules na perspectiva do desenvolvedor?**
Os TurboModules requerem uma especificação Codegen (uma interface TypeScript que estende `TurboModule`) que gera bindings nativos tipados em tempo de build. O antigo NativeModules usava reflexão em runtime sem verificação de tipos. Os TurboModules suportam valores de retorno síncronos (não apenas promises), inicialização lazy (módulos carregam apenas no primeiro acesso) e chamadas JSI diretas sem serialização JSON. O desenvolvedor escreve uma especificação TypeScript, executa o Codegen e implementa a interface nativa gerada.
**P5: Descrever o Modo Bridgeless e o que ele remove em comparação com usar apenas Fabric e TurboModules.**
Mesmo após a adoção do Fabric e dos TurboModules, a bridge antiga ainda inicializava no startup para gerenciar emissores de eventos globais, timers, tratamento de erros e outra infraestrutura de runtime. O Modo Bridgeless substitui esses sistemas residuais dependentes da bridge por implementações baseadas em JSI. Ele elimina o overhead de inicialização da bridge, reduz o consumo de memória base e garante que todo o runtime opere via JSI. Desde o React Native 0.85, o Modo Bridgeless é o único modo operacional.
Praticar essas perguntas com exemplos de código funcionais fortalece tanto a compreensão conceitual quanto a memória prática. O [módulo Nova Arquitetura do React Native](/technologies/react-native/interview-questions/rn-new-architecture) do SharpSkill cobre mais de 40 perguntas adicionais sobre Fabric, TurboModules, internos do Hermes e estratégias de migração.
## Conclusão
- O Hermes V1 entrega cold starts 29% mais rápidos, 38% menos uso de memória e pausas de GC abaixo de 12 ms desde o React Native 0.84+
- O Fabric habilita os recursos concorrentes do React 19 (transitions, Suspense) que o Paper nunca pôde suportar
- Os TurboModules eliminam a serialização JSON, tornando as chamadas JS-para-nativo 40x mais rápidas através de invocação direta via JSI
- O Modo Bridgeless remove as últimas dependências da bridge; o React Native 0.85 não contém nenhum código bridge restante
- O ecossistema é totalmente compatível: Expo SDK 55+, React Navigation 7.2+, Reanimated 3.5+ e todas as bibliotecas principais suportam exclusivamente a Nova Arquitetura
- A preparação para entrevistas deve focar na mecânica do JSI, nas diferenças entre Fabric e Paper, no fluxo de trabalho Codegen dos TurboModules e nas mudanças de runtime do Modo Bridgeless
---
Source: SharpSkill (https://sharpskill.dev), tech interview preparation for your real stack.
HTML version of this page: https://sharpskill.dev/pt/blog/react-native/react-native-new-architecture-hermes-v1-bridgeless