Emerson Lima

Emerson Lima

Software Engineer

Expo Managed, Prebuild e Bare: quando usar cada um

A diferença prática entre managed, prebuild e bare no Expo, e quando cada fluxo deixa de valer a pena.

O Expo resolve muita coisa no começo de um app React Native: build, updates, permissões e uma boa parte das APIs nativas. O problema aparece quando o projeto pede um SDK que o managed não cobre, ou quando o time precisa mexer em código nativo de verdade.

Este texto separa os três caminhos mais comuns.

Managed

No fluxo managed você quase não abre o Xcode ou o Android Studio. O EAS Build gera o binário, e o app.json / app.config.ts descreve o app.

Funciona bem quando:

  • O app usa só módulos do Expo ou bibliotecas com config plugin
  • Você quer testar no Expo Go no início
  • O time é pequeno e não quer manter pasta ios/ e android/ no git

O limite aparece rápido: SDK sem plugin, permissão customizada, ou um cliente nativo de marketing (como o Klaviyo) costuma exigir código nativo.

Prebuild (o meio-termo)

npx expo prebuild gera as pastas nativas a partir da config. Você continua no ecossistema Expo, mas passa a ter projeto iOS e Android reais.

Use prebuild quando:

  • Precisa de um módulo nativo pontual
  • Quer plugins e ainda assim commitar (ou gerar) o código nativo
  • O app já não cabe no Expo Go

O cuidado: se você editar ios/ e android/ na mão e rodar prebuild de novo, as mudanças podem ser sobrescritas. Prefira config plugins sempre que der.

Bare

Bare é um app React Native clássico, com ou sem pedaços do Expo. Você instala o que quiser no Podfile e no Gradle.

Faz sentido quando:

  • Há bastante código nativo próprio
  • O app já nasceu com CLI e não vale migrar
  • Ferramentas de push, analytics ou pagamentos exigem setup nativo pesado

Como eu escolho

  1. Começo managed se o app é simples.
  2. Subo para prebuild no primeiro módulo nativo.
  3. Só vou para bare se o prebuild vira briga toda semana.

Se o time já usa Expo e só precisa de um SDK, prebuild costuma ser o menor custo. Bare é o destino de apps com camada nativa grande, não o ponto de partida.