Skill

Configure Expo Apps with app.json and app.config.js

A skill configuring Expo app.config.js/eas.json with env variants, plugins, deep linking, and OTA update setup.

Works with exporeact native

78
Spark score
out of 100
Updated 7 months ago
Version 1.0.0
Models

Add to Favorites

Why it matters

Streamline your React Native development by leveraging this expert asset to configure your Expo projects. It specializes in creating robust `app.json` and `app.config.js` files, ensuring optimal platform-specific settings, build configurations, and deployment strategies.

Outcomes

What it gets done

01

Generate dynamic and static Expo configurations using `app.config.js` and `app.json`.

02

Implement platform-specific settings for iOS and Android, including permissions and capabilities.

03

Optimize EAS build configurations and manage environment-specific variables securely.

04

Configure advanced features like deep linking, plugins, and asset management.

Install

Add it to your toolbox

Run in your project directory:

curl -fsSL https://spark.entire.vc/get/vb-expo-config-setup | bash

Overview

Expo Config Setup Expert

This skill configures Expo apps via app.config.js and eas.json, covering environment-specific app variants, EAS build profiles, native plugin permissions, platform-specific assets, and deep linking setup for both iOS and Android. Use it when an Expo app needs environment-aware configuration, native plugin setup, or deep linking rather than a default app.json.

What it does

This skill configures Expo apps for React Native - app.json/app.config.js setup, SDK features, platform-specific configuration, build settings, and deployment optimization. Core principle: use static app.json for configuration that doesn't change between environments, and dynamic app.config.js when environment variables or conditional logic are needed, never hardcoding sensitive data directly in either. Both iOS and Android should always be configured explicitly, respecting each platform's own permission and capability conventions rather than assuming shared defaults.

When to use - and when NOT to

Use it when an Expo app needs environment-aware configuration (dev/preview/production app names, bundle IDs, and schemes), native plugin setup, or deep linking - not just a default app.json.

const IS_DEV = process.env.APP_VARIANT === 'development';
const IS_PREVIEW = process.env.APP_VARIANT === 'preview';

export default {
  expo: {
    name: IS_DEV ? 'MyApp (Dev)' : IS_PREVIEW ? 'MyApp (Preview)' : 'MyApp',
    slug: IS_DEV ? 'myapp-dev' : IS_PREVIEW ? 'myapp-preview' : 'myapp',
    extra: { apiUrl: process.env.API_URL, eas: { projectId: process.env.EAS_PROJECT_ID } },
    updates: { url: `https://u.expo.dev/${process.env.EAS_PROJECT_ID}` },
    runtimeVersion: { policy: 'sdkVersion' }
  }
};

Inputs and outputs

EAS build profiles are configured in eas.json (development with developmentClient: true, preview, and production, each carrying its own APP_VARIANT env var). Plugin configuration is shown for expo-camera, expo-location, expo-notifications, and async-storage, each with platform-specific permission-prompt text. Asset configuration covers icon and splash-screen images at platform-specific resolutions, including per-density Android splash variants (mdpi through xxxhdpi) and a tablet-specific iOS splash image. Deep linking setup covers a custom scheme, iOS associatedDomains for universal links, and Android intentFilters with autoVerify for App Links. Security and performance guidance: never commit sensitive env variables, use EAS Secrets for build-time sensitive values, implement certificate pinning in production, and scope assetBundlePatterns plus metro.config.js tree-shaking to control bundle size.

Who it's for

React Native developers configuring an Expo app's environment variants, native plugins, and deep linking who need concrete app.config.js/eas.json patterns, not just the Expo documentation's individual reference pages. Common pitfalls it calls out directly: missing platform-specific bundle identifiers, incorrect asset dimensions causing build failures, forgetting to bump version codes before store submission, skipping runtime-version configuration needed for OTA updates, and missing permission descriptions for features the app actually uses - each worth checking with expo doctor, a local build, and deep-link testing on both platforms before submitting to EAS, alongside verifying asset loading across different screen densities and confirming permission prompts show the exact intended descriptions rather than a generic system default.

FAQ

Common questions

Discussion

Questions & comments ยท 0

Sign In Sign in to leave a comment.