React Native v0.70 released
React Native 0.70 introduces Hermes as the default JavaScript engine on both Android and iOS. It includes updates to Metro, CLI, and Gradle plugin versions. Key changes include improved TypeScript support, new accessibility features, and various bug fixes across Android and iOS platforms. The release also removes some deprecated APIs and improves build processes and error handling.
v0.70 on GitHub (npm)
Release blog post
Changelog
v0.70.15
Changed
- BUMP CLI to v9.3.5 (cb170efdd3 by @hurali97)
- Bump react-devtools-core to 4.27.7 (abb4a2bddd by @lunaleaps)
- Bump hermes-engine (5b95254359 by @cipolleschi)
Fixed
iOS specific
- Migrate boost download url away from JFrog (e8e059a977 by @cipolleschi)
v0.70.14
Changed
- Update JSCodeshift to 0.14 (5a695dd by @stianjensen)
Fixed
iOS specific
- Fix Gemfile to set the max version of Active support to 7.0.8 (a1a220b by @cipolleschi)
- Update Xcode 15 patches to be more robust (735d06c01f by @cipolleschi)
- Make Hermes build properly with Xcode 15 (5f4a091 by @cipolleschi)
v0.70.13
Fixed
- Fix: bumped CLI to address broken backward compatibility (549ff6380a by @Titozzz)
v0.70.12
Fixed
iOS specific
- Prefer
Content-Location
header in bundle response as JS source URL (671ea383fe by @robhogan)
v0.70.11
Changed
- Bump CLI to 9.3.3 and Metro do 0.72.4 (2a9d71dc34 by @kelset) to address https://github.com/facebook/react-native/issues/36794
v0.70.10
Fixed
Android specific
- Prevent crash on OnePlus/Oppo devices in runAnimationStep (c05d822f7d by @hsource)
iOS specific
- USE_HERMES envvar check fixed in react-native-xcode.sh. (61106ac680) by @kidroca)
- USE_HERMES envvar check fixed in react-native-xcode.sh. Now source maps are generated by default. (8ad63714) by @dmytrorykun)
- USE_HERMES envvar check fixed in react-native-xcode.sh. (4108b3) by @dmytrorykun)
- When source maps are enabled, clean up temporary files from the build directory. Reduces bundle size by at least 1MB. (bad3949) by @dmytrorykun)
- Make 0.70 compatible with Xcode 15 (thanks to @AlexanderEggers for the commit in main) (c5e549e694)
v0.70.9
Changed
- Update Hermes to
hermes-2023-04-13-RNv0.70.8-c9b539bf3d7bfa4143ff1a5751886c7b2dd728a2
(7b1441730b), contains:
Fixed
Android specific
- Resolved bug with Text components in new arch losing text alignment state. (31a8e92cad by @javache)
- Mimimize EditText Spans 9/9: Remove
addSpansForMeasurement()
(92b8981499 by @NickGerleman) - 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)
iOS specific
v0.70.8
Changed
iOS specific
- Relax Ruby requirements (e3a5fbe72f by @cipolleschi)
Fixed
iOS specific
- Fix React Codegen podspec to build on Xcode 14.3 (34f3794f18 by @cipolleschi)
- Blob data is no longer prematurely deallocated when using blob.slice (36cc71ab36 by @awinograd)
v0.70.7
Fixed
Android specific
- Mitigation for Samsung TextInput Hangs (be69c8b5a7 by @NickGerleman)
iOS Specific
- Fix the potential race condition when dismissing and presenting modal (279fb52e03 by @wood1986)
Added
Android Specific
- Add
POST_NOTIFICATIONS
and deprecatePOST_NOTIFICATION
(b5280bbc93 by @dcangulo)
v0.70.6
Fixed
- Fixed regression: @jest/create-cache-key-function dependency was inadvertedly bumped to 29.x. We are bringing it back to 27.0.1. (fb0e88beb9 by @kelset)
Changed
- Bump version of Promise from 8.0.3 to 8.3.0, enabling
Promise.allSettled
andPromise.any
(475310dbba by @retyui) - Bump CLI to 9.3.2 (9bcc5e0373 by @kelset)
iOS specific
- Cleanup codegen build folder before installing the pods (0e316ec671 by @cipolleschi)
v0.70.5
Fixed
- Force dependencies resolution to minor series for 0.70 (59407a4d34 by @cortinico)
v0.70.4
Changed
- Bump CLI to 9.2.1 (a24c8946e0 by @kelset)
- Bump react-native-codegen to 0.70.6 (866021b58c by @dmytrorykun)
Fixed
- Load react-native.config.js from correct path during codegen (74fda10702 by @krystofwoldrich)
iOS specific
- Fix error in the Codegen template for ThirdPartyFabricComponentsProvider (2f6b2127d9 by @gispada)
- Center text if line height isn't 0 (70cc27c901 by @sammy-SC)
v0.70.3
Fixed
- Stop styles from being reset when detaching Animated.Values in old renderer (2f58e52006 by @javache)
- Revert "Fix TextInput dropping text when used as uncontrolled component with
defaultValue
" to fix TextInputs not being settable to undefined programmatically (e2645a5) by Garrett Forbes Monroe
Android specific
- Use NMake generator for Hermes build on Windows (9d08d55bbe by @mganandraj)
- Fixing failure building RN codegen CLI on Windows (85c0c0f21f by @mganandraj)
iOS specific
- Add xcode 14 workaround (turn off signing resource bundles) for
React-Core
(967de03f30 by @kelset)
v0.70.2
Added
iOS specific
- Add support for "Prefer Cross-Fade Transitions" into AccessibilityInfo (be7c50fefd by @gabrieldonadel)
Changed
- Bump CLI to 9.1.3 and Metro to 0.72.3 (f164556037 by @kelset)
Fixed
- Inform ScrollView of Keyboard Events Before Mount (26d148029c by @NickGerleman)
Android specific
- Fix port as -1 if dev server without specifying port on Android (3d7e1380b4 by @Kudo)
v0.70.1
Added
- Add more debugging settings for HermesExecutorFactory (32d12e89f8 by @Kudo)
- Support TypeScript array types for turbo module (component only) (33d1291e1a by @ZihanChen-MSFT)
Changed
- Accept TypeScript type
T | null | undefined
as a maybe type of T in turbo module. (9ecd203eec by @ZihanChen-MSFT) - Bump react-native-gradle-plugin to 0.70.3 (e33633644c by @dmytrorykun)
- Bump react-native-codegen to 0.70.5 (6a8c38eef2 by @dmytrorykun)
- Hermes version bump for 0.70.1 (5132211228 by @dmytrorykun)
Fixed
- Fix hermes profiler (81564c1a3d by @janicduplessis)
Android specific
- Support PlatformColor in borderColor (2d5db284b0 by @danilobuerger)
- Avoid crash in ForwardingCookieHandler if webview is disabled (5451cd48bd by @Pajn)
- Correctly resolve classes with FindClass(..) (361b310bcc by @evancharlton)
iOS specific
- Fix KeyboardAvoidingView height when "Prefer Cross-Fade Transitions" is enabled (4b9382c250 by @gabrieldonadel)
- Fix React module build error with swift integration on new architecture mode (3afef3c167 by @Kudo)
- Fix ios pod install error (0cae4959b7 by @Romick2005)
0.70.0
Breaking
- Remove jest/preprocessor from the react-native package (0301cb285b by @motiz88)
- Remove nonstandard Promise.prototype.done (018d5cf985 by @motiz88)
Added
- Support TypeScript array types for turbo module (module only) (f0c4c291e1 by @ZihanChen-MSFT)
- Added files for
avn
,nodenv
, and other managers that set the node.js version in reactive native project including testing (933fbb1b2b by @ramonmedel) - Support BigInt in Hermes (11bae63bb1 by @jpporto)
- The old Hermes instrumented stats migrated to the new one (c37f719567 by @jpporto)
- Modified getDefaultJSExecutorFactory method (87cfd386cb by @KunalFarmah98)
EventEmitter#emit
now freezes the set of listeners before iterating over them, meaning listeners that are added or removed will not affect that iteration. (e5c5dcd9e2 by @yungsters)- Added File and Blob globals to eslint community config (d881c87231 by @shamilovtim)
- C++ TurboModule methods can now use mixed types (3c569f546c by @appden)
- Add useNativeDriver as a param for setValue for Animated (73191edb72 by @genkikondo)
- Add
Animated.Numeric
Flow type (9eb7629ac6 by @motiz88) - Add LTI annotations to function params (c940eb0c49, e7a4dbcefc, d96744e277 by @pieterv)
Android specific
- Accessibility announcement for list and grid in FlatList (2d5882132f, 105a2397b6 by @fabriziobertoglio1987)
- Add READ_VOICEMAIL and WRITE_VOICEMAIL permissions to PermisionsAndroid library. (8a2be3e143 by @zolbooo)
- Add POST_NOTIFICATIONS, NEARBY_WIFI_DEVICES permission (0a854c7c8b by @vincent-paing)
- Extend the React Native Gradle plugin to accept a config from package.json (5f3c5aa529 by @cortinico)
- Ability to pass a Typeface object to ReactFontManager in addition to a font resource ID (e2dd2e2a6e by @thurn)
- Option to enable lazyViewManager support with
ViewManagerOnDemandReactPackage
(d4b59cd9d0 by @javache) - Support for dataUri in form data (c663c0ec9d by @hetanthakkar1)
- Add android-only prop documentation at the TextInput js level. (f2e23215ca)
- Update template to gitignore
android/app/.cxx
(542d43df9d by @leotm)
iOS specific
- Add Mac Catalyst compatibility (can be enabled in Podfile) (2fb6a3393d by @Arkkeeper)
- Enabled Hermes Intl (3fa3aeba93 by @neildhar)
- HTTP Response headers added to the error object passed to JS code. (9eb2826f9b)
- Add userInterfaceStyle to Alert to override user interface style for iOS 13+ (47bd78f64f by @luoxuhai)
- Add function to cleanup codegen folders (71692889b0 by @cipolleschi)
- Cocoapods function to add the
CLANG_CXX_LANGUAGE_STANDARD
to all the targets if needed (ca8174e15f by @f-meloni) - Support codegen from a single folder (05aaba9514 by @cipolleschi)
- Run script phases tests in CI (c171a6e157 by @cipolleschi)
Changed
- Bump React Native Codegen to 0.70.0 (a22ceecc84 by @dmytrorykun, 2a274c1a08 by @cortinico, ce4246a05c by @dmytrorykun)
- Upgrade RN CLI to v9.0.0, Metro to 0.72.1 (0c2fe96998 by @thymikee, 7e580b97bf by @kelset, c504d038c4 by @thymikee, f1d624823f by @kelset, 2b49ac6f8b by @thymikee)
- Doc: fix minimum iOS version in requirements section (ec3c8f4380 by @Simon-TechForm)
- Remove "Early" in Js error reporting pipeline (0646551d76 by @sshic)
- Update @react-native/eslint-plugin-specs to 0.70.0 (d07fae9b23, afd76f69c7 by @dmytrorykun, ea8d8e2f49 by @cortinico)
- Do not depend on hermes-engine NPM package anymore (78cd689f9a by @cortinico)
- Add ability to pass
ItemSeparatorComponent
as React Element (5854b11bf9 by @retyui) - Hermes version bump. (0b4b7774e2 by @dmytrorykun, 8c682ddd59 by @dmytrorykun, eb6767813a by @cortinico)
- Codemod
{...null}
to{}
in xplat/js (f392ba6725 by @gkz) - Fix TextInput dropping text when used as uncontrolled component with
defaultValue
(51f49ca998) - Suppress errors ahead of launch (67e12a19cb by @gkz)
- Suppress missing 'this' annotations (6c563a507f by @pieterv)
- Suppress missing annotations (66c6a75650 by @pieterv)
- Use RuntimeConfig instead of VM Experiment Flag to set up the micro task queue. (753038cf34 by @fbmal7)
- Update direct Metro dependencies to 0.72.0 (05dcebc211 by @kelset, 64788cc9fe by @huntie, bdeb4e0655 by @jacdebug, 894f652639 by @robhogan, 08ebc1cfd8 by @arushikesarwani94)
- ECOSYSTEM.md: update Partner entries (5471afeebf by @Simek)
- Move ScrollView's contentOffset to common props (7c581f3d30 by @genkikondo)
- Upgrade react-native-gradle-plugin to 0.70.2 (1518f838b7, 2176173dcc by @dmytrorykun)
- Update a few metro deps as follow up from the commit from main (7c7ba1babd by @kelset)
Android specific
- Bump Android Gradle Plugin to 7.2.1 (53c8fc9488 by @leotm, c274456e5b by @dulmandakh)
- Rename NativeModuleCallExceptionHandler to JSExceptionHandler for broader usage (b6f7689d70 by @sshic)
- Simplify the Android.mk file in the App Template (7fb0bb40d2 by @cortinico)
- Make Hermes the default engine on Android (a7db8df207 by @cortinico)
- Revamp touch event dispatching methods (089ff4555a by @sshic)
- Demonstrating Dark Mode correctly in the
StatusBar
for the starter template App. (763dc52387 by @mrbrentkelly) - Bump Gradle to 7.5.0 (5c8186623a by @leotm, 99e7373dd2 by @dulmandakh)
- Generalized the return type of ViewManagerOnDemandReactPackage.getViewManagerNames (51e029ec3c by @javache)
- Don't assert on current activity when call startActivityForResult (bf6884dc90 by @sshic)
- Adapt template to new architecture autolinking on Android (9ad7cbc3eb by @thymikee)
- Replaced reactnativeutilsjni with reactnativejni in the build process to reduce size (54a4fcbfdc by @SparshaSaha)
- Bump Soloader to 0.10.4 (b9adf2db20 by @mikehardy)
- Update the new app template to use CMake instead of Android.mk (dfd7f70eff by @cortinico)
- Refactored usage of kotlin plugin (be35c6dafb by @hurali97)
- Bump Gradle to 7.5.1 (7a911e0730 by @AlexanderEggers)
- Fix error of release builds with Hermes enabled for Windows users (7fcdb9d9d8 by @JoseLion)
iOS specific
- Move and test Hermes setup from react_native_pods script into a dedicated file (468b86bd37 by @cipolleschi)
- Use the correct operator to decide whether Hermes is enabled or not. (61488449b9 by @cipolleschi)
- Hermes is now the default engine on iOS. This setting is controlled via
flags[:hermes_enabled]
in the Podfile. (1115bc77db by @hramos) - Move LocalPodspecPatch to dedicated file (8fe2b591c7 by @cipolleschi)
- Move the
modify_flags_for_new_architecture
method to separate ruby file (71da21243c by @cipolleschi) - Refactoring part of the react_native_pods.rb script (4f732ba9ee, 7a2704455f by @cipolleschi)
- When Hermes is enabled, it will use the same copy of JSI as React Native (340612a200 by @hramos)
- Move
use_flipper
logic insideuse_react_native
and simplify the Flipper dependencies logic (0bd5239553 by @f-meloni) - Export
flipper.rb
script file (e07a7eb16b by @cipolleschi) - Use
outputDir
as base directory for the codegen and remove the possibility to customize the intermediate path. The generated code requires specific paths in the#include
directive. (e4d0153a67 by @cipolleschi) - Refactor part of the codegen scripts and add tests. (0465c3fd10, 305a054865 by @cipolleschi)
- CodeGen now supports the
"all"
library type. (6718500eaa by @cipolleschi) - Fix the test_ios_unit test (fdbe4719e2 by @cipolleschi)
- Update Podfile to allow
PRODUCTION=1 pod install
(77752fc403 by @leotm) - Destruct use_reactnative parameters and ad ddocumentation (79a37e5a88 by @cipolleschi)
- Move codegen in separate files (7d069b2583 by @cipolleschi)
- Silence warning due to react-native internal details. (a4599225f5 by @cipolleschi)
Removed
- Remove previously deprecated Transform style-attribute props (7cfd77debd by @Zachinquarantine)
- Remove deprecated
isTVOS
constant. (6075d64acf by @Zachinquarantine) - The diffs renames the required variable which was causing conflicts in names with Apple core SDK's (086c13dd5f by @arinjay)
- Removed
EventEmitter.prototype.removeSubscription
method. (870755fa7e by @yungsters) - Remove deprecated removeListener methods (2596b2f695 by @matinzd)
- Remove APPLETVOS variants from BUCk targets. (cf2e27c388 by @d16r)
iOS specific
- Remove
emulateUnlessSupported
(c73e021a4b by @ken0nek) - Remove USE_CODEGEN_DISCOVERY flag (2e720c3610 by @cipolleschi)
Fixed
- Throw JSINativeException from asHostObject (ef6ab3f5ca by @neildhar)
- Use new Babel parser instead of deprecated one (97291bfa31 by @Kerumen)
- Fixed a crash on deserialization of props when using 'px'/'em' units. (70788313fe by @nlutsenko)
- Fix nullability lost on readonly types in TurboModule specs (c006722e6c by @appden)
- Make tests pass for windows (9596bf045d by @cipolleschi)
- Handle possible null exception on ReactEditText with AppCompat 1.4.0 (24a1f5c66c by @mikemasam)
- Fixed the disappearance of items when scrolling after zooming VirtualizedList. (13a72e0ccc by @islandryu)
- Improved Flow type inference in Animated
.interpolate()
(7b86fa2b79 by @motiz88) - Add Jest mock for Vibration module (79529a1c77 by @hduprat)
- Allow ReactInstrumentationTest to use custom JSIModules (eb2a83b0be by @christophpurrer)
- Working around Long paths limitation on Windows (883a93871c by @mganandraj)
- Fix eslint-plugin-specs prepack npm lifecycle hook now that we use npm 8 (8441c4a6f7 by @kelset)
- Codegen should ignore
.d.ts
files (0f0d52067c by @tido64) - Avoid full copy of large folly::dynamic objects in JSIExecutor#defaultTimeoutInvoker (521011d4cc by @christophpurrer)
Android specific
- Fixed HorizontalScrollView API scrollToEnd causing NPE in side-effects. (e5ba6ab7b4 by @ryancat)
- Fix InputAccessoryView crash on Android (afa5df1764 by @hduprat)
- Bring back non-rootview touch handling based on reactTag (8b837268b4 by @fkgozali)
- Make Text not focusable by default (8ced165e53 by @kacieb)
- Revert PR 33924 because of issues with TextInputs with numeric keyboard types not respecting the secureTextEntry prop (edb27e3aa1 by @charlesbdudley)
- Fix edge case when we enqueue a pending event to views on stopped surface (ea7c9f2ad9 by @ryancat)
- Fix a bug where the keyboard, once set as email, won't change back to default. (ec307e0167 by @larkox)
- NPE in
ReactEditText.setInputType
when React Native is used with some versions of a AppCompat 1.4.x. (and possibly others) (92ebb298e2) - Fix NPE on
ReactEditText
due to null mFabricViewStateManager (ba6bf5a3ce by @cortinico) - Scroll views would still receive scroll events when nested in a view with
pointer-events: "none"
(fced96bf52 by @javache) - Fixed an edge case that event dispatching is failed after pre-allocation of a view and before the view is mounted. (a093fe5f2f by @ryancat)
- Avoid crash by handling missing views in dispatchViewManagerCommand (ee1a191cb1 by @hsource)
- Pass react build dir to cmake (6ab7a99518 by @janicduplessis)
- Fix missing space in ReactPropertyException message (24560b6718 by @markv)
- Fix import path breakage (2e1e62f2bf by @aniketmathur)
- When
onEndReachedThreshold
is set to 0onEndReached
function onVirtualizedList
properly fires once the user scrolls to the bottom of the list. (b869680c11) - Fix rendering of transparent borders in RN Android (a9659ce86d by @mdvacca)
- Exception with
Cannot load WebView
message will initialising WebView (along with existing checks) (9e0d8696cc by @rachitmishra) - Fix accessibilityState overwriting view's disabled state on Android (f35d18caa3 by @okwasniewski)
- Make sure *.ts files are considered for task avoidance in the Gradle Plugin (1a9fb6cb68 by @cortinico)
- Fix missing import on New Architecture build script in template (a22f30d2ce by @cortinico)
iOS specific
- Use
NODE_BINARY
from.xcode.env
when running packager from Xcode (ff785dbcf5 by @elsurudo) - Bug with error message formatting when bundle is missing (f501979f3d by @BenLorantfy)
- Fix the race condition when calling readAsDataURL after new Blob(blobs) (bd12e41188 by @wood1986)
- 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 sed error when installing
glog
(4a7e4b9ca6 by @alphashuro) - Don't validate ENTRY_FILE in react-native-xcode.sh (780fe80fca by @janicduplessis)
_scrollViewComponentView
is set toRCTPullToRefreshViewComponentView's
superview (4e4b9e2111 by @dmytrorykun)- Use
GCC_PREPROCESSOR_DEFINITIONS
to setFB_SONARKIT_ENABLED
(77e6bff629 by @janicduplessis) - Fix Hermes not being properly downloaded during pod install (d5e0659fcc by @cortinico)
- Typo in the documation for the
automaticallyAdjustKeyboardInsets
prop (927b43d47c by @jeremybarbet) - Deprecate iOS/tvOS SDK 11.0 support now that 12.4+ is required (f56d701e56 by @leotm)
- Fix blank spaces that don't recover as you scroll when in an RTL locale and e.nativeEvent.zoomScale is -1. (bc7b5c3011, 2f491bfa9f)
- Fixed paddingTop not being applied when using padding and paddingVertical in multiline textinput (2fb107c9a6 by @hetanthakkar1)
- Fixed the ability to pass the port to use for Metro when running
react-native run-ios --port <port>
. (7dc0b5153e by @lindboe) - Fix missing imports (c78babac39)
- Fix React-bridging headers import not found (c4b51e8d76 by @Kudo)
- Fix Hermes executor not available when
use_frameworks
is enabled (88b7b640a7 by @Kudo)
Security
- Add GitHub token permissions for workflows (3da3d82320 by @varunsh-coder)
- Bump RCT-Folly to 2021-07-22 (68f3a42fc7 by @luissantana)