Um guia para avaliar, instalar e verificar bibliotecas nativas da comunidade em um aplicativo Expo SDK 57 CNG - com verificações explícitas para sobrevivência ao prebuild e compatibilidade com a Nova Arquitetura no React Native 0.86.
Cartão de receita de referência rápida - pronto para copiar e colar.
# 1. Avalie ANTES de instalar (veja a lista de verificação abaixo)# 2. Instale com o resolvedor do Expo - não npm puronpx expo install react-native-maps# 3. Registre o plugin de configuração em app.config.ts (se a biblioteca fornecer um)# 4. Regenerar projetos nativos e verificarnpx expo prebuild --cleannpx expo-doctor# 5. Construir um cliente de desenvolvimento - código nativo de terceiros NÃO está no Expo Gonpx expo install expo-dev-clientnpx expo run:ios# ou: eas build --profile development --platform all
// app.config.ts - registro típico de plugin de terceirosimport type { ExpoConfig } from "expo/config";export default ({ config }: { config: ExpoConfig }): ExpoConfig => ({ ...config, plugins: [ [ "react-native-maps", { iosGoogleMapsApiKey: process.env.GOOGLE_MAPS_IOS_KEY, androidGoogleMapsApiKey: process.env.GOOGLE_MAPS_ANDROID_KEY, }, ], ],});
Quando usar isto:
Adotando react-native-maps, react-native-ble-plx, react-native-purchases ou qualquer pacote npm com pastas ios/ / android/.
Auditando se uma biblioteca sobrevive ao npx expo prebuild --clean em um fluxo de trabalho CNG.
Confirmando o suporte à Nova Arquitetura RN 0.86 antes de mesclar um PR de dependência.
Substituindo um wrapper nativo obsoleto por um equivalente do Expo SDK.
# Regenerar diretórios nativos e executar no simuladornpx expo prebuildnpx expo run:ios# Iniciar Metro para o cliente de desenvolvimento (não Expo Go)npx expo start --dev-client
O que isso demonstra:
npx expo install resolve uma versão compatível com os binários nativos do SDK 57.
Plugin de configuração injeta chaves de API em Info.plist e AndroidManifest.xml durante o prebuild.
expo prebuild configura o autolinking - sem edições manuais de Podfile em aplicativos CNG.
Build de desenvolvimento é obrigatório - react-native-maps não está incluído no Expo Go.
React Native 0.86 usa por padrão a Nova Arquitetura (Fabric + TurboModules). Bibliotecas de terceiros se enquadram em três categorias:
Categoria
Sintoma
Mitigação
Totalmente compatível
Compila e executa no dispositivo
Enviar
Parcial (fallback de bridge)
Compila, mas as APIs JSI síncronas falham
Teste cada API que você chama; abra issue upstream
Incompatível
Erro de compilação ou crash instantâneo
Não adote; encontre alternativa ou fork
# Confirmar Nova Arquitetura no projeto geradogrep -r "newArchEnabled" android/ ios/ 2>/dev/null || true# Forçar verificação com um build de release em dispositivo (não apenas debug Metro)npx expo run:ios --configuration Release
Bibliotecas que usam apenas a antiga bridge NativeModules ainda podem ser executadas através da camada de interoperabilidade, mas caminhos sensíveis ao desempenho (mapas, vídeo, BLE) devem ser validados em hardware físico - simuladores ocultam bugs de threading.
Nunca documente "adicione esta linha a AndroidManifest.xml" como um passo permanente - codifique-o em um plugin de configuração para que a regeneração permaneça limpa. Veja Noções Básicas de Prebuild e Plugins de Configuração em CNG.
# Listar módulos que serão compilados no binárionpx expo-modules-autolinking resolve --platform iosnpx expo-modules-autolinking resolve --platform android# Autolinking da comunidade React Native (pacotes não-Expo)npx react-native config
Se um pacote aparecer em package.json, mas não na saída de resolução, a build nativa nunca o compilou - requireNativeModule lançará um erro em tempo de execução.
Testar no Expo Go após npm install - código nativo de terceiros está ausente do binário Go. Correção:npx expo start --dev-client com um build personalizado.
Pular prebuild após alteração de configuração do plugin - entradas desatualizadas em Info.plist. Correção:npx expo prebuild --clean localmente antes de mesclar.
Assumir que o TypeScript verde no CI significa que o nativo funciona - Jest não executa código nativo. Correção: QA em dispositivo ou fluxo Maestro em um build de desenvolvimento.
Fixar @latest em pacotes nativos - quebra o alinhamento da ABI do SDK 57. Correção:npx expo install ou versão explícita com ADR.
Misturar múltiplos SDKs de mapas/BLE/pagamentos em um único PR - pesadelo de bisect quando o prebuild falha. Correção: Uma dependência nativa por PR, por Regras de Módulos Nativos.
Posso usar qualquer pacote react-native-* com Expo?
Somente se ele suportar prebuild/autolinking, tiver um plugin de configuração (ou você escrever um) e compilar na Nova Arquitetura RN 0.86. npx expo-doctor captura falhas comuns precocemente.
Devo commitar ios/ e android/ após adicionar uma biblioteca?
A política da equipe varia. Equipes CNG frequentemente ignoram diretórios nativos e regeneram em CI. Se você commitar, ainda assim expresse as alterações através de plugins - não por desvio manual. Veja Melhores práticas CNG.
Como testar a compatibilidade da Nova Arquitetura rapidamente?
npx expo run:ios --configuration Release em um dispositivo físico com o fluxo de usuário principal da biblioteca. O Metro de depuração pode mascarar problemas de threading nativo.
A biblioteca não tem plugin de configuração - e agora?
Escreva um plugin local em plugins/ ou escolha um fork mantido. Edições manuais pós-prebuild são débito técnico em aplicativos CNG.
expo install vs npm install?
npx expo install lê a tabela de compatibilidade do Expo para o SDK 57. npm install pode resolver JS que não corresponde aos binários nativos em sua build.