Skill de Módulo Nativo
Revisões de plugins de configuração e scaffolding de TurboModule - uma Skill de Agente para adicionar com segurança área nativa no Expo SDK 57 / React Native 0.86 com CNG e a Nova Arquitetura.
Busque em todas as páginas da documentação
Revisões de plugins de configuração e scaffolding de TurboModule - uma Skill de Agente para adicionar com segurança área nativa no Expo SDK 57 / React Native 0.86 com CNG e a Nova Arquitetura.
Revisa ou faz scaffolding de:
app.config.ts + plugins/with-*.ts)create-expo-moduleexpo-doctorplugins/with-custom-feature.ts localprebuild --clean?"ios/ ou android/ manualmente| Entrada | Por quê |
|---|---|
app.config.ts | Array e ordem atuais de plugins |
| Requisito nativo | Permissões, entitlements, flags Gradle |
| Nome do pacote | Módulo npm ou local ./modules/foo |
| Modo de arquitetura | Padrão da Nova Arquitetura no RN 0.86 |
| Política CNG | Diretórios nativos gerados vs verificados |
package.json / autolinkingnpx expo prebuild --clean + git diff ios/ android/npx expo-doctorInfo.plist ou AndroidManifest.xml.prebuild --clean duas vezes resulta em um diff git vazio.create-expo-module - TurboModules para bibliotecas primeiro do RN (Writing a TurboModule).eas build - a skill rejeita planos de lançamento somente OTA.Cartão de receita de referência rápida - pronto para copiar e colar.
// app.config.ts
import type { ExpoConfig } from "expo/config";
export default ({ config }: { config: ExpoConfig }): ExpoConfig => ({
...config,
plugins: [
[
"expo-build-properties",
{
ios: { deploymentTarget: "15.1" },
android: { minSdkVersion: 24, compileSdkVersion: 35 },
},
],
"./plugins/with-analytics-sdk",
],
});// plugins/with-analytics-sdk.ts
import {
ConfigPlugin,
withInfoPlist,
withAndroidManifest,
createRunOncePlugin,
} from "expo/config-plugins";
const withAnalyticsSdk: ConfigPlugin = (config) => {
config = withInfoPlist(config, (cfg) => {
cfg.modResults.MyAnalyticsEnabled = true;
return cfg;
});
config = withAndroidManifest(config, (cfg) => {
// adicionar entradas de manifesto - manter idempotente
return cfg;
});
return config;
};
export default createRunOncePlugin(
withAnalyticsSdk,
"with-analytics-sdk",
"1.0.0"
);npx expo prebuild --clean
git diff ios/ android/
npx expo-doctor
eas build --profile preview --platform all # nunca somente OTA para esta alteraçãoQuando usar esta skill:
AndroidManifest.xml" - a skill converte para pluginios/Podfile - a skill redireciona para o caminho seguro para CNGLista de verificação de revisão que a skill emite:
## Revisão do plugin de configuração
- [ ] Usa createRunOncePlugin com nome + versão
- [ ] Sem caminhos absolutos; lê das props de configuração
- [ ] Alterações em Info.plist / manifesto são seguras para mesclagem
- [ ] Ordem do plugin documentada em relação a expo-build-properties
- [ ] prebuild --clean → revisão de diff → segundo prebuild → diff vazio
- [ ] expo-doctor passa
- [ ] eas build planejado (OTA insuficiente)Veja Patching Native Projects quando o upstream não possui um plugin.
npx create-expo-module@latest expo-secure-counter
# Conectar no app:
npx expo install ./modules/expo-secure-counter// modules/my-turbo-lib/src/NativeMyTurboLib.ts
import type { TurboModule } from "react-native";
import { TurboModuleRegistry } from "react-native";
export interface Spec extends TurboModule {
getConstants(): { value: string };
process(input: string): string;
}
export default TurboModuleRegistry.getEnforcing<Spec>("MyTurboLib");// trecho de configuração codegen de package.json
{
"codegenConfig": {
"name": "MyTurboLibSpec",
"type": "modules",
"jsSrcsDir": "src"
}
}Use a skill de Módulo Nativo. SDK 57, CNG (sem ios/android verificados).
O fornecedor requer NSCameraUsageDescription + permissão CAMERA do Android para o SDK de código de barras.
Produza o esqueleto do plugin de configuração e a entrada do array de plugins app.config.ts.
Inclua a verificação de prebuild --clean e a nota de eas build.Use a skill de Módulo Nativo - modo de revisão de PR.
Anexado: plugins/with-payments.ts
Verifique a idempotência, a ordenação dos plugins com expo-build-properties e as barreiras de proteção.
Não reescreva o código do fornecedor - apenas a lista de verificação.Use a skill de Módulo Nativo.
Preciso de uma ponte nativa bidirecional para atualização de token do aplicativo host.
Recomende Expo Module vs TurboModule com RN 0.86 NA padrão. Faça o scaffolding apenas do caminho escolhido.| Critério | Expo Module | TurboModule |
|---|---|---|
| Proprietário | Equipe do aplicativo, aplicativo único | Biblioteca RN, multi-consumidor |
| Configuração | create-expo-module | Codegen + codegenConfig |
| Plugin de configuração | Frequentemente incluído | Geralmente react-native.config.js |
| Ajuste CNG do Expo | Excelente | Bom com prebuild |
| Padrão da skill | Sim para pontes de aplicativo | Ao publicar pacote RN |
Apenas como hotfix de emergência com ticket de plugin de acompanhamento. O CNG prebuild --clean apagará as edições manuais - a skill deve sinalizar a dívida.
Plugins de configuração integrados geralmente são suficientes. Invoque a skill ao combinar vários plugins de permissão ou flags Gradle personalizadas.
Nunca para usuários em binários antigos sem o módulo. A saída da skill sempre inclui eas build e revisão de runtimeVersion.
Versões da Stack: Esta página foi escrita para React 19.2.3, React Native 0.86.0 e Expo SDK 57 (
expo~57.0.4).
Revisado por Chris St. John·Última atualização: 16 de jul. de 2026