The Origin Story of React Native

Luke @ The React Native Rewind3 min read


Congrats. You now build mobile apps with JavaScript. Brave move.

Let’s get one thing straight:


React Native isn’t just a framework — it’s an ecosystem.

A wild mix of open-source passion, corporate ambition, and the collective stubbornness of developers who refuse to pick between Swift and Kotlin.


Let’s zoom out and make sense of it — the history, the layers, and why sometimes things might feel “almost finished.”

Facebook’s “Just Ship It” Hackathon

Let’s rewind to 2015. Facebook’s mobile team is drowning. They’ve got iOS engineers writing in Objective-C, Android engineers slinging Java, and a web team living in React and JSX — all speaking different languages (literally and figuratively). Rewriting the same feature three times in different languages and paradigms.


So someone — maybe halfway through a slice of cafeteria pizza — asked the dangerous question:


“What if we just… ran JavaScript and rendered native components?”

Genius. Revolutionary. Also kind of a duct-tape solution.


The idea was simple: Learn once, write anywhere.

The reality? Write in JS, pray the bridge doesn’t explode (we’ll get more into the bridge below).

But it worked. Kind of. And thus, React Native Core was born — a minimalist toolkit that gives you just enough to build a screen… and not much else.

React Native doesn’t compile your JS into native code. It doesn’t magically turn View into UIView or android.view.View on the fly. Instead, it runs your JavaScript in a real JavaScript engine (JavaScriptCore on iOS, Hermes or V8 on Android), and then talks to actual native components through a message-passing bridge.

Before you grab your pitchforks and say, “That’s not how it works now!” — okay, yes, there’s a new architecture. But let’s first cover the when and why, and we’ll get to the new architecture soon enough.

You write:

And React Native:

1️⃣ Serialises that into a JSON-like batch: [{ "type": "createView", "id": 42, ... }]

2️⃣ Sends it over the bridge to the native side

3️⃣ Native UIManager creates a real UIView (iOS) or FrameLayout (Android)

4️⃣ Applies styles via native APIs

5️⃣ Renders actual pixels on screen

No WebView. No HTML. Real native widgets. That’s the magic.

That was also the bottleneck.

And also why memes like these are funny…

The Bridge and The Bottleneck

Let’s not sugarcoat it — the bridge is what makes your app drag. It’s a synchronous, serialised, single-lane toll road between JS and native. Every layout update, every animation tick, every touch event? It has to pay the toll — in JSON.

That’s three round trips just to render a coloured box with text. Now scale that to a FlatList with 100 items, each with an image, a button, and a gesture handler.

Result?

➡️ 16ms frames dropped like hot potatoes.

➡️ Scrolls that stutter like a bad Zoom call.

➡️ 300ms tap delay (hello, 2012).

➡️ Cold starts that make users reach for the back button or even close the app before it began.

And the kicker? The bridge is synchronous by default.

So, your JS thread freezes while waiting for native. Native freezes while waiting for JS. It’s a deadlock waiting to happen.

So, in 2018, Facebook stood on stage at React Conf and said:

“We’re rewriting React Native from the ground up.”

Crowd goes wild.

Me: “Finally.”

2024: “Where’s my bridge rewrite, Mark?”

Good news — it’s finally here. Opt-in by default in 0.74+, stable in 0.76+. The New Architecture doesn’t patch the bridge — it burns it down and builds a high-speed, concurrent superhighway. We won’t go full nerd-mode on JSI, TurboModules, and Fabric here (that’s a whole email series). But here’s the high-level vibe:

As of 0.82, the legacy architecture and its beloved bottleneck — the bridge — are gone. All new projects default to the New Architecture.

No JSON. No waiting. Native modules load lazily (Lazy loading means native modules only load when needed — not all at startup. Faster boot, less waste). Animations run on the UI thread, and layout happens in parallel—apps start in under 200 ms, 60-fps animations without JS sweat.

Scrolls that actually feel native. And a bridge?


What bridge?

The React Native Rewind SL

Calle GJ 11, Los Tablazos, Moraleda de Zafayona, Granada

18370, Spain

You received this email because you signed up on our website or made a purchase from us.

1 link in this issue

Sent by The React Native Rewind. Links that track readers or name the subscriber were removed from this copy; its images still load from the sender's own servers. If you publish this newsletter and want an issue corrected or removed, write to us.