Integrating React Native in an Existing Application
Article Summary
Guillermo Orellana from Bumble's tech team walks through the real-world pain of integrating React Native into an existing Android app. Spoiler: the official docs won't save you.
This 2017 article from Bumble's engineering team documents the actual integration challenges when adding React Native to a mature Android application. Orellana shares the undocumented API issues, permission problems, and build configuration gotchas that blocked progress at every turn.
Key Takeaways
- 64-bit devices crash without explicit ABI filters excluding arm64-v8a and x86_64
- Marshmallow overlay permissions cause BadTokenException requiring manual Settings.ACTION_MANAGE_OVERLAY_PERMISSION
- Maven repo path must use $projectRoot not $projectDir to pull correct React Native version
- DevSettingsActivity declaration missing from manifest causes ActivityNotFoundException on debug menu shake
- Integration adds significant build complexity beyond what official documentation suggests
Integrating React Native into existing Android apps requires solving five critical undocumented issues around native libraries, permissions, Maven configuration, and manifest declarations.
About This Article
React Native v0.42.3 didn't have clear documentation for ReactInstanceManager lifecycle methods. Badoo's team had to figure out on their own how to implement onPause, onResume, onDestroy, and onActivityResult callbacks in their custom ReactActivity. Without these, the app would crash and leak memory.
Guillermo Orellana built a complete Activity implementation that handles ReactInstanceManager lifecycle events properly. The code implements DefaultHardwareBackBtnHandler and routes all Android lifecycle events through the React Native instance manager.
With proper lifecycle management in place, Badoo could launch a React Native Activity inside their existing native Android app. This proved that hybrid integration was possible, even though the API requirements weren't documented.