react-native-migration-0.79.x-to-latest

React Native 0.79.x to 0.83.x Migration Assistant

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "react-native-migration-0.79.x-to-latest" with this command: npx skills add twofourlabs/agent-docs/twofourlabs-agent-docs-react-native-migration-0-79-x-to-latest

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:

  • Dependency updates

  • Android native module fixes

  • MainApplication.kt refactoring

  • MMKV API updates

  • Clean build

  • Testing

Phase 2: Automated Detection

Run parallel searches to find affected code:

Find native modules with currentActivity

grep -r "currentActivity" android/app/src/main/java

Find onNewIntent with nullable Intent

grep -r "onNewIntent(intent: Intent?)" android/app/src/main/java

Find MMKV usage

grep -r "new MMKV|storage.delete" src/

Find MainApplication

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 // or 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) { // Not needed for this implementation }

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 custom packages add(YourCustomPackage()) // Note: RazorpayPackage() may need to be replaced with RazorpayCustomPackage() // depending on your razorpay-react-native version }, ) }

override fun onCreate() { super.onCreate() loadReactNative(this) // Your custom initialization } }

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:

Core dependencies

npm install react@19.2.0 react-native@0.83.0

Updated dependencies with verified versions

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

Updated Firebase dependencies (if using)

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

Updated navigation dependencies (if using)

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

Other updated dependencies

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

Dev dependencies

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 # Should be v20.x.x or higher

If you need to upgrade Node.js, use nvm or your preferred Node version manager.

Phase 5: Clean Build

Execute build cleanup:

Clean node_modules

rm -rf node_modules package-lock.json npm install

Clean Android

cd android && ./gradlew clean && cd ..

Clean iOS (if applicable)

cd ios && rm -rf Pods Podfile.lock && pod install && cd ..

Reset Metro cache

npx react-native start --reset-cache

Phase 6: Validation

Run validation checks:

Build Validation

Android

npm run android

iOS

npm run ios

Code Pattern Validation

Should return 0 results:

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

  • App launches without crashes

  • Storage read/write works (MMKV)

  • Native modules function correctly

  • Navigation works

  • Third-party integrations work

  • No console warnings

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:

// Replace all occurrences in native modules currentActivity → reactApplicationContext.currentActivity

Issue: "Type mismatch: onNewIntent"

Quick Fix:

// Remove nullable operator 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:

Revert all changes

git checkout HEAD -- package.json package-lock.json android/ ios/

Clean install

rm -rf node_modules npm install

Clean build

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:

  • React Native Upgrade Helper

  • React Native 0.83 Release Notes

  • MMKV v4 Migration

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.

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Automation

astrology-backend-integration

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

docs-submodule-manager

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

ai-integrated-api-backend

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

Posta

Post to Instagram, TikTok, LinkedIn, YouTube, X/Twitter, Facebook, Pinterest, Threads and Bluesky from your terminal. Create posts with AI-generated images a...

Registry SourceRecently Updated