Expo app.json configuration
Expo apps are configured by an app.json file (or a dynamic app.config.js)
whose expo object drives the build, store metadata and native settings. Some
fields are shared across platforms; others live under ios, android or web.
This searchable reference lists the key fields with their platform scope and
type so you can configure builds and submissions correctly.
How it works
Static config lives under the top-level expo key:
{
"expo": {
"name": "Gera Warranty",
"slug": "gera-warranty",
"version": "2.1.0",
"icon": "./assets/icon.png",
"ios": { "bundleIdentifier": "com.gera.warranty", "buildNumber": "57" },
"android": { "package": "com.gera.warranty", "versionCode": 57 },
"runtimeVersion": { "policy": "appVersion" }
}
}
For dynamic values, export from app.config.js instead and read
process.env. EAS uses slug plus ios.bundleIdentifier / android.package
to identify and submit the app, and runtimeVersion to gate OTA updates.
Tips and notes
- Keep
slugstable; changing it points EAS at a different project. - Bump
ios.buildNumberandandroid.versionCodeon every store upload. - Use
runtimeVersionso OTA updates only reach compatible native builds. - Set native bits via
ios.infoPlist,android.permissionsor config plugins.