DEV Community

Cover image for What's New in React Native 0.78: Performance, Native Integration, and React 19 Support 🚀
Babar Bilal
Babar Bilal

Posted on

What's New in React Native 0.78: Performance, Native Integration, and React 19 Support 🚀

React Native 0.78 is here, bringing a host of improvements that enhance performance, streamline development, and refine platform integration. This release makes updates faster, more efficient, and easier to adopt, ensuring a smoother developer experience.

In this article, we’ll break down the major updates, including React 19 support, the new React Compiler, performance enhancements, and native integration improvements for both Android and iOS.


🔥 React 19 Support

React Native 0.78 now fully supports React 19, which introduces several breaking changes and new features. Developers upgrading from React 18 should note the removal of deprecated APIs like propTypes and other outdated functionalities.

Key Features in React 19:

  • Actions – Handle async transitions with better management of data submission, pending states, optimistic updates, and error handling.
  • useActionState – A new hook for managing action states, wrapping functions into callable actions.
  • useOptimistic – Simplifies optimistic UI updates by managing state transitions during async requests.
  • use – Enables reading promises or contexts directly during render, suspending until resolution.
  • Ref as Props – Allows passing refs as props without using forwardRef, making component migration smoother.

⚡ React Compiler: Automatic Memoization

The React Compiler in React Native 0.78 optimizes performance by automatically applying memoization. Previously, developers had to manually use useMemo, useCallback, and React.memo. Now, React Compiler handles this optimization at build time.

Benefits:

Simpler Setup – Only one package required (previously, both a compiler and a runtime were needed).

Easier Configuration – Just install the compiler and configure the Babel plugin.

Improved Performance – Automatically memoizes values and components, reducing unnecessary re-computations.


📈 Performance & Release Improvements

  • Faster and Smaller Releases – Starting in 2025, React Native will release updates more frequently with fewer breaking changes, making upgrades smoother.
  • Opt-in JavaScript Logs in Metro – Reintroduces JS log streaming (removed in v0.77), allowing developers to enable it during transition:
  npx @react-native-community/cli start --client-logs
Enter fullscreen mode Exit fullscreen mode
  • Improved Debugging and Stability – Enhanced Metro bundler optimizations lead to faster startup times and reduced memory usage.

📱 Android: Native XML Drawable Support

React Native 0.78 introduces native support for Android XML drawables. This allows developers to use Android vector drawables, ensuring scalable, high-quality images with minimal impact on app size.

How to Use XML Drawables:

// Using require
<Image source={require('./img/my_icon.xml')} style={{ width: 40, height: 40 }} />

// Using import
import MyIcon from './img/my_icon.xml';
<Image source={MyIcon} style={{ width: 40, height: 40 }} />
Enter fullscreen mode Exit fullscreen mode

Benefits:

Crisp images at any resolution – No pixelation or blurriness.

Reduced app size – Eliminates the need for multiple resolution variants.

Optimized memory usage – Icons are reused efficiently.

Limitations:

Build-Time Reference Requirement – Drawables must be predefined, not dynamically loaded.

Metro Bundler Incompatibility – Requires a full app rebuild when modifying drawables.

Android-Only – For cross-platform support, use react-native-svg.


🍏 Improved iOS Brownfield Integration

For iOS developers, React Native 0.78 introduces RCTReactNativeFactory, making it easier to embed React Native views inside existing iOS apps. This enhancement simplifies modular adoption and allows multiple React Native instances within different view controllers.

How to Embed React Native in a ViewController

Step 1: Import Required Modules

import React
import React_RCTAppDelegate
Enter fullscreen mode Exit fullscreen mode

Step 2: Define the View Controller

public class ViewController {
  var reactNativeFactory: RCTReactNativeFactory?
  var reactNativeDelegate: ReactNativeDelegate?

  public func viewDidLoad() {
    super.viewDidLoad()
    reactNativeDelegate = ReactNativeDelegate()
    reactNativeFactory = RCTReactNativeFactory(delegate: reactNativeDelegate!)
    view = reactNativeFactory.rootViewFactory.view(withModuleName: "<your module name>")
  }
}
Enter fullscreen mode Exit fullscreen mode

Step 3: Define the Delegate

class ReactNativeDelegate: RCTDefaultReactNativeFactoryDelegate {
  override func sourceURL(for bridge: RCTBridge) -> URL? {
    self.bundleURL()
  }

  override func bundleURL() -> URL? {
    #if DEBUG
    return RCTBundleURLProvider.sharedSettings().jsBundleURL(forBundleRoot: "index")
    #else
    return Bundle.main.url(forResource: "main", withExtension: "jsbundle")
    #endif
  }
}
Enter fullscreen mode Exit fullscreen mode

With this setup, React Native instances can be dynamically created inside a ViewController, allowing for a seamless React Native integration into existing iOS apps.


🚀 Conclusion

React Native 0.78 marks a significant step forward, with improvements in performance, platform stability, and developer workflow. With full React 19 support, the new React Compiler, and enhanced native features for Android and iOS, this update makes React Native development more efficient and future-proof.

Key Takeaways:

✅ React 19 introduces powerful new hooks and removes deprecated APIs.

✅ The React Compiler automates memoization, improving performance.

✅ Native Android XML drawable support enhances image rendering quality.

✅ iOS RCTReactNativeFactory simplifies embedding React Native views in native apps.

✅ Faster and smaller releases in 2025 will make upgrades smoother.

As you upgrade, be mindful of breaking changes related to React 19 deprecations, React Compiler setup, and Metro log streaming. These updates may require some adjustments, but they result in a more optimized and stable development environment.

🚀 Happy coding with React Native 0.78! 🎉

🔗 Get Started Today!

👉 GitHub: Babar Bilal

Top comments (0)