React Native 0.78 Migration Guide: Lessons from a Real Production App
Every error and fix from migrating a production React Native app through 0.76 → 0.77.2 → 0.78, including React 19 compatibility issues.
Why I Migrated
React Native 0.78 brings React 19 support, the new architecture as default, and significant performance improvements. But the migration path is bumpy. Here's every issue I hit and how I fixed it.
Migration Path: 0.76 → 0.77.2 → 0.78
Don't jump versions. I tried going directly from 0.76 to 0.78 and hit a wall of incompatible changes. The safe path:
- 0.76 → 0.77.2 (bridge version)
- 0.77.2 → 0.78 (new architecture + React 19)
Use the React Native Upgrade Helper to see file-by-file diffs.
Bug #1: dependencyProvider AppDelegate Issue
After upgrading to 0.77, the iOS build failed with:
No visible @interface for 'RCTAppDelegate' declares the selector 'dependencyProvider'
Fix: The new architecture changed how dependencies are provided. Update your AppDelegate.mm:
// Remove the old dependencyProvider method
// Add the new bundler configuration in didFinishLaunchingWithOptions
Bug #2: cmake pod install Failure on iOS
[!] CDN: trunk URL couldn't be downloaded: cmake
Fix: This is a CocoaPods CDN issue, not a React Native issue. Clean and retry:
cd ios
pod deintegrate
pod cache clean --all
rm -rf Pods Podfile.lock
pod install --repo-update
React 19 Compatibility: Handling propTypes Deprecation
React 19 removes propTypes. If you have libraries using them:
# Find all propTypes usage
grep -r "propTypes" node_modules/ --include="*.js" -l | head -20
For each library, check if there's an updated version. For those that aren't updated, patch them:
npx patch-package library-name
Testing Checklist After Migration
- [ ] App launches on iOS simulator
- [ ] App launches on Android emulator
- [ ] Navigation works (deep links, back button)
- [ ] Push notifications received and handled
- [ ] All native modules functional
- [ ] Hermes enabled and working
- [ ] Release build succeeds
- [ ] E2E tests pass
Final Tips
- Upgrade one dependency at a time. Don't update React Native AND your navigation library simultaneously.
- Keep a migration branch. Don't pollute main with migration WIP.
- Test on real devices. Simulators hide hardware-specific issues.
Stuck on a React Native migration? I can help. Book a call.
Want more like this?
Get the free toolkit + occasional tips on React Native, Next.js, and AI.
No spam. Unsubscribe anytime.