A greenfield app is built from scratch with React Native; a brownfield app uses it for selected views or flows in an existing native app. Tormey says brownfield work adds native language and platform knowledge, toolchains, and the effort of learning an inherited codebase. He estimates it can initially be two to three times harder than a greenfield project.
React Native Brownfield: Lessons from the Trenches
Speaker
Harry Tormey, a React Native engineer, explains brownfield React Native strategy at a Callstack conference, drawing on client work for Keepsafe.
Tormey frames React Native as an infrastructure investment: learning it costs time, so it should eventually save time or speed development. Brownfield integration is more suitable for larger organizations with multiple mobile teams and an existing React web team, where learning and implementation can be shared. He recommends starting with a simple, measurable project to build confidence and trust, while accounting for organizational concerns as well as technical ones.
Tormey describes an open-source example based on Keepsafe’s subscription upsell screens, which the company wanted to update experiments for using CodePush. Native iOS code launches and hosts the React Native screen; an event bridge sends purchase and dismissal events back to native handlers. A JSON configuration maps screen names to default props, while native code handles existing systems such as payments and navigation.
Tormey’s proposed workflow has native and React Native engineers agree on stub events after reviewing designs, then build their parts in parallel and iterate together with product and design. Once integrated, the team checks whether native code changed. CodePush can ship screens immediately when no native changes are needed; native changes must wait for an iOS or Android app release.
The Keepsafe project used React Native Event Bridge so external web or React Native engineers could build screens without access to, or deep knowledge of, the native code. Tormey says this approach suited that project’s constraints, but is not the only way to integrate React Native. He points to Artsy’s open-source work and Pinterest’s brownfield materials as further examples.
Takeaways
- Treat brownfield React Native as an infrastructure investment and weigh its learning cost against the development speed it may return.
- Choose an initial feature that is simple and measurable, then use its results to build organizational trust.
- Plan for native expertise: integration involves platform APIs, toolchains, and the existing app’s architecture.
- Define native and JavaScript events and data contracts so teams can develop their parts in parallel.
- Check for native changes before release planning, since CodePush cannot deliver those changes.
Mentioned in this talk
Search inside this talk
What was claimed 7
- featureReact Native: Can produce iOS and Android applications from a single codebase with minimal changes
“take a single codebase and have it produce an iOS and an Android application with minimal changes”
YouTube Unverified1 source· Talk
- metricReact Native: Frontend engineers may be two to three times as productive in theory
“In theory, React Native allows your frontend engineers to be two to three times as productive”
YouTube Unverified1 source· Talk
- metricbrownfield development: Initially at least two to three times as hard as a greenfield React Native application
“a brownfield integration is probably going to be at least two to three times as hard”
YouTube Unverified1 source· Talk
- usesto ship new experiments without submitting a new app to the App Store
“use CodePush to ship new experiments without submitting a new app to the App Store”
YouTube Unverified1 source· Talk
- usesKeepsafe uses React Nativefor subscription upsell screens
“Keepsafe wanted to use React Native to power the subscription upsell screens”
YouTube Unverified1 source· Talk
- feature
Amazon EventBridge: Simplifies bridging React Native events to native code in an existing application“it simplifies bridging React Native events to native code in an existing application”
YouTube Unverified1 source· Talk
- featureCodePush: Does not allow over-the-air updates for native changes
“CodePush doesn't allow over-the-air updates for native changes”
YouTube Unverified1 source· Talk





