Configuración en Tiempo de Compilación
Una única variable, APP_ENV (development | preview | production),
maneja un app.config.ts dinámico. Cada ambiente tiene su propio bundle
id, package name, scheme y host de deep-link — así un build de dev, uno de
test y el build de tienda pueden convivir en el mismo teléfono a la vez.
// app.config.ts
const APP_ENV = process.env.APP_ENV ?? "development";
function getDynamicAppConfig(env: string) {
const base = { name: "MyApp", scheme: "myapp" };
if (env === "production") {
return {
...base,
ios: { bundleIdentifier: "com.yourorg.app" },
android: { package: "com.yourorg.app" },
};
}
if (env === "preview") {
return {
...base,
name: "MyApp (preview)",
scheme: "myapp.preview",
ios: { bundleIdentifier: "com.yourorg.app.preview" },
android: { package: "com.yourorg.app.preview" },
};
}
return {
...base,
name: "MyApp (dev)",
scheme: "myapp.dev",
ios: { bundleIdentifier: "com.yourorg.app.dev" },
android: { package: "com.yourorg.app.dev" },
};
}
export default () => ({ expo: getDynamicAppConfig(APP_ENV) });
APP_ENV se configura por build profile de EAS en eas.json (el bloque
env), así que nunca lo seteás a mano — elegir un profile elige el
ambiente. Ver Compilación y Distribución → Conceptos.
Localmente, env-cmd -f .env.<env> carga los valores de runtime de ese
ambiente mientras APP_ENV (que cada archivo .env.<env> puede definir)
selecciona la config nativa correspondiente acá — las dos capas quedan
alineadas. Ver Primeros Pasos → Variables de Entorno.
Nota
Combiná esto con appVersionSource: "remote" y autoIncrement: true en
eas.json para que EAS te maneje los números de build en vez de
editarlos a mano.