Skip to main content
App identity is split between the static Expo config, the dynamic Expo config, and runtime product config.

Edit the build identity

In apps/mobile/app.config.js, replace the three values above the DON'T EDIT BELOW THIS LINE marker:
apps/mobile/app.config.js
EXPO_PUBLIC_APP_ENV determines the evaluated identity: The same file selects environment-specific Firebase filenames. Do not put a suffixed identifier into BUNDLE_ID; the file adds suffixes itself.

Keep base files aligned

Update these base values in apps/mobile/app.json:
apps/mobile/app.json
Also keep amisi.config.json aligned. The Configurator and @amisi-mobile-starter/config read this file, but it does not override Expo config by itself:
amisi.config.json
Use a stable reverse-domain identifier. Apple and Google treat an identifier as the app’s permanent store identity. The URL scheme should be unique, lowercase, and URL-safe.

Update linked services

Identity changes also affect external configuration:
  • Register the production, preview, and development identifiers with Apple, Google Play, and Firebase as needed.
  • Download Firebase files whose registered identifiers match each variant.
  • Update associated domains and Android intent-filter hosts in app.json when changing your web domain.
  • Run eas init from apps/mobile to link your own Expo project, then verify extra.eas.projectId and updates.url.
  • Replace starter appleTeamId and ascAppId values in app.json and eas.json.

Verify the evaluated config

Check each identity before creating native builds:
After an identity or native config change, rebuild the app:
Use bun run clear only when you intentionally want to delete and regenerate both native projects.

Next steps