React Native v0.68 released
React Native 0.68 brings performance improvements and bug fixes across Android and iOS. Key updates include bumping Gradle, Kotlin, and NDK versions for Android, and migrating more modules to the new architecture. iOS gains better ScrollView
behavior and Cocoapods compatibility. Several deprecated APIs were removed, and new features like AnimatedValue
improvements were added. The release also includes numerous fixes for crashes, rendering issues, and other bugs on both platforms.
v0.68 on GitHub (npm)
Release blog post
Changelog
v0.68.7
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.68.6
Fixed
Android specific
- Mitigation for Samsung TextInput Hangs (be69c8b5a7 by @NickGerleman)
v0.68.5
Fixed
- Force dependencies resolution to minor series for 0.68 (edcb3ca996 by @Titozzz)
v0.68.4
Changed
- Bump version of
promise
from 8.0.3 to 8.2.0, enablingPromise.allSettled
(951538c080 by @retyui) - Bump react-native-codegen to 0.0.18 (40a3ae3613 by @dmytrorykun)
Android specific
- Correctly resolve classes with FindClass(..) (361b310bcc by @evancharlton)
Fixed
- Codegen should ignore
.d.ts
files (0f0d52067c by @tido64)
iOS specific
- Fix the way the orientation events are published (7d42106d4c by lbaldy)
v0.68.3
Changed
Android specific
- Let's not build reactnativeutilsjni shared library (af9225ec5f by @SparshaSaha)
- Modified getDefaultJSExecutorFactory method (87cfd386cb by @KunalFarmah98)
Fixed
- Use monotonic clock for performance.now() (114d31feee)
Android specific
- Logging a soft error when ReactRootView has an id other than -1 instead of crashing the app in hybrid apps (1ca2c24930 by @Kunal-Airtel2022)
v0.68.2
Changed
- Bump used version of react-native-codegen to 0.0.17 (dfda480a98 by @cortinico)
- Bump react-native-codegen to 0.0.17 (a5ddc2e165 by @cortinico)
Fixed
Android specific
- Working around Long paths limitation on Windows (62ef6f5fa1 by @mganandraj)
v0.68.1
Changed
Android specific
- Bump React Native Gradle plugin to 0.0.6 (9573d7b84d by @cortinico)
- Don't require yarn for codegen tasks (d5da70e17e by @danilobuerger)
Fixed
- Fix dynamic_cast (RTTI) by adding key function to ShadowNodeWrapper and related classes (58a2eb7f37 by @kmagiera)
- Pin use-subscription to < 1.6.0 (5534634892 by @danilobuerger)
Android specific
- Use NDK 23 only for Windows users. (e48a580080 by @cortinico)
- Improve support for Android users on M1 machine (4befd2a29c by @cortinico)
- Template: Specify abiFilters if enableSeparateBuildPerCPUArchitecture is not set. (5dff920177 by @cortinico)
- Fix for building new architecture sources on Windows (5a8033df98 by @mganandraj)
v0.68.0
Breaking Changes
- CI moved to Node 16. (f1488db109 by @kelset). This change enforces Node >= 14 for React Native builds.
- Bump Android Gradle Plugin to 7.0.1. (272cfe5d13 by @dulmandakh) This version of Android Gradle plugin enforces JDK 11 for Android builds. Do not upgrade to AGP 7.1 as it is not supported by this version of react-native.
- Removed
fallbackResource
fromRCTBundleURLProvider
API (0912ee179c) by @philIip
New Architecture
If you are interested in enabling the new architecture, please refer to the dedicated documentation.
- Do not include Facebook license on users codegen'd code (450967938a by @cortinico)
Android specific
- Setup a
newArchEnabled
property to Opt-in the New Architecture in the template (8d652fba4c by @cortinico)
iOS specific
- Add fabric option to the default app template. (2e9a376c84 by @sota000)
- Add turbo module support in the default app template. (8ec0e6919c by @sota000)
- Rename the new architecture flag to RCT_NEW_ARCH_ENABLED. (c0c5439959e by @sota000)
Added
- Create @fb-tools-support/yarn package (7db294d6d5 by @motiz88)
- Support string color values in Animated.Color (d3a0c4129d)
- New Animated.Color node (ea90a76efe)
- Added linter warning config for unstable nested components (988fefc44d by @javache)
- Option to supply
platformConfig
to NativeAnimated (4a227ce2ab by @rozele) - Animated.event can be used to extract values with numeric keys from native events (b2105711a0 by @javache)
- Adds a setSelection imperative method to TextInput (771ca921b5 by @lyahdav)
- Native-only prop to optimize text hit testing on some RN platforms (f3bf2e4f51 by @rozele)
Android specific
- Added DoNotStripAny proguard rules (48318b1542 by @ShikaSD)
- Add new API in ScrollView and HorizontalScrollView to process pointerEvents prop. (48f6967ae8 by @ryancat)
- Add
accessibilityLabelledBy
props (36037fa81b by @grgr-dkrk) - Added missing constructor to WritableNativeArray (c68c47d2ba by @piaskowyk)
- Add new API for custom fling animator to provide predicted travel distance for its fling animation. (fe6277a30d by @ryancat)
- Adding new API
onChildEndedNativeGesture
to the RootView interface to let its implementations notify the JS side that a child gesture is ended. (9b33c31ee0 by @ryancat) - Make the
reactNativeArchitectures
property more discoverable (0f39a1076d by @cortinico) - Added
isAccessibilityServiceEnabled
to get if accessibility services are enabled (c8b83d4e0b by @grgr-dkrk) - Add bundleForVariant option (d2c10da5d5 by @grit96)
- Add ACCEPT_HANDOVER, ACTIVITY_RECOGNITION, ANSWER_PHONE_CALLS, READ_PHONE_NUMBERS & UWB_RANGING to PermissionsAndroid (4b25a0aaa0 by @iBotPeaches)
iOS specific
- Add new argument to announceForAccessibility to allow queueing on iOS (4d1357918a by @peterc1731)
- Add volta support to find-node.sh (765844055b by @liamjones)
- Support fnm when detecting node binary (c9e4d34885 by @MoOx)
- Find-node.sh now respects .nvmrc (35bcf934b1 by @igrayson)
- Add macros to be able to stub C functions in tests (749a9207b6 by @philIip)
Changed
- Bump RN CLI to v7.0.3, and Metro to 67 (848ba6fb1d by @kelset) and (df2e934a69 by @kelset)
- Upgraded react-devtools-core dependency to 4.23.0 (1cc217d5ef by @bvaughn)
- Bump Flipper to 0.125.0 (50057158ca by @cortinico)
- Export Flow type for deceleration rate for use in other files to keep deceleration rate prop values consistently typed (9b0ed920ef)
- Upgrade deprecated-react-native-prop-types dependency (badd30885f by @chiaramooney)
- Improved error message in react.gradle (7366a866b3 by @vonovak)
- Upgraded packages to the latest versions for ESLint v7. (cf763cdf81 by @yungsters)
- Updated the links for the discussions and changelog (daf37a1fce by @MikeyAlmighty)
- XMLHttpRequest.getAllResponseHeaders() now returns headers with names lowercased and sorted in ascending order, as per specification (b2415c4866 by @ascherkus)
- Bump react-native-codegen to 0.0.9 (e3a71b019f by @cortinico)
- Accessing
Image.propTypes
,Text.propTypes
,TextInput.propTypes
,ColorPropType
,EdgeInsetsPropType
,PointPropType
, orViewPropTypes
now emits a deprecation warning. (3f629049ba by @yungsters) - Bump
core-workflow-apply-version-label
version (e973b3afc2 by @lucasbento) - Add
vendor/bundle
into .gitignore template (2f67f5d68b by @MoOx)
Android specific
- Add allowsEdgeAntialiasing on views with rotations or skew transforms (e6a3410afe)
- Bump Kotlin version to 1.6.10 (d0f0234656 by @AKB48)
- Bump Soloader to 0.10.3 (f45889ef95 by @osartun)
- Bump Gradle to 7.3 (c180627ac7 by @dulmandakh)
- Bump Android compile and target SDK to 31 (00ac034353 by @ShikaSD)
- Use side-by-side NDK for Android (bd7caa64f5 by @cortinico)
- Leverage Gradle implicit dependency substitution for Gradle Plugin (0fccbd53af by @cortinico)
- Remove unused import of JMessageQueueThread.h (705236e363 by @sshic)
- Made
MessageQueueThread#runOnQueue
return a boolean. MadeMessageQueueThreadImpl#runOnQueue
return false when the runnable is not submitted. (89faf0c9a8) - Assume *.ktx assets are packaged as Android drawables (cb610ddca7 by @motiz88)
- Add ViewConfigs to support onEnter/onExit/onMove events (44143b50fd by @mdvacca)
- Let react_native_assert really abort the app (2ae06df58f by @cortinico)
- Bugfix for multiple shadow threads rendered at the same time, small probability crash. (9d71b166a6 by @chenmo187)
- RootView's onChildStartedNativeGesture now takes the child view as its first argument (03e513de41 by @javache)
- Add ReactInstanceEventListenerV2 for migration (ce74aa4ed3 by @sshic)
- Improved logic of findTargetPathAndCoordinatesForTouch (dfe42d6b75 by @javache)
- Set a resolution strategy for com.facebook.react:react-native when on New Architecture (e695bc0bb5 by @cortinico)
- Make hermes-executor-common a static lib (b2cf24f41c by @janicduplessis)
- Static link for hermes-inspector (20b0eba581 by @janicduplessis)
iOS specific
- Don't capitalize the first letter of a word that is starting by a number (8b5a5d4645 by @MaeIg)
- updated
jsBundleURLForBundleRoot:fallbackResource
tojsBundleURLForBundleRoot:
(aef843bfe6 by @philIip) - Remove iOS 11 availability check (9b059b6709 by @ken0nek)
- Refactor: Assign string label to each case in RCTPLTag enum for startup performance logging (60e60a9b3d by @p-sun)
- IOS Ruby Updates (1e6add1a43 by @barbieri)
- Update Flipper pods to support re-enable macCatalyst (2a5265dff7 by @mikehardy)
- Apple Silicon builds of glog & Flipper-Glog (274c617f5b by @rayzr522)
Fixed
- Fix error "mockModal is not a function" (507b05f4c0 by @AntoineDoubovetzky)
- Fixes execution of animation when a toValue of AnimatedValue is used. (8858c21124)
- Fix RN version syntax to match new nightly build structure. (3d1d4ee457 by @chiaramooney)
- Fix typo in _updateBottomIfNecessary function on KeyboardAvoidingView component (0cc80b4d0c by @gabrieldonadel)
- Fix: Removes interface only check from third party components GenerateThirdPartyFabricComponentsProvider (3e6902244a by @Ubax)
- Set CxxModules' Instance before retrieving their Method vector. (1d45b20b6c by @JunielKatarn)
- AnimatedValue.__detach should store getValue result with offset deducted (fe53cae954 by @rozele)
- AnimatedValue.stopAnimation callback with correct value for NativeAnimated (8ba771c3dd by @rozele)
- ESLint no-undef rule clashing with TypeScript compiler for TS files (ae67c5ac45 by @fiznool)
- ESLint
no-shadow
rule returning false positive for TypeScript enums (722a0ff6f8 by @fiznool) - Fix support for custom port (b399c2e3d1 by @enniel)
onLayout
prop is handled correctly in<KeyboardAvoidingView>
(9c5e177a79)- Modal accepts a testID but didn't forward it to RCTModalHostView, therefore not making it show up for e2e tests depending on viewhierarchy. (5050e7eaa1 by @GijsWeterings)
- Remove unused and incorrect type declarations in WebSocketInterceptor (91728e2266 by @mischnic)
- Complete missing Flow declarations in URL (98abf1b02f by @mischnic)
- Pressable not passing hover props and event handlers to PressabilityConfig (1b30dd074b by @Saadnajmi)
- Composite animations will now be ran immediately when the app is in testing mode (b03e824c52 by @javache)
- Remove duplicate class members (c0e489b729 by @bradzacher)
- Fix: Use same implementation for
performance.now()
on iOS and Android (1721efb54f by @mrousavy)
Android specific
- Enable cliPath to have an absolute path value (5d560ca99f by @Krisztiaan)
- Make sure configureNdkBuild* tasks are depending on preBuild (2fdbf6a10f by @cortinico)
- Added a null check to native.value in Switch to fix https://github.com/facebook/react-native/issues/32594 (8d50bf1133 by @jonathanmos)
- Fix overflowInset calculation by using transform values (8aa87814f6 by @ryancat)
- Add missing sources jar into published android artifacts (384e1a0c7b by @Kudo)
- Fix math for detecting if children views are in parent's overflowInset area. (45244ebce2 by @ryancat)
- Fixed empty screen after retrying a BundleDownloader failure in dev mode (c8d823b9bd by @samkline)
- Fix crash from ScrollView that occurs while reporting an error from JS (2151d11527 by @JoshuaGross)
- Enable hitSlop to be set using a single number. (589b129581 by @javache)
- Fix fling and snap with recycler viewgroup where fling to the end of scrollable distance when it goes over current rendered children views. (ead7b97944 by @ryancat)
- Fixed edge case for quick small scrolls causing unexpected scrolling behaviors. (f70018b375 by @ryancat)
- Fix crash on ReactEditText with AppCompat 1.4.0 (e21f8ec349 by @cortinico)
- Do not .lowerCase the library name when codegenerating TurboModule Specs (28aeb7b865 by @cortinico)
- Enable hitSlop to be set using a single number. (a96bdb7154 by @javache)
- Updated TextInput prop types to accomodate for new autoComplete values (9eb0881c8f by @TheWirv)
- Don't reconstruct app components https://github.com/facebook/react-native/issues/25040 (fc962c9b6c by @Somena1)
- Do NOT skip the first child view in the scroll view group when measuring the lower and upper bounds for snapping. (61e1b6f86c by @ryancat)
- Fix crash when a Switch is initialised with both backgroundColor and thumbColor. (456cf3db14 by @smarki)
- Fix devDisabledIn not working with multiple productFlavors (055ea9c7b7 by @grit96)
- Revert
ReactScrollView
to useContext
instead ofReactContext
in the constructor to be less restrictive. (7b77cc637e by @ryancat) - Fix onPress event for nested Text in RN Android (e494e4beb6 by @mdvacca)
- Fix enableVmCleanup not working for apps with product flavors (a2b5e4cd82 by @cortinico)
- Prevent NPE on ThemedReactContext (f1b5fe1d3e by @sshic)
- fix: jvm 11 error message from ReactPlugin.kt and react.gradle (4e947ecb2d by @nomi9995)
iOS specific
- ScrollView: Respect
contentInset
when animating new items withautoscrollToTopThreshold
, makeautomaticallyAdjustKeyboardInsets
work withautoscrollToTopThreshold
(includes vertical, vertical-inverted, horizontal and horizontal-inverted ScrollViews) (49a1460a37 by @mrousavy) - Prevent RCTConvert error for allowed null blob types (e1b698c5f2 by @habovh)
- Migrate ScreenshotManager from NativeModule to TurboModule (b13e41d98e by @p-sun)
- Fix usage of cocoapods with --project-directory flag and new arch (9e7d91f2fc by @danilobuerger)
- Post RCTContentDidAppearNotification with new arch (75105e692c by @danilobuerger)
- Remove absolute paths from pods project (42b01a32a1 by @danilobuerger)
- Respect RCTSetDefaultFontHandler chosen font (89efa1a0c1 by @danilobuerger)
- Fixed duplicated UUIDs problem during pod install phase. (f595a4e681)
- Fix
Time.h
patch not being applied when runningpod install --project-directory=ios
(60cef850bd by @tido64) - Fix WebSocket control frames having payloads longer than 125 bytes (86db62b7a8 by @asmeikal)
- Stop RedBox from appearing for LogBox handled errors (9d2df5b8ae by @liamjones)
- Enable hitSlop to be set using a single number. (3addafa525 by @javache)
- Fix
__apply_Xcode_12_5_M1_post_install_workaround
failing when one of the Pods has no IPHONEOS_DEPLOYMENT_TARGET set (9cd4092336 by @Yonom) - This is a quick speculative fix since we know
CFRunLoopPerformBlock
does not push/pop an autorelease pool. (3fff164dfa by @christophpurrer) - Fixed RCTImageLoaderTests (1542f83527 by @philIip)
- Fix Rosetta2 CocoaPods warning on Apple Silicon (e918362be3 by @oblador)
- Fix
pod install --project-directory=ios
failing due to wrong path toReact-Codegen
(ebb26cf2e4 by @tido64)
Deprecated
Android specific
- Gradle: Deprecate
reactRoot
in favor ofroot
andreactNativeDir
(8bc324fd34 by @cortinico)
Removed
- DeprecatedPropTypes (deep-link) modules removed from React Native. (23717c6381 by @yungsters)
accessibilityStates
no longer passed through to RCTView. (1121ed94ab by @luism3861)
iOS specific
- Remove RCTUIManagerObserver from RCTNativeAnimatedTurboModule (e9ed115bab by @p-sun)