React Native v0.69 released
React Native 0.69 introduces support for React 18, improves performance, and adds new features like custom sounds for local notifications on iOS. Key changes include upgrading to Hermes 0.11, enhancing the Android Gradle plugin, and improving TypeScript definitions. Several bugs were fixed across iOS and Android platforms, including issues with animations, accessibility, and UI rendering. The release also includes some breaking changes and deprecations to be aware of when upgrading.
v0.69 on GitHub (npm)
Release blog post
Changelog
v0.69.12
Changed
- [0.69] Bump CLI to ^8.0.7, Metro to 0.70.4 (56807fadfa by @robhogan)
iOS specific
- [0.69] Use
Content-Location
header in bundle response as JS source URL (#37501) (367fc7ad52 by @robhogan)
Fixed
Android specific
- Prevent crash in runAnimationStep on OnePlus and Oppo devices (#37487) (4db7a10e25 by @hsource)
v0.69.11
Fixed
iOS specific
- Make 0.69 compatible with Xcode 15 (thanks to @AlexanderEggers for the commit in main) (37e8df1cdc)
v0.69.10
Fixed
Android specific
- Minimize EditText Spans 8/N: CustomStyleSpan (b384bb613b by @NickGerleman)
- Minimize EditText Spans 6/N: letterSpacing (5791cf1f7b by @NickGerleman)
- Minimize Spans 5/N: Strikethrough and Underline (0869ea29db by @NickGerleman)
- Minimize Spans 4/N: ReactForegroundColorSpan (8c9c8ba5ad by @NickGerleman)
- Minimize Spans 3/N: ReactBackgroundColorSpan (cc0ba57ea4 by @NickGerleman)
- Minimize Spans 1/N: Fix precedence (1743dd7ab4 by @NickGerleman)
- Fix measurement of uncontrolled TextInput after edit (8a0fe30591 by @NickGerleman)
v0.69.9
Changed
iOS specific
- Relax Ruby requirements (4e015c69d6 by @cipolleschi)
Fixed
iOS specific
- Fix React Codegen podspec to build on Xcode 14.3 (74ba411b55 by @cipolleschi)
- Blob data is no longer prematurely deallocated when using blob.slice (36cc71ab36 by @awinograd)
v0.69.8
Fixed
Android specific
- Mitigation for Samsung TextInput Hangs (be69c8b5a7 by @NickGerleman)
v0.69.7
Fixed
- Force dependencies resolution to minor series for 0.69 (c4da74c463 by @Titozzz)
v0.69.6
Changed
- Bump version of
promise
from 8.0.3 to 8.2.0, enablingPromise.allSettled
(951538c080 by @retyui)
Fixed
- Fix hermes profiler (81564c1a3d by @janicduplessis)
Android specific
- Correctly resolve classes with FindClass(..) (361b310bcc by @evancharlton)
iOS specific
- Fix the way the orientation events are published, to avoid false publish on orientation change when app changes state to inactive (7d42106d4c by @lbaldy)
- Fix React module build error with swift integration on new architecture mode (3afef3c167 by @Kudo)
v0.69.5
Changed
- Bump react-native-codegen to 0.69.2 (df3d52bfbf by @dmytrorykun)
Android specific
- Replaced reactnativeutilsjni with reactnativejni in the build process to reduce size (54a4fcbfdc by @SparshaSaha)
Fixed
- Codegen should ignore
.d.ts
files (0f0d52067c by @tido64)
v0.69.4
Changed
- Upgrade RN CLI to v8.0.4 (66c68c37ce by @thymikee)
Android specific
- Modified getDefaultJSExecutorFactory method (87cfd386cb by @KunalFarmah98)
v0.69.3
Fixed
iOS specific
- Fix React-bridging header not found for third party modules (fa2acc32d1 by @Kudo)
v0.69.2
Changed
- Set react-shallow-renderer v16.15.0 for react v18 compat (a39a7c453d by @mikehardy)
- Upgrade RN CLI to v8.0.3 (28cbd21d21 by @thymikee)
iOS specific
- Hermes pod: change logic to use the hermes tag to set the pod source correctly (46a9edc854 by @kelset)
- Fix the race condition when calling readAsDataURL after new Blob(blobs) (bd12e41188 by @wood1986)
- Make sure that Flipper pods are not installed when creating a release build (23accbf58d by @cipolleschi)
v0.69.1
Changed
iOS specific
- Make all Yoga headers public and add #ifdef __cplusplus (43f831b23c by @janicduplessis)
Fixed
- Use monotonic clock for performance.now() (114d31feee)
iOS specific
- Fix build for React-RCTText (4ea38e16bf by @ph4r05)
- Fix RCT-Folly build error when use_frameworks! and hermes are both enabled (79baca678a by @Kudo)
- Fix use_frameworks! for 0.69 (f97c6a5b49 by @Kudo)
v0.69.0
Breaking
- Support for
console.disableYellowBox
has been dropped - Already deprecated prop types have been removed (cdfddb4dad, 3e229f27bc, 10199b1581)
removeListener
, deprecated since RN0.65, was removed from Appearance- If you were using
SegmentedComponentIOS
, you will now need to move to the segmented-control library (235f168574)
Added
- Add Hermes scripts to package (004b8609d9 by @hramos)
- Expose scheduler through FabricUIManager (1730949e94 by @cortinico)
- Add event listeners to Scheduler (e51e19ecc1 by @cortinico)
- C++ TurboModule methods can return functions (c7380ba113 by @appden)
- Add support for devtools' profiler (fefa7b6ac8 by @jpporto)
- Add getAll function to FormData class for getting all parts containing that key. This is also available in web API. (d05a5d1551 by @matinzd)
- Automatic type conversions for C++ TurboModules (31f0796237 by @appden)
- New bridging API for JSI <-> C++ (30cb78e709 by @appden)
- Add asBool() method to JSI (603620b739 by @appden)
- CustomEvent and Event polyfills for React Native (6abbef1200 by @JoshuaGross)
- Implement Runtime.getHeapUsage for hermes chrome inspector (cff9590864 by @janicduplessis)
- Introduce ReactNativeFeatureFlags file to control FeatureFlags in React Native (33aba77456 by @mdvacca)
- Added fail-safe check to catch MissingWebViewPackage Exception (8c573d9336 by @Kunal-Airtel2022)
- Add ability to access properties with symbol keys through JSI (9010bfe457 by @neildhar)
- Allow color styles to be animated using native driver (201f355479 by @genkikondo)
- Make react-native depend on react-native-gradle-plugin (3346efb7d4 by @cortinico)
- Add RawEventTelemetryEventEmitter interface to ReactNativePrivateInterface (1f15a64028 by @JoshuaGross)
- Implement Runtime.getHeapUsage for hermes chrome inspector (3568a72987 by @janicduplessis)
- Add support for C++17 in OSS (c2e4ae39b8 by @sammy-SC)
Android specific
- Generate
Nullable
for optional objects and arrays in module codegen. (ffaa5d69bc) - Expose an API to enable Concurrent Root on Android (d7b64b8d4b by @cortinico)
- Add scrollEventThrottle prop support in Android (cf55fd587e by @ryancat)
- Accessibility announcement for list and grid in FlatList (dd6325bafe by @fabriziobertoglio1987)
- Introduce ModuleDataCleaner.cleanDataFromModules(ReactContext) (184dfb8f8b by @RSNara)
- Introduce ReactContext.getNativeModules() (b978308519 by @RSNara)
- MapBuffer implementation for JVM -> C++ communication (cf6f3b680b)
- Make links independently focusable by Talkback (7b5b114d57 by @fabriziobertoglio1987)
- Support animating text color with native driver (87cdb607e4 by @genkikondo)
- Added an experimental prop serialization path based on MapBuffer (cbcdaae2b5)
- Allow to setup a Gradle Enterprise instance via an external script (f11dcfaea1 by @cortinico)
- Support platform color with AnimatedColor (cb42049e0a by @genkikondo)
- Support running animations with AnimatedColor with native driver (3f49e6763e by @genkikondo)
- Add public API to ReactRootView to control if JS touch events are dispatched (0a517ae438 by @ryancat)
iOS specific
- Prepare a method in the AppDelegate to control the concurrentRoot. (8ac8439e0d by @cipolleschi)
hotkeysEnabled
property is added toRCTDevMenu
which allows enabling/disabling hotkeys that triggers developer menu popup (1a1a304ed2)- Allow modifying iOS image cache limits (61b013e7ad by @danilobuerger)
- Add dismissActionSheet method to ActionSheetIOS (64ebe5bbdd by @gabrieldonadel)
- Integrated the
accessibilityLanguage
prop to all the available components. The prop is available for any platform but it will work only on iOS. (7b05b091fd by @dgopsq) - Support running animations with AnimatedColor with native driver (49f3f47b1e by @genkikondo)
Changed
- Update direct Metro dependencies to 0.70.1 (b74e964e70, (c92b64b16a by @arushikesarwani94), (f89a0b765c by @robhogan)
- Upgrade RN CLI to v8.0.0 (0605880c9e, 1e0226f933, 24bb7f7380, 7dceb9b63c by @thymikee)
- Replace use-subscripton with use-sync-external-store (93b50be8c2 by @rickhanlonii)
- Expose UIManager from Scheduler (54db5f2012 by @cortinico)
- Optimized VirtualizedList context when used with nested lists (ceb0a54608 by @javache)
- Remove usage of std::string in EarlyJsErrorHandler. (30051b2c41 by @sshic)
eslint-config
: add support for ESLint 8 (864a8c11b2 by @wcandillon)eslint-config
: add support for TypeScript 4.5+ (199ac680c7 by @rnike)- Upgraded react-devtools-core dependency to 4.24.0 (a7a781ff4a)
- Avoid flattening nodes with event props (980c52de41)
- Type the argument of Animated.interpolate as read-only (6584304c10 by @motiz88)
- Update gradle-download-task to 5.0.1 to support concurrent downloads (a86cae7aac by @michel-kraemer)
- Logging a soft error when ReactRootView has an id other than -1 instead of crashing the app in hybrid apps (1ca2c24930 by @Kunal-Airtel2022)
- Upgrade to React 18 (41cbccd98d by @rickhanlonii)
Android specific
- Gradle: extend the algoritm to find hermesc paths (aeac6ab677 by @cortinico)
- Bump boost for Android to 1.76 to align with iOS (5cd6367f0b by @kelset)
- Adopt
MapBuffer
interface forReadableMapBuffer
(81e4249315) - Mark intent as nullable (5ffa0b0aa6 by @sshic)
- Use CMake to build ReactAndroid module (e3830ddffd)
- Update template/android and RN Tester to use
hermes-engine
from thereact-native
NPM package. (4d91f40fbd by @cortinico) - Build Hermes from Source (a3d9892ed9 by @cortinico)
- Rename field with default values for ReactConfig to DEFAULT_CONFIG (964e816752)
- Moved
com/react/facebook/uimanager/interfaces
files intocom/react/facebook/uimanager
to enable Kotlin build (b1a779392d) - Bump AGP to 7.1.0 and fix bundle inclusion in release mode (200488e87c by @gabrieldonadel)
- Release react-native-gradle-plugin 0.0.5 (42272211e4 by @cortinico)
- ViewPagerAndroid recommendation link. (7e8cce3d2d by @maaxg)
- Bump android Appcompat to 1.4.1 (6b61995647 by @gabrieldonadel)
- Remove
react-native-gradle-plugin
as a dependency from template's package.json (cd79317672 by @cortinico) - Use 2g as a default heap size for gradle builds (09e418ef8e)
- Use new StatusBar API on Android 11 (API 30)+ (50c8e973f0 by @ieatfood)
- Change static string to public (ab45138394 by @sshic)
iOS specific
- Use pre-built HermesC if available in current React Native release (644fe430fd by @hramos)
- When building Hermes from source, the filesystem will now be prepared using the new hermes-utils.js scripts, outside of CocoaPods (aaa01f7710 by @hramos)
- Expose scheduler through RCTSurfacePresenter (614aa86916 by @cortinico)
- Adopt UIGraphicsImageRenderer API (d70d7fd0b3 by @matrush)
- Build Hermes from source when Hermes is used (bb01b75637 by @hramos)
- Update CodeGen scripts to accept custom node executable (323db75c36 by @cipolleschi)
- Fixed the fallback behavior when the
.xcode.env
file is missing, actually using the oldfind-node-for-xcode.sh
script (705c6f57d6 by @cipolleschi) - Adding a link in a message for the users. (2c52131f5e by @cipolleschi)
- Bump ruby to 2.7.5 (2c87b7466e by @danilobuerger)
- This PR removes the
find-node.sh
scripts and replaces it with an.xcode.env
file that is sourced by the script phases that needs it. The.xcode.env
file is versioned: to customize a local environment, an unversioned.xcode.local.env
can be used. (0480f56c5b by @cipolleschi) - Update
PushNotificationIOS.checkPermissions
to include iOS 10+ notification settings. (17ecd2fb5b) - Enable SonarKit in React-Core when the configuration is
'Debug'
(b5343a6b0d by @cipolleschi) - When Hermes is enabled, the Hermes Engine will be built from source instead of using the pre-built
hermes-engine
CocoaPod. (12ad1fffe8 by @hramos) - Replaced folly::Optional with std::optional from C++17 in Objc module generator. (45e2941367 by @philIip)
- Removed methodName parameter that was used only for a warning message and moved the warning parameter to be calculated inline. (cfb11ca2f6)
- Fix the crash caused by nil partialLoadHandler (46bc521513)
- Synchronously render cached images (189c2c8958)
- Updated Flipper-Glog to 0.5.0.4 (cd60ffdb62)
- Add function to report early js errors (1804951595 by @sshic)
Deprecated
- Deprecate the use of
react-native/jest/preprocessor.js
by external projects (c1e9aa9a27 by @motiz88) - Deprecate the Promise.prototype.done method and log a warning when it's called in development. (35800962c1 by @motiz88)
iOS specific
- Deprecating support for iOS/tvOS SDK 11.0, 12.4+ is now required (5f2835b14d, (c71e6efbcd, (982ca30de0 by @philIip)
iOS specific
- Removed lint restricting
DynamicColorIOS
to only two properties (13b0b06522)
Fixed
- Remove unactionable warning about
codegenNativeComponent
when on 'Paper' (494b73cb33 by @tido64) - Fix typo in Value's constructor with a Symbol (a7a0f86a73 by @jpporto)
- Avoid full copy of large folly::dynamic objects by switching to std::move semantics (3f98c8e4c2 by @NikoAri)
- Fix performance issue on Animated.interpolate with big input range (f503b21203 by @Almouro)
- Update function spacing linting rules (8650220cf9 by @joeframbach)
- Add supportsFromJs and supportsToJs template variables (087624ccaf by @appden)
- The Array appended to FormData is transmitted as a string (d2e8e7d58e by @bang9)
- AppState.removeEventListener correctly removes listener for blur and focus events (9aab25ec53 by @AntoineDoubovetzky)
focus()
on TextInput to respect itseditable
state (8a5460ce80 by @vonovak)- Restore Windows build with RawPropsParser.cpp (2d64d1d693 by @TatianaKapos)
- Fix babel-plugin-codegen crash when export init is null (ae756647c9 by @janicduplessis)
- Fixed compilation warning due to
using namespace
being used as part of header (009d80bf5a by @arhelmus) - Allow including TurboModule.h in mixed rtti/no-rtti environment, even if TurboModule.h/cpp is compiled without RTTI. (1f87729697 by @nlutsenko)
- Remove prettier from dependencies in eslint-config (2db1bca952 by @Kerumen)
- Switch Component doesn't disable click functionality when disabled (b2e625a517 by @fabriziobertoglio1987)
- Support numeric color values in StyleSheet's Flow types (83b1975b90 by @motiz88)
- Fix build break on Windows with ReactCommon (42b391775f by @chiaramooney)
- Fixed opacity value in TouchableOpacity (3eddc9abb7 by @hetanthakkar1)
- Remove illegal private property access in VirtualizedSectionList.scrollToLocation (b2f871a6fa by @motiz88)
- JS animated node value updates properly when listener is attached (1f778014a7 by @genkikondo)
- Working around Long paths limitation on Windows (7b76abc0d3 by @mganandraj)
- Fix VirtualizedList with initialScrollIndex not rendering all elements when data is updated (c5c17985da by @AntoineDoubovetzky)
Android specific
- Add back hermes inspector support (6b6adcc111 by @Kudo)
- Fixed issue where any node with an AccessibilityDelegate set (which was any node with any accessibility propoerty), was using ExploreByTouchHelper's built in AccessibilityNodeProvider, and not properly populating their AccessibilityNodeInfo's, leading to focus issues and issues with automated test services like UIAutomator. (70fcab76a4 by @blavalla)
- Fix Extras usage in Android implementation of Linking.sendIntent() (86f8d0bb52)
- Fix typo in gradle plugin deprecation message (41cfd2f976 by @mikehardy)
- Fixed
TimingModule
related functions for headless JS tasks, eg.setTimeout
(dac56ce077 by @marcesengel) - Improve support for Android users on M1 machine (c5babd993a by @cortinico)
- Do not use
rootProject
directly in Gradle scripts (b2bc5aa5c9 by @cortinico) - Adding null check for context in redbox surface delegate (9527ab1584 by @ryancat)
- Fix crash on empty snapToOffsets array (145fd041c7 by @ryancat)
- Fix StatusBar not updating to use translucent values when set to the same value across different activities (d34a75e9e5)
- Fix underlineColorAndroid transparent not working on API 21 (52aee50a70 by @fabriziobertoglio1987)
- Fixed regression on content in scroll view not responding to touch when fling got interrupted (bb8ff9260f by @ryancat)
- Fixes android build error when compiling as library (c34ef5841c by @nickfujita)
- Cancel post touch process when new touch is received (0368081858 by @ryancat)
- Improve rendering of images when resampled and corner radius applied (f743bed657 by @javache)
- Fix transform when calculate overflowInset (0975e96d53 by @ryancat)
- Fix ReactHorizontalScrollView contentOffset (9f6f97151c by @genkikondo)
- Text Component does not announce disabled and disables click functionality when disabled (7b2d8178b1 by @fabriziobertoglio1987)
- Fix StatusBar on Android API 30 (9ed2df628d by @ieatfood)
- Use root locale when converting string case. (5341ad8962 by @halaei)
- Fix DarkMode on Calendar DateTimePicker (97064ae1fb by @mdvacca)
- Fix ScrollView contentOffset (be260b9f47 by @genkikondo)
- Do not bundle libhermes.so or libjsc.so inside the React Native Android AAR (fa85417179 by @cortinico)
- Enable hitSlop to be set using a single number. (d682753244 by @javache)
- Fix crash caused by Image.queryCache parsing null (ae3d4f7008 by @skychx)
- Fix NullPointerException when disaptching events (fbeb51ef51 by @mdvacca)
iOS specific
- ScrollView's contentInsetAdjustmentBehavior is reset to Never at every reuse to avoid layout artifacts. (28a65f4387)
- Prevent Nullptr segfault in TurboModule init path (7f3cc256b5 by @RSNara)
- Expose the extraData dict attached to JavaScript errors to the native ExceptionManager on iOS, similar to Android (a65ae8eff6 by @GijsWeterings)
RCTLocalizationProvider
Fall back to input when no localization is available (18196512db by @robhogan)- Update iOS LogBox to render its UIWindow with the key window's UIWindowScene (d31d83f410 by @vincentriemer)
- Remove Gemfile.lock from template (1907bd31f0 by @danilobuerger)
- Fix
pod install
whenRCT-Folly
version has been updated. (b2517c3bdc by @fortmarek) - Fix usage of cocoapods with --project-directory flag and new arch (2f813f873a by @danilobuerger)
- Ensure LogBoxView is sized relative to the key window instead of the full screen (84f8c9ad55 by @vincentriemer)
- Improved template fastlane gitignore (f43f05d292 by @danilobuerger)
- Set RCTView borderColor to UIColor (267d36d0af by @danilobuerger)
- Fix action sheet callback invoked more than once on iPad (8935d6e697 by @janicduplessis)
- Resolve border platform color based on current trait collection (9a35818797 by @danilobuerger)
- Enable custom sound for local push notifications. (eb19499484)
- Invoke registerForRemoteNotifications on main UI thread. (3633a05299)
- Bump flipper pods to get arm64 catalyst slice (f811da7cc2 by @fortmarek)
- Fix
pod install --project-directory=ios
failing when Hermes is enabled (1b22e8a039, (eb7cc85a91 by @tido64) - Fix compilation warning in yoga (52d8a797e7 by @cuva)
- Prevent deadlock when dispatching events from observers on the same thread. (68fd1e5508 by @Pickleboyonline)
- In RCTSurfaceHostingComponent, access ckComponent from main queue to pass assertion (1874c81003 by @p-sun)
- Fix modal redbox for onDismiss (46f68aceb2 by @HeyImChris)
- Attempt to fix crash during app termination (9cd43340a7 by @sammy-SC)
Security
- Encode URL params in URLSearchParams.toString() (1042a8012f by @sshic)