Inception
React Native was born during an internal Facebook hackathon in 2013:
In the essence of Facebook’s hacker culture, React Native started as a hackathon project in the summer of 2013.
(Excerpt from In the beginning: React Native’s roots)

Starting with React
With the large-scale application of React, Facebook increasingly felt the advantages of React and web technologies, hoping that Native development could also Move fast like the Web:
-
Rapid iteration cycle: The Web can have two releases a day, resulting in a shorter product iteration cycle.
-
Immediate testing feedback: Web releases instantly reach users, allowing for immediate results from experiments like A/B tests, accelerating product evolution.
-
Rapid development velocity: Changes take effect simply by refreshing the browser, without waiting to recompile the App.
To achieve this goal, Facebook tried three approaches:
-
WebView: Native provides a Webview container, and business logic is developed using web technologies. The advantage is bringing over the entire web development experience, but constrained by web technologies, the experience cannot compare with Native. It was eventually abandoned because performance and scalability did not meet expectations.
-
Porting React to native: Porting React to a Native implementation—a crazy idea. The iOS version (ComponentKit) was completed in 2015, and the Android version (Litho) was launched in 2017. This allowed Native development to also possess various advantages of React, such as UI predictability and Flexbox layout. However, it failed to meet the original intention of improving development efficiency, as any minor change still required recompilation. Furthermore, this system was not interoperable with Web React, making it impossible to utilize powerful tools built on React within the web ecosystem (such as Relay).
-
Scripting native: Calling Native APIs through JavaScript. It seemed like a perfect solution: it possessed the rapid iteration capability of web development, was not limited to web technologies, and did not depart from the JavaScript ecosystem.
And React Native is the final outcome of this third approach.
2015
-
React.js Conf Round-up 2015: First introduction of React Native. For presentation videos, see React.js Conf 2015 Keynote - Introducing React Native and React.js Conf 2015 Keynote 2 - A Deep Dive into React Native.
-
F8 2015: New Open Source Tools for Mobile Developers: React Native was announced and open-sourced. For the presentation video, see F8 2015 - React Native & Relay: Bringing Modern Web Techniques to Mobile.
-
React Native: Bringing modern web techniques to mobile: The first official introductory article was published, supporting only iOS at the time.
-
React Native for Android: How we built the first cross-platform React Native app: Announced that React Native supported Android.
At the React.js Conf in January 2015, this internal project was announced for the first time, and it was officially open-sourced at the F8 Conference in May.
Initially, it only supported iOS, but Android support was added in September of the same year.
2016
-
Introducing Hot Reloading: Support for Hot Reloading.
-
Dive into React Native performance: Comprehensive performance improvements.
-
React Native on the Universal Windows Platform: Entered the Windows ecosystem.
-
Samsung Committed to Bringing React Native to Tizen: Entered Samsung's IoT ecosystem (Tizen OS).
-
Right-to-Left Layout Support For React Native Apps: Support for RTL layouts.
-
0.36: Headless JS, the Keyboard API, & more: Released version 0.36, supporting background tasks, keyboard operations, etc.
-
Introducing Button, Faster Installs with Yarn, and a Public Roadmap: Released version 0.37, adding the
<Button />component and Yarn support. -
Easier Upgrades Thanks to Git: Simplified the version upgrade process.
The support for Microsoft UWP and Samsung Tizen meant that React Native moved from mobile devices to PCs (Win 10), game consoles (Xbox One), smartbands (Gear Fit 2), smart TVs (SUHD), and even holographic glasses (HoloLens).
In addition, development experience, performance, and API capabilities were continuously improved through rapid iterations.
2017
-
A Monthly Release Cadence: Releasing December and January RC: Planned for monthly releases.
-
Using Native Driver for Animated: Further improvements in animation performance and usability.
-
Better List Views in React Native: Provided more user-friendly support for List Views.
-
Introducing Create React Native App: Launched the official scaffolding tool Create React Native App.
-
React Native Monthly #1: Held regular monthly meetings with 8 teams, including Airbnb and Microsoft, which lasted for half a year.
-
React Native Performance in Marketplace: Introduced Facebook's performance practices on its main React Native app (Marketplace).
Established a monthly iteration plan and regularly held monthly meetings involving community teams. Performance remained a crucial direction, with significant updates to animations and List Views involving performance optimization.
Additionally, explorations into build-time performance optimization began, such as Prepack, aiming to drastically reduce the initialization time of the React Native core:
We plan to bring the cost of the React Native bridge close to zero via projects like Prepack and more build time processing.
2018
-
Implementing Twitter’s App Loading Animation in React Native: Used for Twitter's loading animation.
-
Using AWS with React Native: Integration with the Amazon cloud computing ecosystem.
-
Building For React Native: Support for InputAccessoryView.
-
Using TypeScript with React Native: Community-provided TypeScript support.
-
State of React Native 2018: React Native was widely used inside and outside Facebook, and the core team began architectural upgrades.
-
Releasing 0.56: Released version 0.56, upgrading dependency versions such as Babel, Android SDK, Xcode, and Flow.
-
Introducing new iOS WebViews: iOS switched to WKWebView.
-
Open Source Roadmap: Planned to slim down core modules and open-source some of Facebook's internal infrastructure.
-
The State of the React Native Community in 2018: Established management standards for the open-source community.
To better support Native & React Native hybrid apps, the core team launched an architecture upgrade plan (Fabric), which included major changes such as refactoring the threading model, supporting React async rendering capabilities, and simplifying the React Native core. At the same time, Facebook also planned to open-source some infrastructure, including JSI; see Open Sourcing Internals and Updated Tooling for details.
On the other hand, the management of the open-source community also became more formalized, including version management, RFCs, communication, and discussions.
2019
-
Releasing React Native 0.59: Released version 0.59, supporting React Hooks, upgrading Android JSC, and continuing the core module slimming plan.
-
Mobile Innovation with React Native, ComponentKit, and Litho: Shared Facebook's mobile technology stack (React Native + ComponentKit and Litho).
-
Meet Hermes, a new JavaScript Engine optimized for React Native: Ushered in JS engine-level performance improvements; see Hermes: An open source JavaScript engine optimized for mobile apps, starting with React Native.
With the participation of the open-source community, the architecture upgrade plan progressed rapidly. Some non-core modules were detached from the React Native Core to be maintained independently, with positive results:
These modules are getting more support than they ever did within React Native, showing that this is a great step for the community.
At the same time, performance optimization has never ceased, even switching to Hermes as the JS engine for the Android platform (previously, Android also used JavaScriptCore) to seek further performance improvements:
Hermes is an open-source JavaScript engine optimized for running React Native apps on Android. For many apps, simply enabling Hermes will result in improved start-up time, decreased memory usage, and smaller app size.
No comments yet. Be the first to share your thoughts.