We are excited to release a new version of React Native, 0.69.0. This version comes with several improvements for the New Architecture of React Native and new features: React 18 support & bundled Hermes. Read on to learn more!
We are delighted to share with you that React Native 0.69 is the first release to support React 18. React 18 has brought lots of improvements, like new hooks such as
useId. Additionally, React 18 includes new concurrency features such as
useTransition or full Suspense support.
On React Native 0.69, React 18 is enabled by default. However, if you have not migrated to the New Architecture, you will only be able to leverage the features that don't use concurrent rendering and concurrent features. The New Architecture has been built with concurrent rendering in mind but we cannot add that support for the old architecture.
You can learn more about the React 18 support in React Native here.
Before this release, Hermes and React Native were released separately. That led to confusion on which version of Hermes is compatible with which version of React Native. To remedy this issue, starting with React Native 0.69 we will be shipping a compatible version of Hermes alongside React Native. Making this change will make using Hermes in React Native much more stable.
Note that users on the New Architecture on Android will need to build Hermes from source. For building Hermes from source, Windows users will need to additionally follow these steps.
If you are interested to learn more about how React Native bundles Hermes works under the hood, you can check out the deep-dive documentation here.
We are continuing the roll-out of the New Architecture for both Android and iOS. If you have not migrated your app or library, yet, follow the steps here. You can also read the latest update on tools and resources for the New Architecture to learn more.
Highlights of 0.69
As mentioned above, the most important improvements in this release are centered around React 18 support and bundled Hermes. However, there have been other notable changes, including:
- Deprecating support for iOS/tvOS SDK 11.0, version 12.4+ is now required
- Better support for M1 users developing for Android
- Addition of the new
.xcode.envconfiguration file for more deterministically sourcing the node executable
- React Native now uses the latest status bar API from Android 11
- Support for C++17
hotkeysEnabledoption in the iOS debug menu
There have also been a few breaking changes:
- React Native CLI has been bumped to a new major version of 8.0:
unlinkcommands have been removed in the favour of autolinking
initCompathas been removed, use
- Removed deprecated
- Removed assets and hooks from
react-native.config.js– you'll need to remove these properties from your config
podspecPathwas removed from the iOS dependency config
--project-pathoption from a
- Changed iOS source directory detection from looking for an Xcode project to looking for a Podfile
- Support for
console.disableYellowBoxhas been dropped
- Already deprecated prop types have been removed (cdfddb4dad, 3e229f27bc, 10199b1581)
removeListener, deprecated since RN 0.65, was removed from Appearance
- If you were using
SegmentedComponentIOS, you will now need to replace it with the third-party library, for example segmented-control (235f168574)
And we upgraded some of our dependencies:
- Bump of AGP to 7.1.1 - we recommend sticking to this version in your apps
boostfor Android was updated to 1.76 to align with iOS
- Ruby was bumped to 2.7.5
- Direct metro dependencies have been upgraded to 0.70.1
You can check out the full list of changes in the changelog.
80 contributors with their 629 commits have helped to make this release possible - thanks everyone!
We are also thankful to the release testers, supporters, and everyone else who gave their feedback to ensure this release will be as stable as possible.