WhoBuilt

React Native Brownfield: Lessons from the Trenches

Sep 14, 2018· 31 min· 481 views·Watch on YouTube

Speaker

Harry Tormey, a React Native engineer, explains brownfield React Native strategy at a Callstack conference, drawing on client work for Keepsafe.

What brownfield integration requires

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.

Deciding whether it is a good fit

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.

A Keepsafe integration example

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.

Team workflow and release constraints

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.

Why the bridge and other examples matter

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

  • feature
    React 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
  • metric
    React 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
  • metric
    brownfield 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
  • uses
    to 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
  • uses
    for 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
  • feature
    CodePush: 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

Related talks