An update on the New Architecture Rollout
Hi everyone, As previously announced:
2022 is going to be the year of the New Architecture in open source
If you still haven’t had the time to look into the New React Native Architecture (the Fabric Renderer and the TurboModule system), there is no better time to do it
We would like to share with the community some initiatives and material we prepared to make sure everyone is onboard on this endeavor.
The Working Group
Recently, we launched the React Native New Architecture Working Group on GitHub, a discussion only repository to coordinate and support the rollout of the New Architecture across the ecosystem.
We envision this working group as a space where the community can
To keep the discussion focused, we decided to have this working group
If you wish to join the conversation, you can fill in this form to either
As every discussion forum, we would like to stress once more the importance of being
The Migration Guide
After several rounds of review & feedback, we finally merged
This Migration Guide will show you
Moreover, we would like to remind you the brand-new Architecture section of our website. There you can find several in-depth articles and explanation of the React Native internals. Specifically, the Fabric section can help you understand the rendering pipeline in the New Architecture world.
Finally, please consider
Over the next months, we will look into refining and adding more documentation to help you further.
The New Architecture Template
React Native
This means that you will be able to try the New Architecture
In the next releases, we will keep on updating the template to make it even more streamlined and simple to use.
To enable the New Architecture on either platform, you can:
- On iOS, run
RCT_NEW_ARCH_ENABLED=1 bundle exec pod install
inside theios
folder. - On Android, set the
newArchEnabled
property totrue
byeither :- Changing the corresponding line inside the
android/gradle.properties
file. - Set an environment variable
ORG_GRADLE_PROJECT_newArchEnabled=true
- Invoke Gradle with
-PnewArchEnabled=true
- Changing the corresponding line inside the
Then you can yarn react-native run-android
or run-ios
and you’ll be running using Fabric and TurboModules enabled.
Please consider trying this new template, and report any bug or unexpected behavior that you might face. Over the last months we worked challenging to fix bugs and build failures that would have been
The 3rd-party Libraries Ecosystem
The community won't be able to migrate to the New Architecture without the full support of
We understand how this can be a monotonous process, and we understand the importance of supporting users on
If you’re a
If instead you’re a
Finally, we would like to give a shout out to Software Mansion for releasing a new version of react-native-screens
, which has support for both architectures. Moreover, they published a blog-post (Introducing Fabric to react-native-screens) where they
Releases
Work on the 0.68 pre-release has realized much of the improved release process we had defined last half.
We’re joyful to share that with 0.68 we were able to:
- Successfully onboard release work to an internal rotation. Much of this is supported by improved documentation on the release process which will reduce the bus factor of the release process.
- Initiated discussions with partners to support a Copilot rotation. We hope this effort will improve transparency of the process and inform our partners where to invest to support React Native releases and eco-system.
- Onboarded several Release Supporters and Testers from the community. We had put a call-out for help last half and so many folks stepped up! The feedback from our testers and supporters have
helped us fix crucial bugs and regressions, especially around the new architecture, for the upcoming release. Thank you to everyone who signed up and tested out the release!
With React Native 0.69 we will continue refining this process, ideally getting partners to provide earlier release signal and onboarding co-pilots. As always, any feedback is more than welcome. If you’d like to join as a release tester or supporter, please sign up here.
Towards Hermes as Default engine
One of the crucial point of the New Architecture Rollout is the adoption of the new JavaScript engine:
With the New React Native Architecture, we’re going to
Please note that we'll continue working with the community to make sure
To improve the stability of Hermes, we’re working towards changing the
This will allow us to ship a version of React Native, with a bundled JS engine that is
Moreover, this will
We will be sharing more on this matter in the coming months. In the meanwhile, feel free to join the discussion about it on the Working Group.
If you haven’t tried Hermes yet, now is the time to give it a go. And please make sure to flag any issues or blockers you might face.
With this, that’s a wrap.
I’d like to thank Andrei, Aleksandar, Dmitry, Eli, Luna, Héctor & Neil for reviewing this blog-post and providing valuable contributions to those efforts.
And looking forward to