Skip to main content
skill CX Codex GP ChatGPT official · OpenAI

upgrading-expo — Codex skill: upgrade Expo SDK safely

Walks the agent through an Expo SDK upgrade: install commands, diagnostics, cache cleanup and broken dependency fixes.

Install into Codex · Skills CLI (Vercel) All methods and platforms ↓
npx skills add openai/plugins --skill upgrading-expo -a codex
Open on GitHub

What upgrading-expo does

The skill gives the agent an ordered routine for moving to a new Expo SDK. It runs npx expo install expo@latest, then npx expo install --fix, follows up with npx expo-doctor, and clears caches via npx expo export -p ios --clear plus removing node_modules and .expo. From there the agent works a breaking-changes checklist: removed APIs, moved modules, native changes.

Bundled references cover version-specific work: New Architecture migration, React 19 changes, React Compiler setup, native tabs, and moving audio and video off expo-av onto expo-audio and expo-video. A table maps deprecated packages to replacements. Beta releases get their own section — .preview suffix, @next tag.

Before npx expo prebuild --clean the skill tells you to check whether ios/ and android/ exist. If neither does, the project uses Continuous Native Generation and that step, along with the bare-workflow cache cleanup, gets skipped. On SDK 54 and later react-native-worklets is required for react-native-reanimated to work. Worth checking package.json before you start, not after.

What it helps with

  • upgrade the Expo SDK without drowning in broken dependencies
  • find removed APIs and moved import paths after an upgrade
  • migrate audio and video from expo-av to expo-audio and expo-video
  • clear CocoaPods, Xcode and Gradle caches after a version bump
  • drop stale patches and redundant Metro and PostCSS config

Example prompts for the agent

  • Upgrade this project to the latest Expo SDK and fix the dependencies
  • Run expo-doctor and tell me what it complains about
  • Check which packages are deprecated and suggest replacements

How to install upgrading-expo

1Skills CLI (Vercel)

npx skills add openai/plugins --skill upgrading-expo -a codex

2Manually: put the files in place

.agents/skills/upgrading-expo/SKILL.md

For all projects use ~/.agents/skills/

Step by step, with commands for each platform: Codex skills: how to install, where they live, how to call them

Questions about upgrading-expo

How do I install upgrading-expo in Claude?

Run npx skills add openai/plugins --skill upgrading-expo, then npx skills add openai/plugins --skill upgrading-expo -a codex. The skill then lives at .agents/skills/upgrading-expo/SKILL.md.

What does upgrading-expo do?

It walks the agent through an Expo SDK upgrade: installing packages, running diagnostics, clearing caches, working the breaking-changes checklist and migrating deprecated packages.

What do I need before using it?

An Expo project. On SDK 54 and later you need react-native-worklets installed, otherwise react-native-reanimated won't work. Before npx expo prebuild --clean, confirm the project isn't using Continuous Native Generation.

Source text

SKILL.md · MIT
---
name: upgrading-expo
description: Guidelines for upgrading Expo SDK versions and fixing dependency issues
version: 1.0.0
license: MIT
---

## References

- ./references/new-architecture.md -- SDK +53: New Architecture migration guide
- ./references/react-19.md -- SDK +54: React 19 changes (useContext → use, Context.Provider → Context, forwardRef removal)
- ./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 -- Migrate audio playback and recording from expo-av to expo-audio
- ./references/expo-av-to-video.md -- Migrate video playback from expo-av to expo-video

## 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

1. Upgrade Expo and dependencies

```bash
npx expo install expo@latest
npx expo install --fix
```

2. Run diagnostics: `npx expo-doctor`

3. 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
- 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
- Remove implicit packages from `package.json`: `@babel/core`, `babel-preset-expo`, `expo-constants`.
- 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

## Deprecated Packages

| Old Package          | Replacement                                          |
| -------------------- | ---------------------------------------------------- |
| `expo-av`            | `expo-audio` and `expo-video`                        |
| `expo-permissions`   | Individual package permission APIs                   |
| `@expo/vector-icons` | `expo-symbols` (for SF Symbols)                      |
| `AsyncStorage`       | `expo-sqlite/localStorage/install`                   |
| `expo-app-loading`   | `expo-splash-screen`                                 |
| expo-linear-gradient | experimental_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](https://docs.expo.dev/router/migrate/from-expo-webpack/).

## Hermes engine v1

Since SDK 55, users can opt-in to use Hermes engine v1 for improved runtime performance. This requires setting `useHermesV1: true` in the `expo-build-properties` config plugin, and may require a specific version of the `hermes-compiler` npm package. Hermes v1 will become a default in some future SDK release.

## 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.

© Expo Team · MIT · openai/plugins

Similar skills

Everything for Mobile →

From the same set360

The whole set →
ngs-scrna-seq This skill takes single-cell or single-nucleus RNA-seq from FASTQ to a count matrix, then hands QC and clustering to an embedded skill. CX Codex GP ChatGPT 2installs ngs-bulk-rnaseq A dispatcher for bulk RNA-seq work: it splits FASTQ-to-count processing from count-matrix statistics. Useful when you need expression counts and then differentially expressed genes. CX Codex GP ChatGPT 2installs ngs-bcl-to-fastq Validates an Illumina run folder and sample sheet, plans demultiplexing, and runs BCL-to-FASTQ conversion. Useful when the input is a sequencing run folder. CX Codex GP ChatGPT 2installs hyperframes A skill for building video in HTML: compositions, title cards, captions, narration and music-driven animation. Useful when the video should come out of code, not an editor. CX Codex GP ChatGPT 2installs building-mcp-server-on-cloudflare A skill that walks the agent through building a remote MCP server on Cloudflare Workers: tools, OAuth, deployment. Useful when you need to expose your own functions over MCP. CX Codex GP ChatGPT 2installs knowledge-update Injects up-to-date Vercel platform facts into the session and overrides stale model knowledge. Useful when your agent still reaches for Edge Functions or vercel.json. CX Codex GP ChatGPT 1installs twilio-messaging-overview A navigation skill for Twilio Messaging: pick between SMS, WhatsApp, RCS and Messenger, then follow the setup order from first message to production monitoring. CX Codex GP ChatGPT 1installs twilio-account-setup Walks you from Twilio signup to your first sent message: credentials, phone number, SDK, subaccounts. CX Codex GP ChatGPT 1installs

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor