From b5e69bc6b91a8b62f220466392b13a56e64c574b Mon Sep 17 00:00:00 2001 From: Stanislav Iliev Date: Mon, 12 Oct 2026 15:40:31 +0300 Subject: [PATCH 1/2] [Android] Fix crash when a Text inside a detector gets an inline View Fixes #4585 --- .../RNGestureHandlerDetectorShadowNode.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/react-native-gesture-handler/shared/shadowNodes/react/renderer/components/rngesturehandler_codegen/RNGestureHandlerDetectorShadowNode.cpp b/packages/react-native-gesture-handler/shared/shadowNodes/react/renderer/components/rngesturehandler_codegen/RNGestureHandlerDetectorShadowNode.cpp index 92bb180e5a..55930be6bf 100644 --- a/packages/react-native-gesture-handler/shared/shadowNodes/react/renderer/components/rngesturehandler_codegen/RNGestureHandlerDetectorShadowNode.cpp +++ b/packages/react-native-gesture-handler/shared/shadowNodes/react/renderer/components/rngesturehandler_codegen/RNGestureHandlerDetectorShadowNode.cpp @@ -13,6 +13,7 @@ #include +#include #include namespace facebook::react { @@ -155,6 +156,11 @@ RNGestureHandlerDetectorShadowNode::unflattenNode( std::static_pointer_cast(clonedNode); clonedNodeWithProtectedAccess->traits_.set(ShadowNodeTraits::FormsView); +#ifdef ANDROID + if (std::strcmp(node->getComponentName(), "Paragraph") == 0) { + return clonedNode; + } +#endif clonedNodeWithProtectedAccess->traits_.set( ShadowNodeTraits::FormsStackingContext); From 82223f9fd3676d6a0ce3d9af2ea3ea90eddff808 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82?= Date: Mon, 12 Oct 2026 17:15:25 +0200 Subject: [PATCH 2/2] Add comment --- .../RNGestureHandlerDetectorShadowNode.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/react-native-gesture-handler/shared/shadowNodes/react/renderer/components/rngesturehandler_codegen/RNGestureHandlerDetectorShadowNode.cpp b/packages/react-native-gesture-handler/shared/shadowNodes/react/renderer/components/rngesturehandler_codegen/RNGestureHandlerDetectorShadowNode.cpp index 55930be6bf..5096a9b4fc 100644 --- a/packages/react-native-gesture-handler/shared/shadowNodes/react/renderer/components/rngesturehandler_codegen/RNGestureHandlerDetectorShadowNode.cpp +++ b/packages/react-native-gesture-handler/shared/shadowNodes/react/renderer/components/rngesturehandler_codegen/RNGestureHandlerDetectorShadowNode.cpp @@ -156,11 +156,15 @@ RNGestureHandlerDetectorShadowNode::unflattenNode( std::static_pointer_cast(clonedNode); clonedNodeWithProtectedAccess->traits_.set(ShadowNodeTraits::FormsView); + #ifdef ANDROID + // Android TextView is not a ViewGroup, so a Paragraph must not form a + // stacking context or its inline views get mounted into it and crash if (std::strcmp(node->getComponentName(), "Paragraph") == 0) { return clonedNode; } #endif + clonedNodeWithProtectedAccess->traits_.set( ShadowNodeTraits::FormsStackingContext);