App variants in Expo let you install development, preview, and production builds side by side on one device by giving each build its own bundle identifier and package name. The setup involves switching from a static app.json to a dynamic app.config.ts that reads an APP_VARIANT environment variable to set per-variant identifiers, names, and icons. EAS Build profiles pass the variable at build time, while EAS environment variables let you sync the same values locally via eas env:pull. Additional steps cover fixing QR code routing so only the dev build answers the generated scheme, keeping EAS Update channels aligned with environments, and registering each variant separately with third-party services like Firebase to avoid polluting production data.

17m read timeFrom expo.dev
Post cover image
Table of contents
What an app variant is made ofStep 1: config your app for different variantsStep 2: build each variant on EASHow the environment reaches a running appMaking the QR code open your dev buildRegistering each variant with your servicesGiving each variant its own iconKeeping variants aligned in updatesWrap-up
433 Impressions