Introduction
In a recent announcement for React Native v0.80, the maintainers confirmed the legacy NativeModule system is now officially frozen and will be removed entirely in a future version. This change makes migration to TurboModules critical for the React Native Firebase library, and this post outlines our plan, progress, and next steps.
What Makes This Migration So Complex?
React Native Firebase has a long history. Originally created over 9 years ago, its foundation is built on plain JavaScript, long before TypeScript became the industry standard. This history presents our biggest challenge, as TurboModule specifications must be written in TypeScript.
So, what makes this migration so complex? It comes down to three key reasons:
- Language Rewrite: We must convert the entire JavaScript codebase to TypeScript. To add to the complexity, the codebase also supports Flow, an alternative type-checker, meaning we are carefully translating between type systems.
- Sheer Scale: React Native Firebase isn’t a single library but a massive suite of packages. Each one requires a meticulous, package-by-package refactor.
- Native Integration: Every refactored package requires updating the native Android (Java/Kotlin) and iOS (Objective-C/Swift) code to integrate with the new TurboModule system.



