Official agent skill

Expo Upgrade

by expo in expo/skills

Guidelines for upgrading Expo SDK versions and fixing dependency issues

OfficialMITAuto-check passedMobile

Install Expo Upgrade

skills CLI
$ npx skills add expo/skills --skill expo-upgrade -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install expo/skills expo-upgrade --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/expo/skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/expo/skills/expo-upgrade .claude/skills/expo-upgrade && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
expo-upgrade
GitHub stars
2.7k
Used in
9 other repos
Token cost
~1.9k tokens
SKILL.md length
884 words
Files
9 (incl. references)
Skills in repo
26
Repo updated
First seen
Licence
MIT

At a glance

Guidelines for upgrading Expo SDK versions and fixing dependency issues

  • Works in 3 steps: Upgrade Expo and dependencies → Run diagnostics: npx expo-doctor → Clear caches and reinstall
  • Tasks that involve Cross-platform mobile apps
  • SKILL.md covers References, Beta/Preview Releases, Step-by-Step Upgrade Process and Breaking Changes Checklist, plus 11 more sections
  • Calls npx; reaches docs.expo.dev

What it does

Expo Upgrade is an agent skill from expo/skills, published by the product's own GitHub organization. Guidelines for upgrading Expo SDK versions and fixing dependency issues

Its SKILL.md is about 1.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 10 other files, including reference files (for example `agents/openai.yaml`, `references/expo-av-to-audio.md` and `references/expo-av-to-video.md`).

It sits in Mobile, covering Cross-platform mobile apps. It works with Expo and React. The repository describes itself as: A collection of AI agent skills for working with Expo projects and Expo Application Services. The licence is MIT.

When your agent uses it

  • Tasks that involve Cross-platform mobile apps

Example prompts

  • “Use the expo-upgrade skill to guideline for upgrading Expo SDK versions and fixing dependency issues”
  • “/expo-upgrade”

Requirements

  • Node.js

Workflow steps

3 steps, taken from the first numbered list in SKILL.md.

  1. Upgrade Expo and dependencies
  2. Run diagnostics: npx expo-doctor
  3. Clear caches and reinstall

What it can do on your machine

Read from SKILL.md and the folder at commit d4f4840. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • npx

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • docs.expo.dev

    Also links to:

    • exp.host
    • expo.dev

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Expo Upgrade loads about 1.9k tokens when it runs, and up to ~7.2k if it reads all its reference files. Until then it costs about 21 tokens; SKILL.md has 884 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~21
When it runs · the whole SKILL.md, loaded when a task matches
~1.9k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~7.2k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from expo/skills at commit d4f4840, republished under its MIT licence (© expo). 884 words, ~1,914 tokens.

