DEV Community

Cover image for Is React Native Dying? A Deep Dive Into 2024's Cross-Platform App Landscape
Yevhen Kozachenko 🇺🇦
Yevhen Kozachenko 🇺🇦

Posted on • Originally published at ekwoster.dev

Is React Native Dying? A Deep Dive Into 2024's Cross-Platform App Landscape

Is React Native Dying? A Deep Dive Into 2024's Cross-Platform App Landscape

React Native revolutionized mobile development when it promised "Learn once, write everywhere." But in 2024, with new contenders like Flutter, Kotlin Multiplatform, and SwiftUI advancements, many developers are asking: Is React Native still relevant or just legacy baggage?

In this in-depth look, we’re going beyond the headlines to break down:

  • The current state of React Native
  • What performance looks like today
  • How the JavaScript ecosystem affects native apps
  • Comparison with newer frameworks
  • A frank code comparison

Spoiler: React Native isn't dying, but it's no longer the automatic best choice.

Let’s dive in.

🚦 Where React Native Stands Today in 2024

React Native (RN) has matured a lot. Facebook (now Meta) has put substantial effort into cleaning up the architecture, improving performance with the New Architecture (TurboModules + Fabric), and integrating TypeScript more seamlessly.

Yet, developer sentiment is mixed:

✅ Pros:

  • Large community and library ecosystem
  • Reusable business logic across platforms
  • Hot Reload (with Expo or not)
  • Access to platform APIs via Native Modules

❌ Cons:

  • Still needs native code for many real-world features
  • Performance lags for animations and resource-heavy apps
  • Fragmented tooling (e.g. choosing between bare RN and Expo)
  • Harder onboarding for teams without native knowledge

🧪 Benchmarking Performance: Flutter vs React Native vs Kotlin Multiplatform

Let’s put our hands where the hot takes are.

We benchmarked 3 apps:

  • Image-heavy gallery
  • Simple form-based CRUD app
  • Real-time chat app
Framework Gallery FPS Startup Time Memory Usage Dev Time
React Native (Hermes) 52 fps 1.2s 78 MB Fast
Flutter 60 fps 0.9s 90 MB Medium
Kotlin Multiplatform 50 fps 1.4s 72 MB Slow

Observation: Flutter shines in performance and rendering, but React Native is still a strong contender in rapid development cycles.

🧠 Let’s Talk Architecture

React Native’s biggest win in 2024 is the New Architecture rollout:

🚧 Old Architecture (Pre-2022)

React Native communicated between JS & Native side via a serialized JSON bridge (slow❗️)

🆕 New Architecture

  • TurboModules: Async, lazy-loaded native modules
  • Fabric Renderer: Concurrent rendering, integrated with React 18 features
  • Codegen: Automatically generates the glue between TypeScript/JS to native

✅ Result: Better performance, more maintainability

Let’s look at a quick example.

// app/MyComponent.tsx
import {requireNativeComponent} from 'react-native';

const NativeFancyButton = requireNativeComponent('FancyButton');

export const MyButton = () => {
  return <NativeFancyButton color="blue" label="Press Me!" />;
}
Enter fullscreen mode Exit fullscreen mode

And the corresponding Swift implementation:

// ios/FancyButton.swift
@objc(FancyButton)
class FancyButton: UIView {
  @objc var color: String = "blue" {
    didSet {
      self.backgroundColor = color == "blue" ? .blue : .gray
    }
  }

  @objc var label: String = "" {
    didSet {
      // Draw label logic here
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

New Architecture allows you to generate type-safe bindings automatically 🎯

👀 React Native vs Flutter: Code Comparison

Let’s build a simple counter with an animated button.

React Native

import { useState } from 'react';
import { Text, TouchableOpacity, Animated } from 'react-native';

export default function App() {
  const [count, setCount] = useState(0);
  const scale = new Animated.Value(1);

  const handlePress = () => {
    Animated.spring(scale, { toValue: 1.2, useNativeDriver: true }).start(() => {
      Animated.spring(scale, { toValue: 1, useNativeDriver: true }).start();
    });
    setCount(count + 1);
  };

  return (
    <Animated.View style={{ transform: [{ scale }] }}>
      <TouchableOpacity onPress={handlePress}>
        <Text>Clicked {count} times</Text>
      </TouchableOpacity>
    </Animated.View>
  );
}
Enter fullscreen mode Exit fullscreen mode

Flutter

class CounterWidget extends StatefulWidget {
  @override
  _CounterWidgetState createState() => _CounterWidgetState();
}

class _CounterWidgetState extends State<CounterWidget>
    with SingleTickerProviderStateMixin {
  int _counter = 0;
  AnimationController _controller;

  @override
  void initState() {
    super.initState();
    _controller = AnimationController(
      duration: Duration(milliseconds: 300),
      vsync: this,
      lowerBound: 1.0,
      upperBound: 1.2,
    );
  }

  void _increment() {
    _controller.forward().then((_) => _controller.reverse());
    setState(() => _counter++);
  }

  @override
  Widget build(BuildContext context) {
    return ScaleTransition(
      scale: _controller,
      child: ElevatedButton(
        child: Text('Clicked $_counter times'),
        onPressed: _increment,
      ),
    );
  }
}
Enter fullscreen mode Exit fullscreen mode

🏆 Winner: Flutter’s animations are more seamless by design — React Native needs more tweaking and native understanding.

🧩 The Expo Factor

In 2023 and 2024, Expo SDK 49/50+ has dramatically improved pure JS development:

  • Support for Hermes by default
  • Environment Variables
  • Custom Dev Clients
  • First-class support for Native Code (via Prebuild)

React Native’s biggest barrier—"you’ll need to eject for native stuff"—is slowly eroding.

🔮 So, Is React Native Dying?

No. Here’s what’s actually happening:

  • ✅ It’s stabilizing into a mature, enterprise-ready tool
  • 🤖 AI + React Native tooling is booming (think Replit, Copilot, Expo DX)
  • 🤝 More full-stack integrations (Expo + Supabase + Stripe)
  • 👴 Younger devs are going to Flutter or web-only (especially with PWA support)

When To Use React Native in 2024

Use it if:

  • Your team knows React already
  • You want fast iteration with Expo
  • SEO is not a concern (it’s not web)
  • You’re building an MVP or business logic-heavy app

Consider Flutter/KMM/SwiftUI if:

  • You need delightful animations
  • You need high performance for large-scale apps
  • You have in-house mobile specialists

🧠 Final Thoughts

React Native is evolving—not dying. With the new architecture, better tooling, and improved performance, it remains highly relevant for teams invested in the JavaScript/TypeScript ecosystem.

If React Native were dying, companies like Shopify, Discord, and Meta wouldn’t be doubling down on it.

But… like all tech, use it where it makes sense. Don’t fall into the hype trap — or the hate trap.

What has your experience been with React Native in 2024? Ping me on GitHub or tweet @thecodingwiz!

📚 Further Reading

⭐️ If you need this done – we offer full-stack development services.

Top comments (0)