
upgrading-expo-sdk
by EvanBacon
Expo Router Portfolio
SKILL.md
name: upgrading-expo-sdk description: Guidelines for upgrading Expo SDK versions and fixing dependency issues
Quick Upgrade
Upgrade to the latest Expo SDK:
npx expo install expo@latest
Then fix all dependencies to be compatible with the new SDK:
npx expo install --fix
Step-by-Step Upgrade Process
-
Check current SDK version
npx expo --version -
Review release notes for the target SDK version at https://expo.dev/changelog
-
Upgrade Expo and dependencies
npx expo install expo@^54 npx expo install --fix -
Run diagnostics
npx expo-doctor -
Clear caches and reinstall
npx expo start --clear rm -rf node_modules .expo -
Reinstall dependencies
Housekeeping
- If using Expo SDK 54 or later, ensure react-native-worklets is installed — this is required for react-native-reanimated to work.
- Delete sdkVersion from
app.jsonto 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 entirely
- If the metro.config.js only contains expo defaults, delete the file entirely
Diagnostics
Run expo-doctor to identify issues:
npx expo-doctor
This checks for:
- Incompatible dependency versions
- Deprecated packages
- Configuration issues
- Native module conflicts
Common Upgrade Issues
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 |
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
If upgrading requires native changes:
npx expo prebuild --clean
This regenerates the ios and android directories.
EAS Build After Upgrade
Update your EAS build:
eas build --platform ios
eas build --platform android
Troubleshooting
Metro Cache Issues
npx expo start --clear
Node Modules Issues
rm -rf node_modules
npm install
npx expo install --fix
Pods Issues (iOS)
cd ios && pod install --repo-update && cd ..
Gradle Issues (Android)
cd android && ./gradlew clean && cd ..
Checking Compatibility
Before upgrading, check if your dependencies support the new SDK:
npx expo install --check
This shows which packages need updates without making changes.
Using Expo Canary
Canary releases provide early access to upcoming SDK features but they are unstable and do not run in Expo Go.
To try the latest canary SDK:
npx expo install expo@canary
npx expo install --fix
Build a custom dev client.
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 and later.
- use postcss.config.mjs in SDK 53 and later.
Metro
Remove redundant metro config options:
- resolver.unstable_enablePackageExports is enabled by default in SDK 53 and later.
experimentalImportSupportis enabled by default in SDK 54.EXPO_USE_FAST_RESOLVER=1is removed in SDK 54 and later.
Score
Total Score
Based on repository quality metrics
SKILL.mdファイルが含まれている
ライセンスが設定されている
100文字以上の説明がある
GitHub Stars 100以上
1ヶ月以内に更新
10回以上フォークされている
オープンIssueが50未満
プログラミング言語が設定されている
1つ以上のタグが設定されている
Reviews
Reviews coming soon

