Mudanças nativas compostas que sobrevivem ao expo prebuild --clean (o padrão do SDK 57). Plugins de configuração codificam permissões, entitlements, dependências Gradle e entradas de manifesto em TypeScript versionado - não em cliques manuais no Xcode.
Uma pilha de plugins compostos para um aplicativo que precisa de acesso à câmera, um esquema de URL personalizado e um target de implantação compartilhado - configuração típica de produção do SDK 57.
# Valida a saída do plugin sem compilação completanpx expo config --type introspect# Gera e verifica a idempotênciarm -rf ios androidnpx expo prebuild --no-installnpx expo prebuild --no-install
O que isso demonstra:
Plugin de biblioteca primeiro - expo-camera gerencia as strings de permissão da câmera
Plugin personalizado parametrizado - withAppLinks aceita domain e deduplica entitlements
Build properties por último - expo-build-properties ajusta as versões da toolchain após os plugins de recursos
Idempotência - o domínio associado é anexado apenas se estiver ausente
Avaliação: O Expo carrega app.config.ts e resolve o array plugins (strings, tuplas ou funções).
Pipeline de mods: Cada plugin recebe ExpoConfig e retorna a configuração modificada através de helpers with* (withInfoPlist, withGradleProperties, etc.).
Merge de template: Arquivos de template do SDK 57 são copiados, e então os mods são aplicados na ordem dos plugins.
Regeneração limpa: O prebuild padrão exclui as pastas primeiro - apenas as alterações codificadas nos plugins persistem.
Editar ios/ após o prebuild - O padrão clean do SDK 57 apaga as alterações. Correção: Codifique em um plugin.
Ordem incorreta de plugins - O plugin posterior sobrescreve a chave Info.plist anterior. Correção: Documente a ordem; use introspect.
Anexação não-idempotente - O segundo prebuild duplica entradas do manifesto. Correção: Verificação de existência antes de adicionar.
npm install para pacotes de plugin - Desvio de versão em relação aos binários nativos do SDK 57. Correção:npx expo install.
Testando apenas no Expo Go - Plugins que afetam entitlements precisam de reconstrução do cliente de desenvolvimento. Correção:expo run:ios após a aplicação dos plugins.
Importando do caminho errado - Use expo/config-plugins em plugins de app; bibliotecas usam @expo/config-plugins conforme a documentação do pacote.
No tempo de prebuild na máquina que executa expo prebuild ou EAS Build - não a cada recarga do Metro. Reconstrua os binários nativos após alterações de plugin que afetam entitlements ou dependências nativas.
Posso usar plugins de configuração sem commitar ios/?
Sim - esse é o padrão CNG. Plugins são a fonte da verdade; pastas nativas são saídas efêmeras.
Como testo um plugin sem uma compilação completa?
npx expo config --type introspect mostra os resultados dos mods. Para validação final, execute o prebuild duas vezes e confirme zero diff.
Qual a diferença entre os plugins de app.config e a página de config-plugins de native-modules?