Download SKILL.mdSave it as .claude/skills/expo-upgrade/SKILL.md (or your agent's skills folder). This skill also uses 8 other files; get the full folder from GitHub.
name
expo-upgrade
description
Guidelines for upgrading Expo SDK versions and fixing dependency issues
version
1.0.0
license
MIT

References

  • ./references/react-19.md -- SDK +54: React 19 changes (useContext → use, Context.Provider → Context, forwardRef removal)
  • ./references/new-architecture.md -- SDK +53: New Architecture migration guide
  • ./references/react-compiler.md -- SDK +54: React Compiler setup and migration guide
  • ./references/native-tabs.md -- SDK +55: Native tabs changes (Icon/Label/Badge now accessed via NativeTabs.Trigger.*)
  • ./references/expo-av-to-audio.md -- SDK +55: Migrate audio playback and recording from expo-av to expo-audio
  • ./references/expo-av-to-video.md -- SDK +55: Migrate video playback from expo-av to expo-video
  • ./references/react-navigation-to-expo-router.md -- SDK +56: Migrate @react-navigation/* imports to expo-router entry points (codemod + manual mapping)

Beta/Preview Releases

Beta versions use .preview suffix (e.g., 55.0.0-preview.2), published under @next tag.

Check if latest is beta: https://exp.host/--/api/v2/versions (look for -preview in expoVersion)

bash
npx expo install expo@next --fix  # install beta

Step-by-Step Upgrade Process

If upgrading from SDK 55 or earlier, skip SDK 56 and upgrade directly to SDK 57. Don't use expo@57.0.8 or below. SDK 55 with Hermes V1 enabled, SDK 56, and older SDK 57 releases contain a Hermes V1 memory regression that can drastically increase memory usage when using react-native-worklets or react-native-reanimated.

  1. Upgrade Expo and dependencies
bash
npx expo install expo@latest
npx expo install --fix
  1. Run diagnostics: npx expo-doctor

  2. Clear caches and reinstall

bash
npx expo export -p ios --clear
rm -rf node_modules .expo
watchman watch-del-all

Breaking Changes Checklist

  • Check for removed APIs in release notes
  • Update import paths for moved modules
  • Review native module changes requiring prebuild
  • Test all camera, audio, and video features
  • Verify navigation still works correctly

Prebuild for Native Changes

First check if ios/ and android/ directories exist in the project. If neither directory exists, the project uses Continuous Native Generation (CNG) and native projects are regenerated at build time — skip this section and "Clear caches for bare workflow" entirely.

If upgrading requires native changes:

bash
npx expo prebuild --clean

This regenerates the ios and android directories. Ensure the project is not a bare workflow app before running this command.

Clear caches for bare workflow

These steps only apply when ios/ and/or android/ directories exist in the project:

  • Clear the cocoapods cache for iOS: cd ios && pod install --repo-update
  • Clear derived data for Xcode: npx expo run:ios --no-build-cache
  • Clear the Gradle cache for Android: cd android && ./gradlew clean

Housekeeping

  • Review release notes for the target SDK version at https://expo.dev/changelog
  • Update versioned docs links in agent instruction files (AGENTS.md). The default template links to https://docs.expo.dev/versions/v<version>/. Search for docs.expo.dev/versions/ and bump each link to the new SDK version.
  • If using Expo SDK 54 or later, ensure react-native-worklets is installed — this is required for react-native-reanimated to work.
  • Enable React Compiler in SDK 54+ by adding "experiments": { "reactCompiler": true } to app.json — it's stable and recommended
  • Delete sdkVersion from app.json to let Expo manage it automatically
  • Review formerly implicit packages such as @babel/core, babel-preset-expo, and expo-constants individually instead of removing them wholesale. Keep any package that an installed dependency declares as a required peer.
  • Keep expo-constants as a direct dependency whenever expo-router is installed. Expo Router imports it and declares it as a required peer; relying on a transitive copy can break native autolinking outside Expo Go.
  • After removing any dependency, immediately run npx expo-doctor and restore anything it reports as a missing required peer.
  • If the babel.config.js only contains 'babel-preset-expo', delete the file
  • If the metro.config.js only contains expo defaults, delete the file
Show full SKILL.md (384 more words)Show less

Deprecated Packages

Old PackageReplacement
expo-avexpo-audio and expo-video
expo-permissionsIndividual package permission APIs
@expo/vector-iconsexpo-symbols (for SF Symbols)
AsyncStorageexpo-sqlite/localStorage/install
expo-app-loadingexpo-splash-screen
expo-linear-gradientexperimental_backgroundImage + CSS gradients in View

When migrating deprecated packages, update all code usage before removing the old package. For expo-av, consult the migration references to convert Audio.Sound to useAudioPlayer, Audio.Recording to useAudioRecorder, and Video components to VideoView with useVideoPlayer.

expo.install.exclude

Check if package.json has excluded packages:

json
{
  "expo": { "install": { "exclude": ["react-native-reanimated"] } }
}

Exclusions are often workarounds that may no longer be needed after upgrading. Review each one.

Removing patches

Check if there are any outdated patches in the patches/ directory. Remove them if they are no longer needed.

Postcss

  • autoprefixer isn't needed in SDK +53. Remove it from dependencies and check postcss.config.js or postcss.config.mjs to remove it from the plugins list.
  • Use postcss.config.mjs in SDK +53.

Metro

Remove redundant metro config options:

  • resolver.unstable_enablePackageExports is enabled by default in SDK +53.
  • experimentalImportSupport is enabled by default in SDK +54.
  • EXPO_USE_FAST_RESOLVER=1 is removed in SDK +54.
  • cjs and mjs extensions are supported by default in SDK +50.
  • Expo webpack is deprecated, migrate to Expo Router and Metro web.

Hermes engine v1

Hermes V1 is the default on SDK 56 and later. SDK 55 apps using Hermes V1, all SDK 56 apps, and SDK 57 apps before expo@57.0.9 may encounter a memory regression when importing react-native-worklets or react-native-reanimated. Upgrade directly to SDK 57 and expo@57.0.9 or later. Do not recommend Worklets Bundle Mode as a production workaround; it is unsupported and experimental and may not work as expected.

Do not guide users to opt in to or out of Hermes V1. Changing the Hermes version from the SDK default is unsupported and has significant build and dependency-management caveats.

New Architecture

The new architecture is enabled by default, the app.json field "newArchEnabled": true is no longer needed as it's the default. Expo Go only supports the new architecture as of SDK +53.

Submitting Feedback

If you encounter errors, misleading or outdated information in this skill, report it so Expo can improve:

bash
npx --yes submit-expo-feedback@latest --category skills --subject "expo-upgrade" "<actionable feedback>"

Only submit when you have something specific and actionable to report. Include as much relevant context as possible. If an AI agent repeatedly failed or the user had to take over an Expo task, load the expo-skill-feedback skill and follow its eval-candidate flow instead of reusing the command above.

© expo, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 8 other files (references) in plugins/expo/skills/expo-upgrade of expo/skills.

  • SKILL.md
  • agents/openai.yaml
  • references/expo-av-to-audio.md
  • references/expo-av-to-video.md
  • references/native-tabs.md
  • references/new-architecture.md
  • references/react-19.md
  • references/react-compiler.md
  • references/react-navigation-to-expo-router.md

Open the folder on GitHubat commit d4f4840

Used in 9 other repositories

We found 13 copies of this SKILL.md (exact, near-identical or edited) in other folders, from 9 other GitHub owners. This page covers the copy in expo/skills, which our catalogue first saw on October 7, 2026.

Compare with similar skills

Expo Upgrade next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Expo Upgrade compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Expo Upgrade this skillexpo/skills2.7k9 repos~1.9kAutomated safety check: PassMIT
Screenmapaleqsio/screenmap243—~7.2kAutomated safety check: PassMIT
Lovdacnlovdacn/ui107—~3.9kAutomated safety check: PassMIT
Use Dommweinbach/agent-coworker1565 repos~2.4kAutomated safety check: PassMIT
ThemingCode-with-Beto/skills140—~2.5kAutomated safety check: PassNone
Stream React Nativeadrianhajdin/react-native-lingua152—~2.8kAutomated safety check: PassNone

Similar skills

  • Screenmap

    aleqsio/screenmap

    Generate a visual navigation map of an Expo / React Native or NativeScript app.

    243 GitHub stars~7.2k tokensUpdated 5 days ago
    MobileAuto-check passed
  • Lovdacn

    lovdacn/ui

    Manages lovdacn (lvcn) components and projects for Expo & React Native — adding, initializing, fixing, debugging, styling, theming, and composing UI with NativeWind or Uniwind.

    107 GitHub stars~3.9k tokensUpdated 1 mo ago
    MobileAuto-check passed
  • Use Dom

    mweinbach/agent-coworker

    Use Expo DOM components to run web code in a webview on native and as-is on web.

    156 GitHub starsUsed in 5 repos~2.4k tokens
    MobileAuto-check passed
  • Theming

    Code-with-Beto/skills

    Scaffold a unified, cross-platform color theme system into an Expo Router app.

    140 GitHub stars~2.5k tokensUpdated 2 mo ago
    MobileAuto-check passed
  • Stream React Native

    adrianhajdin/react-native-lingua

    Create, build, and integrate Stream Chat React Native apps in React Native Community CLI and Expo.

    152 GitHub stars~2.8k tokensUpdated 4 mo ago
    MobileAuto-check passed
  • React Native Expert

    tech-leads-club/agent-skills

    Guides React Native and Expo work for cross-platform apps: Expo Router navigation, fast lists, Reanimated animation, platform-specific code and project structure.

    7k GitHub stars~3.2k tokensUpdated yesterday
    MobileAuto-check passed

More from expo/skills

All 26 skills in this repo
  • Official

    Check the health of published EAS Update: crash rates, install/launch counts, unique users, payload size, and the split between embedded and OTA users per channel.

    2.7k GitHub starsUsed in 4 repos~3.1k tokens
    Auto-check passed
  • Eas Workflows

    expo/skills

    Official

    Helps understand and write EAS workflow YAML files for Expo projects.

    2.7k GitHub stars~1.2k tokensUpdated 2 days ago
    Auto-check passed
  • Expo App Clip

    expo/skills

    Official

    Add an iOS App Clip target to an Expo app. An agent skill from expo/skills.

    2.7k GitHub starsUsed in 2 repos~2.4k tokens
    Auto-check passed
  • Expo Skill Eval

    expo/skills

    Official

    Evaluate Expo skills in this repo end-to-end - trigger accuracy, generated code quality, and runtime screenshots on iOS simulator and Android emulator via Expo Go (web optional).

    2.7k GitHub stars~12k tokensUpdated 2 days ago
    Auto-check passed
  • Official

    Submit feedback on an Expo skill—or Expo itself—and control bundled anonymous usage telemetry (off by default / opt-in).

    2.7k GitHub stars~1.3k tokensUpdated 2 days ago
    Auto-check passed
  • Expo Module

    expo/skills

    Official

    Guide for creating and writing Expo native modules and views using the Expo Modules API (Swift, Kotlin, TypeScript).

    2.7k GitHub starsUsed in 1 repo~1.6k tokens
    Auto-check passed

Works with

Categories

Questions about Expo Upgrade

What does Expo Upgrade do?

Guidelines for upgrading Expo SDK versions and fixing dependency issues. Expo Upgrade is an agent skill from expo/skills, published by the product's own GitHub organization.

When should I use Expo Upgrade?

Expo Upgrade fits situations like: tasks that involve Cross-platform mobile apps.

How do I install Expo Upgrade in Claude Code?

Run `npx skills add expo/skills --skill expo-upgrade -a claude-code`. Or copy the skill folder (plugins/expo/skills/expo-upgrade in expo/skills) into .claude/skills/expo-upgrade in your project. Claude Code loads it when a task matches its description.

How do I install Expo Upgrade in Codex?

Run `npx skills add expo/skills --skill expo-upgrade -a codex`. Or copy the skill folder (plugins/expo/skills/expo-upgrade in expo/skills) into .agents/skills/expo-upgrade in your project. Codex loads it when a task matches its description.

Can I use Expo Upgrade in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add expo/skills --skill expo-upgrade -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/expo-upgrade, .gemini/skills/expo-upgrade, .github/skills/expo-upgrade and .opencode/skills/expo-upgrade in your project.

What does Expo Upgrade need to run?

Going by SKILL.md and its folder, Expo Upgrade needs the command-line tools its instructions call (npx). Our summary lists: Node.js.

Does Expo Upgrade access the network?

SKILL.md names 3 domains. In commands or code: docs.expo.dev; the agent is likely to contact it when it follows the instructions. As links in the text: exp.host and expo.dev. This is read from the text; nothing was executed.

Is Expo Upgrade safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Expo Upgrade use?

Expo Upgrade is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Expo Upgrade use?

About 1.9k tokens (SKILL.md is roughly 7.7k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 5.3k tokens, read only when the agent opens those files.

What are the alternatives to Expo Upgrade?

Skills that share tags, products or a category with Expo Upgrade: Screenmap (aleqsio/screenmap, 243 stars), Lovdacn (lovdacn/ui, 107 stars), Use Dom (mweinbach/agent-coworker, 156 stars) and Theming (Code-with-Beto/skills, 140 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Expo Upgrade?

expo (a GitHub organization, an official publisher) maintains it in expo/skills, which has 2,685 GitHub stars. The repository holds 26 skills in this directory. The repository was last updated on October 7, 2026.

Source: expo/skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.