rn-upgrade
npx skills add https://github.com/nielsmadan/agentic-coding --skill rn-upgrade
Agent 安装分布
Skill 文档
React Native Upgrade Command
You are tasked with upgrading a React Native application to the version specified in $ARGUMENTS (or the latest version if not specified).
Usage
/rn-upgrade 0.76
/rn-upgrade 0.75.4
/rn-upgrade # upgrades to latest stable
Instructions
-
Determine versions:
- Check the current React Native version in package.json
- If $ARGUMENTS is not specified, fetch the latest stable version from https://github.com/facebook/react-native/releases
- Record: current version = X, target version = Y
-
Research and validate:
- Fetch the release notes for the target version from https://github.com/facebook/react-native/releases/tag/v{target}
- Use
/research-onlineif release notes mention major changes (e.g., New Architecture default, Kotlin/Swift migration) - List any breaking changes that affect this project
-
Fetch the upgrade diff:
- Construct the diff URL:
https://raw.githubusercontent.com/react-native-community/rn-diff-purge/diffs/diffs/{current}..{target}.diff - Fetch and analyze the diff to understand all required changes
- If the diff is unavailable, fall back to the Upgrade Helper UI: https://react-native-community.github.io/upgrade-helper/?from={current}&to={target}
- Construct the diff URL:
-
Check dependency compatibility:
- List all third-party native modules from package.json
- For each critical dependency, check its GitHub repo releases/changelog for target RN version support:
- Firebase: https://github.com/invertase/react-native-firebase/releases
- Navigation: https://github.com/react-navigation/react-navigation/releases
- Reanimated: https://github.com/software-mansion/react-native-reanimated/releases
- Gesture Handler: https://github.com/software-mansion/react-native-gesture-handler/releases
- Custom native modules in the project
- Flag any library that hasn’t released a compatible version yet and recommend: pin, fork, or find alternative
-
Plan the upgrade:
- Create a task list with TaskCreate, broken into phases:
- Phase 1: Dependency updates (package.json)
- Phase 2: Android native changes (MainApplication, Gradle, gradle.properties)
- Phase 3: iOS native changes (AppDelegate, Podfile, Info.plist, .pbxproj)
- Phase 4: Library-specific migrations
- Phase 5: Install dependencies and pods
- Use EnterPlanMode to present the plan to the user for approval before making changes
- Create a task list with TaskCreate, broken into phases:
-
Execute the upgrade:
- Update package.json with new React Native and React versions
- Update all @react-native/* packages to match the target version
- Apply native code changes from the diff, preserving:
- Custom package names/bundle identifiers
- Third-party SDK integrations (e.g., Firebase, analytics, crash reporting)
- Custom build configurations
- Existing native modules
- Update Gradle wrapper if required by the diff
- Enable/configure New Architecture if required
- Install dependencies:
yarn install(ornpm install) - Install iOS pods:
cd ios && pod install
-
Important considerations:
- ALWAYS preserve custom native code integrations
- Replace template package names (e.g., com.helloworld) with the project’s actual package names
- Check for react-native-fast-image compatibility (may need @d11/react-native-fast-image fork)
- Update related dependencies if needed (e.g., react-native-bootsplash, react-native-safe-area-context)
- Never skip steps without user confirmation
-
Post-upgrade checklist:
- Provide a testing checklist including:
- Clean builds for both platforms (
cd android && ./gradlew clean, Xcode clean build folder) - New Architecture verification (if enabled)
- Third-party integrations testing
- Navigation and animations
- Device-specific features (camera, location, notifications, etc.)
- Clean builds for both platforms (
- Provide a testing checklist including:
-
Documentation:
- Summarize all changes made
- List any manual follow-up actions required
- Note any dependencies that still need updates
- Provide links to relevant release notes
Examples
Single version upgrade:
/rn-upgrade 0.76
Upgrades from current version (e.g., 0.75.3) to 0.76. Fetches the diff from rn-diff-purge, checks dependency compatibility, plans changes, and executes after approval.
Multi-version jump:
/rn-upgrade 0.76
When current version is 0.73 or older, the skill upgrades incrementally: 0.73 -> 0.74 -> 0.75 -> 0.76, one major version at a time, validating builds between each jump.
Troubleshooting
| Problem | Solution |
|---|---|
pod install fails with version conflicts |
Run cd ios && pod repo update && pod install. If still failing, delete Podfile.lock and Pods/ then retry. |
| Gradle build fails after upgrade | Clear caches: cd android && ./gradlew clean. Check that gradle-wrapper.properties matches the version from the diff. |
| Metro bundler can’t resolve modules | Clear Metro cache: npx react-native start --reset-cache. Also delete node_modules and reinstall. |
| Xcode build fails with “framework not found” | Run cd ios && pod deintegrate && pod install. If using use_frameworks!, check compatibility with native modules. |
| New Architecture bridge errors | Verify all native modules support the New Architecture. Check newArchEnabled in gradle.properties (Android) and Podfile flags (iOS). |
| Diff URL returns 404 | The exact patch version may not exist in rn-diff-purge. Use the nearest available version or the Upgrade Helper UI. |
Guidelines
- Use the manual upgrade approach with diff analysis (not
react-native upgradeCLI) - Upgrade incrementally (one major version at a time) when jumping multiple versions
- Enable New Architecture in current version before upgrading if it’s required in target
- Clear all caches after upgrade (Metro, Gradle, Pods, Derived Data)
- Test thoroughly on both iOS and Android before considering upgrade complete
Resources
- Upgrade Helper: https://react-native-community.github.io/upgrade-helper/
- RN Diff Purge: https://github.com/react-native-community/rn-diff-purge
- React Native Docs: https://reactnative.dev/docs/upgrading
- React Native Releases: https://github.com/facebook/react-native/releases
Start by determining the current and target versions, then proceed with research and planning before making any changes.