expo config command displays your project’s resolved Expo configuration, showing how app.json, app.config.js, and environment variables combine into the final configuration used by Expo.
Usage
Arguments
Directory of the Expo project. Defaults to the current working directory.
Options
Type of configuration to show. Alias:
-tOptions:public- Public configuration exposed to JavaScript codeprebuild- Configuration used during prebuildintrospect- Full configuration with all fields (default)
Include all project config data, including defaults and computed values.
Output configuration in JSON format. Useful for scripting and automation.
What It Shows
Theexpo config command displays:
- Configuration from app.json or app.config.js
- Applied config plugins and their modifications
- Environment-specific values
- Computed default values
- Platform-specific settings
Examples
View Full Configuration
Show the complete resolved configuration:JSON Output
Get machine-readable JSON:- CI/CD scripts
- Parsing with
jqor other tools - Automation workflows
Public Configuration
Show only configuration exposed to your JavaScript code:Prebuild Configuration
Show configuration used duringexpo prebuild:
Full Details
Show all configuration including defaults:- Explicit configuration from your config file
- Default values applied by Expo
- Computed values based on other settings
- All plugin modifications
Specific Project Directory
View config for a specific project:Configuration Types
Introspect (Default)
Shows the complete configuration after:- Reading app.json or app.config.js
- Applying config plugins
- Merging environment variables
- Computing dynamic values
Public
Shows only values exposed to JavaScript runtime:- Available in
expo-constants - Embedded in app bundles
- Accessible at runtime
- Excludes secrets and build-time values
Prebuild
Shows configuration used when generating native projects:- Native identifiers (bundle ID, package name)
- Config plugin results
- Platform-specific settings
- Build-time configuration
Common Use Cases
Debugging Configuration Issues
Check what config is actually being used:- Unexpected default values
- Missing configuration
- Plugin modifications
- Environment variable substitution
Verifying Environment Variables
Check if environment variables are applied:CI/CD Validation
Validate configuration in CI:Comparing Environments
Compare development and production configs:Checking Plugin Effects
See what config plugins have modified:- Permissions and entitlements
- App capabilities
- Build settings
- Manifest entries
Configuration Files
app.json
Static JSON configuration:app.config.js
Dynamic JavaScript configuration:app.config.ts
TypeScript configuration with type checking:Environment Variables
Build-Time Variables
Available during configuration:Public Variables
Variables prefixed withEXPO_PUBLIC_ are available at runtime:
Parsing Output
With jq
Extract specific fields:With grep
Search for specific values:In Scripts
Use in shell scripts:Troubleshooting
Config File Not Found
Ifexpo config can’t find your config:
- Ensure you’re in the project directory
- Create app.json or app.config.js
- Specify directory:
npx expo config ./path/to/project
Invalid Configuration
If config is malformed:- JSON syntax in app.json
- JavaScript syntax in app.config.js
- Required fields (name, slug)
- Type errors in app.config.ts
Environment Variables Not Applied
If environment variables aren’t showing:.env files, they’re loaded automatically when running Expo commands.
Plugin Errors
If config plugins fail:- Plugin is installed:
npm install plugin-name - Plugin syntax in app.json
- Plugin compatibility with Expo SDK version
Configuration Schema
The configuration follows a strict schema. To see all available fields:- Expo Config Reference
- TypeScript types:
expo/configpackage - JSON schema: Available via Expo API