| name | react-native-migration-0.79.x-to-latest |
| description | This skill provides a migration guide for react native from 0.79.x to latest 0.83.x version. |
React Native 0.79.x to 0.83.x Migration Assistant
Description
Expert guidance for migrating React Native projects from version 0.79.x to 0.83.x. This skill provides automated detection of breaking changes, step-by-step migration assistance, code fixes, and validation specific to this version upgrade.
When to Use
Use this skill when:
- Upgrading React Native from 0.79.x to 0.83.x (or minor/patch versions within these ranges)
- Encountering build errors after RN upgrade
- Updating Android native modules for RN 0.83.x compatibility
- Migrating MMKV storage code
- Refactoring MainApplication.kt for new architecture
- Validating migration completeness
Triggers
- "migrate react native to 0.83"
- "upgrade from RN 0.79"
- "fix RN 0.83 build errors"
- "update native modules for RN 0.83"
- "MainApplication.kt errors after upgrade"
- "MMKV migration"
Migration Workflow
When invoked, follow this systematic approach:
Phase 1: Pre-Migration Analysis
-
Detect Current Version
grep "react-native" package.json
-
Scan for Breaking Change Patterns
- Android native modules using
currentActivity
- Android modules with
onNewIntent(Intent?)
- MainApplication.kt structure
- MMKV usage (
new MMKV(), .delete())
- Dependency versions
-
Create Migration Checklist
Use TodoWrite to track:
Phase 2: Automated Detection
Run parallel searches to find affected code:
grep -r "currentActivity" android/app/src/main/java
grep -r "onNewIntent(intent: Intent?)" android/app/src/main/java
grep -r "new MMKV\|storage\.delete" src/
find android/app/src/main/java -name "MainApplication.kt"
Phase 3: Guided Fixes
For each breaking change detected, provide:
3.1 Android Native Module - currentActivity Fix
Detection Pattern:
val activity = currentActivity
val activity: Activity? = currentActivity
Required Fix:
val activity: Activity? = reactApplicationContext.currentActivity
Action:
- Use Edit tool to replace pattern
- IMPORTANT: Add
import android.app.Activity at the top of the file if not present
- Files affected:
*Module.kt
- In some modules, you may need to explicitly add the type annotation:
val activity: Activity? = ...
3.2 Android Native Module - onNewIntent Fix
Detection Pattern:
override fun onNewIntent(intent: Intent?) {
Required Fix:
override fun onNewIntent(intent: Intent) {
}
Action:
- Use Edit tool to remove
? nullable operator
- Update implementation to handle non-null Intent
- If the method body was empty or had
= Unit, replace with a proper implementation or comment
3.3 MainApplication.kt Refactoring
Detection: Check if file contains ReactNativeHost or DefaultReactNativeHost
Required Changes:
- Remove
reactNativeHost property
- Update
reactHost to use lazy initialization
- Replace
SoLoader.init() with loadReactNative(this)
- Update imports
Template:
import com.facebook.react.PackageList
import com.facebook.react.ReactApplication
import com.facebook.react.ReactHost
import com.facebook.react.ReactNativeApplicationEntryPoint.loadReactNative
import com.facebook.react.defaults.DefaultReactHost.getDefaultReactHost
class MainApplication : Application(), ReactApplication {
override val reactHost: ReactHost by lazy {
getDefaultReactHost(
context = applicationContext,
packageList =
PackageList(this).packages.apply {
add(YourCustomPackage())
},
)
}
override fun onCreate() {
super.onCreate()
loadReactNative(this)
}
}
3.4 MMKV Storage Migration
Detection Patterns:
import { MMKV } from 'react-native-mmkv'
new MMKV({
storage.delete(key)
Required Fixes:
import { createMMKV } from 'react-native-mmkv'
createMMKV({
storage.remove(key)
Action:
- Use Edit tool for each occurrence
- Typically affects:
src/utils/storage.ts
Phase 4: Dependency Updates
Provide exact npm commands:
npm install react@19.2.0 react-native@0.83.0
npm install react-native-mmkv@4.1.0
npm install @react-native-async-storage/async-storage@2.2.0
npm install react-native-gesture-handler@2.30.0
npm install react-native-reanimated@4.2.1
npm install react-native-safe-area-context@5.6.2
npm install react-native-svg@15.15.1
npm install react-native-screens@4.19.0
npm install react-native-svg-transformer@1.5.2
npm install react-native-customui@2.2.6
npm install react-native-device-info@15.0.1
npm install react-native-nitro-modules@0.31.10
npm install react-native-nitro-sound@0.2.10
npm install react-native-otp-entry@1.8.5
npm install react-native-worklets@0.7.1
npm install @react-native-firebase/app@23.7.0
npm install @react-native-firebase/analytics@23.7.0
npm install @react-native-firebase/auth@23.7.0
npm install @react-native-firebase/crashlytics@23.7.0
npm install @react-native-firebase/installations@23.7.0
npm install @react-native-firebase/messaging@23.7.0
npm install @react-navigation/native@7.1.26
npm install @react-navigation/bottom-tabs@7.9.0
npm install @react-navigation/native-stack@7.9.0
npm install @react-navigation/stack@7.6.13
npm install @react-native-google-signin/google-signin@16.0.0
npm install @tanstack/react-query@5.90.12
npm install react-native-video@6.18.0
npm install socket.io-client@4.8.3
npm install --save-dev @react-native-community/cli@20.0.0
npm install --save-dev @react-native-community/cli-platform-android@20.0.0
npm install --save-dev @react-native-community/cli-platform-ios@20.0.0
npm install --save-dev @react-native/babel-preset@0.83.0
npm install --save-dev @react-native/metro-config@0.83.0
npm install --save-dev @types/react@19.2.0
npm install --save-dev react-test-renderer@19.2.0
npm install --save-dev jest@29.2.1
Phase 4.1: Node.js Version Check
React Native 0.83.0 requires Node.js >= 20. Verify your Node version:
node --version
If you need to upgrade Node.js, use nvm or your preferred Node version manager.
Phase 5: Clean Build
Execute build cleanup:
rm -rf node_modules package-lock.json
npm install
cd android && ./gradlew clean && cd ..
cd ios && rm -rf Pods Podfile.lock && pod install && cd ..
npx react-native start --reset-cache
Phase 6: Validation
Run validation checks:
-
Build Validation
npm run android
npm run ios
-
Code Pattern Validation
grep -r "currentActivity[^.]" android/app/src/main/java
grep -r "Intent?" android/app/src/main/java
grep -r "new MMKV" src/
grep -r "storage\.delete" src/
grep -r "ReactNativeHost" android/
grep -r "SoLoader\.init" android/
-
Functional Testing Checklist
Phase 7: Documentation
After successful migration:
- Update CHANGELOG (if exists)
- Document custom changes (if any project-specific modifications were needed)
- Reference main migration guide:
docs/solutions/migration-guides/react-native-0.79.x-to-0.83.x.md
Common Issues & Solutions
Issue: "Cannot find symbol: currentActivity"
Quick Fix:
currentActivity → reactApplicationContext.currentActivity
Issue: "Type mismatch: onNewIntent"
Quick Fix:
override fun onNewIntent(intent: Intent?) { }
↓
override fun onNewIntent(intent: Intent) { }
Issue: "Property 'delete' does not exist on type 'MMKV'"
Quick Fix:
storage.delete(key) → storage.remove(key)
Issue: "Cannot resolve symbol 'ReactNativeHost'"
Quick Fix:
Refactor entire MainApplication.kt using the template in Phase 3.3
Files Typically Modified
Track these files during migration:
Android Native Code:
android/app/src/main/java/*/MainApplication.kt (major refactoring)
android/app/src/main/java/*/*Module.kt (all custom modules)
JavaScript/TypeScript:
src/utils/storage.ts (MMKV changes)
- Any file directly using MMKV
Configuration:
package.json (dependency versions)
package-lock.json (regenerated)
Rollback Strategy
If migration fails:
git checkout HEAD -- package.json package-lock.json android/ ios/
rm -rf node_modules
npm install
cd android && ./gradlew clean && cd ..
npx react-native start --reset-cache
Success Criteria
Migration is complete when:
✅ All breaking change patterns have been fixed
✅ App builds successfully on Android
✅ App builds successfully on iOS
✅ No runtime crashes on launch
✅ Storage operations work correctly
✅ All native modules function properly
✅ No deprecated API warnings in console
✅ Tests pass
Additional Resources
Reference the comprehensive migration guide:
- Location:
docs/solutions/migration-guides/react-native-0.79.x-to-0.83.x.md
- Contains: Detailed explanations, full code examples, testing strategy
External resources:
Execution Strategy
When user invokes this skill:
- Assess current state - Check if already on 0.83.x or migrating
- Create todo list - Track all migration phases
- Run automated detection - Find all breaking change patterns
- Present findings - Show user what needs to be fixed
- Execute fixes - Apply changes systematically with user approval
- Validate - Run all validation checks
- Document - Update any project-specific documentation
Always use TodoWrite to track progress and keep user informed of migration status.
Version Scope
This skill is optimized for:
- Source versions: React Native 0.79.0 through 0.79.x
- Target versions: React Native 0.83.0 through 0.83.x
- Compatibility: Minor and patch versions within these ranges
For migrations to/from other major versions, refer to official React Native upgrade guides.