Skill de Módulo Nativo
Revisiones de andamiaje de plugins de configuración y TurboModule - un Agent Skill para agregar de forma segura superficie nativa en Expo SDK 57 / React Native 0.86 con CNG y la New Architecture.
Busca en todas las páginas de la documentación
Revisiones de andamiaje de plugins de configuración y TurboModule - un Agent Skill para agregar de forma segura superficie nativa en Expo SDK 57 / React Native 0.86 con CNG y la New Architecture.
Revisa o genera andamiaje para:
app.config.ts + plugins/with-*.ts)create-expo-moduleexpo-doctorplugins/with-custom-feature.tsprebuild --clean?ios/ o android/| Entrada | Por qué |
|---|---|
app.config.ts | Array actual de plugins y orden |
| Requisito nativo | Permisos, derechos, flags de Gradle |
| Nombre del paquete | Módulo npm o ./modules/foo local |
| Modo de arquitectura | New Architecture por defecto en RN 0.86 |
| Política de CNG | Directorios nativos generados vs verificados |
package.json / autolinkingnpx expo prebuild --clean + git diff ios/ android/npx expo-doctorInfo.plist o AndroidManifest.xml.prebuild --clean dos veces produce un diff vacío en git.create-expo-module - TurboModules para bibliotecas de primera mano de RN (Writing a TurboModule).eas build - el skill rechaza planes de lanzamiento solo OTA.Tarjeta de referencia rápida - lista para copiar y pegar.
// 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) => {
// agregar entradas de manifest - mantener 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 solo OTA para este cambioCuándo recurrir a este skill:
AndroidManifest.xml" - el skill convierte a pluginios/Podfile - el skill redirige a ruta segura para CNGLista de verificación que emite el skill:
## Revisión de plugin de configuración
- [ ] Usa createRunOncePlugin con nombre + versión
- [ ] Sin rutas absolutas; lee desde props de config
- [ ] Los cambios de Info.plist / manifest son seguros para fusionar
- [ ] Orden de plugin documentado relativo a expo-build-properties
- [ ] prebuild --clean - revisar diff - segundo prebuild - diff vacío
- [ ] expo-doctor pasa
- [ ] eas build planificado (OTA insuficiente)Ver Patching Native Projects cuando el upstream carece de un plugin.
npx create-expo-module@latest expo-secure-counter
# Conecta en la 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");// package.json fragmento de codegenConfig
{
"codegenConfig": {
"name": "MyTurboLibSpec",
"type": "modules",
"jsSrcsDir": "src"
}
}Usa el skill Native Module. SDK 57, CNG (sin ios/android verificados).
El proveedor requiere NSCameraUsageDescription + permiso de CAMERA de Android para SDK de código de barras.
Produce esqueleto de plugin y entrada del array plugins de app.config.ts.
Incluye verificación de prebuild --clean y nota de eas build.Usa el skill Native Module - modo revisión de PR.
Adjunto: plugins/with-payments.ts
Verifica idempotencia, ordenamiento de plugins con expo-build-properties y guardrails.
No reescribas código del proveedor - solo lista de verificación.Usa el skill Native Module.
Necesito bridge nativo bidireccional para actualización de token de app anfitriona.
Recomienda Expo Module vs TurboModule con NA por defecto de RN 0.86. Genera andamiaje solo de la ruta elegida.| Criterio | Expo Module | TurboModule |
|---|---|---|
| Propietario | Equipo de app, app única | Biblioteca de RN, múltiples consumidores |
| Configuración | create-expo-module | Codegen + codegenConfig |
| Plugin de configuración | A menudo incluido | Usualmente react-native.config.js |
| Compatibilidad CNG de Expo | Excelente | Buena con prebuild |
| Default del skill | Sí para bridges de app | Al publicar paquete de RN |
Solo como hotfix de emergencia con ticket de plugin de seguimiento. El prebuild --clean de CNG borrará ediciones manuales - el skill debe marcar la deuda técnica.
A menudo bastan plugins de configuración incorporados. Invoca el skill al combinar múltiples plugins de permiso o flags de Gradle personalizado.
Nunca para usuarios en binarios antiguos sin el módulo. La salida del skill siempre incluye eas build y revisión de runtimeVersion.
Versiones de stack: Esta página fue escrita para React 19.2.3, React Native 0.86.0 y Expo SDK 57 (
expo~57.0.4).
Revisado por Chris St. John·Última actualización: 16 jul 2026