WhoBuilt

Incremental React Native Adoption in iOS Apps

Aug 27, 2025· 6 min· 898 views·Watch on YouTube

Speaker

Burak, a brownfield enthusiast at Callstack, demonstrates adding React Native screens to an existing SwiftUI app.

Choose a native app to extend

Burak introduces Callstack’s book on incremental React Native adoption and sets up a demonstration using Apple’s SwiftUI About Me sample app. The goal is to add React Native screens to that existing app.

Create an RNEF project

Burak uses the React Native Enterprise Framework quick start and selects the iOS Brownfield option, which supports integrating React Native into existing native apps such as SwiftUI or UIKit apps. He creates a project called HelloBrownfield, chooses Metro, and selects both the iOS and Android brownfield plugins.

Package the React Native app

The new project’s App.tsx contains the screen that will appear in the native app. Burak runs `yarn package ios` to create three XCFramework files, then adds those frameworks to the Xcode project’s Frameworks, Libraries, and Embedded Content section.

Initialize React Native in SwiftUI

In the native app, Burak imports HelloBrownfieldReact, assigns ReactNativeBundle to ReactNativeBrownfield.shared.bundle, and starts React Native when the app launches. He then replaces the content of the Story view with ReactNativeView and sets its module name to HelloBrownfield.

Run the integrated screen

After the app builds, Burak opens the Story view and shows the React Native screen inside the SwiftUI app. He presents this as a way to adopt React Native incrementally within a native app.

Takeaways

  • RNEF’s brownfield setup can add React Native screens to an existing SwiftUI app.
  • Package the React Native project for iOS and add its XCFramework files in Xcode.
  • Start the React Native instance in the app, then place ReactNativeView where a screen is needed.
  • Choose Metro for a standard setup; RNEF also offers Re.Pack for super app use.

Mentioned in this talk

Search inside this talk

What was claimed 5

Related talks