Recently, I migrated a production React Native application from the Legacy Architecture to the New Architecture (Fabric + TurboModules + JSI).
What looked like a simple configuration change:
newArchEnabled=true
turned into a journey of debugging navigation issues, Fabric rendering glitches, Reanimated crashes, and third-party library incompatibilities.
Key Lessons
β Audit every dependency before enabling New Architecture.
β Upgrade React Navigation, Reanimated, and Gesture Handler first.
β Avoid navigation calls during render; use useEffect.
β Test on real devices, not just simulators.
β Enable New Architecture gradually in staging before production.
Issues We Faced
Cannot apply update because surface was stopped
Surface already running
Fabric layout inconsistencies
Reanimated worklet crashes
Native module compatibility issues
What Improved?
Faster app startup
Smoother animations
Better list performance
Reduced JS β Native communication overhead
Final Thought
The New Architecture is not just an upgradeβit's a platform migration. The effort is worth it, but plan carefully, audit dependencies, and migrate incrementally. React Native's future is built around Fabric, TurboModules, and JSI.
Top comments (0)