Skip to content
Mobile
Skill

/updating-expo-config

Add a new property to the Expo config (app.json / app.config.js) schema. Covers the universe JSON schema, `@expo/config-types`, the docs schema sync, an optional config plugin in `@expo/config-plugins` and `@expo/prebuild-config`, and their tests. Use when adding or changing an

BOOST
From plugin
expo
53k6 skills
Install
$ npx -y skills add expo/expo --skill updating-expo-config --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/updating-expo-config

Context preview

The summary Claude sees to decide when to auto-load this skill.

Add a new property to the Expo config (app.json / app.config.js) schema. Covers the universe JSON schema, `@expo/config-types`, the docs schema sync, an optional config plugin in `@expo/config-plugins` and `@expo/prebuild-config`, and their tests. Use when adding or changing an

SKILL.md

updating-expo-config.SKILL.md
name: updating-expo-config
description: Add a new property to the Expo config (app.json / app.config.js) schema. Covers the universe JSON schema, `@expo/config-types`, the docs schema sync, an optional config plugin in `@expo/config-plugins` and `@expo/prebuild-config`, and their tests. Use when adding or changing an Expo config field.

Updating Expo Config (app.json / app.config.js)

This skill documents the process of adding new properties to the Expo config schema.

Files to Update

When adding a new property to the Expo config, update these files in order:

1. JSON Schema (Universe)

> This step only works for Expo team members with access to the server repository.

**File:** `../universe/server/www/xdl-schemas/UNVERSIONED-schema.json` (depends on where the developer clones the `universe` repo)

Add the property to the corresponding definition (`IOS`, `Android`, etc.) with:

  • `description`: Human-readable description
  • `type`: JSON schema type
  • `pattern`: Regex validation (if applicable)
  • `meta.bareWorkflow`: Instructions for bare workflow users
"propertyName": {
  "description": "Description of the property.",
  "type": "string",
  "pattern": "^\\d+\\.\\d+$",
  "meta": {
    "bareWorkflow": "Instructions for bare workflow"
  }
}

2. Update TypeScript Types

Generate the TypeScript types based on the JSON schema: `cd packages/@expo/config-types && pnpm generate --path ../../../../universe/server/www/xdl-schemas/UNVERSIONED-schema.json` in `packages/@expo/config-types`

3. Docs Schema

This file is **auto-generated** from the universe schema via the Expo API server. After the universe schema is deployed: `cd docs && pnpm run schema-sync unversioned`

3. Config Plugin (if the property needs to be applied during prebuild)

Create a new plugin module following existing patterns, generally in `packages/@expo/config-plugins/src`

Ensure the plugin is registered for prebuild in `packages/@expo/prebuild-config`

4. Tests

Config Plugin Tests

**File:** `packages/@expo/config-plugins/src/ios/__tests__/PropertyName-test.ts`

Test the getter function and plugin behavior:

describe('PropertyName module', () => {
  describe(getPropertyName, () => {
    it('returns null if not set', () => {});
    it('returns the value when provided', () => {});
  });
});

Prebuild Config Tests

**File:** `packages/@expo/prebuild-config/src/plugins/__tests__/withDefaultPlugins-test.ts`

Add the new property to `getLargeConfig()` test fixture.

Build & Verify

After making changes, run:

# Build config-types
cd packages/@expo/config-types && pnpm build

# Build and test config-plugins
cd packages/@expo/config-plugins && pnpm build && pnpm typecheck
pnpm test src/ios/__tests__/PropertyName-test.ts
# Build prebuild-config
cd packages/@expo/prebuild-config && pnpm build && pnpm typecheck

Checklist

  • [ ] JSON schema in universe (`UNVERSIONED-schema.json`)
  • [ ] TypeScript types in `@expo/config-types`
  • [ ] Docs schema (run `cd docs && pnpm run schema-sync unversioned` after universe deploy, or manually update for local dev)
  • [ ] Config plugin (if needed)
  • [ ] Tests for plugin
Read more
Ships withexpo

An open-source framework for making universal native apps with React. Expo runs on Android, iOS, and the web.

Get the whole plugin
Stats
52,937
Stars
14,704
Forks
Active
Maintenance
TypeScript
Language
MIT
License
2h ago
Last commit
10y ago
Created
1mo ago
Added

Repo: expo/expo

Other skills on expo.

deep-code-review
Skill

deep-code-review

In-depth design-focused code review - understands codebase context before evaluating PR changes, posts structured feedback to…

@expo@expoInstall Skill
expo-api-docs
Skill

expo-api-docs

Write TSDoc comments for Expo SDK APIs following official conventions. MUST USE when introducing new user-facing TypeScript APIs…

@expo@expoInstall Skill
expo-review
Skill

expo-review

Run Expo's configured AI code reviewer on local changes or an expo/expo pull request, summarize findings and reviewer coverage,…

@expo@expoInstall Skill
expo-app-intents
Skill

expo-app-intents

Add or maintain Apple App Intents in existing Expo apps using expo-app-intents. Use for Siri and Shortcuts actions, Swift intent…

@expo@expoInstall Skill
expo-sqlite
Skill

expo-sqlite

Persist and query local data with expo-sqlite in Expo or React Native apps. Use for SQLite setup, SQL queries, schema migrations,…

@expo@expoInstall Skill