diff --git a/packages/react-native/ReactAndroid/src/main/jni/react/fabric/FabricMountingManager.cpp b/packages/react-native/ReactAndroid/src/main/jni/react/fabric/FabricMountingManager.cpp index a54e6af8f6c..16ab55a3991 100644 --- a/packages/react-native/ReactAndroid/src/main/jni/react/fabric/FabricMountingManager.cpp +++ b/packages/react-native/ReactAndroid/src/main/jni/react/fabric/FabricMountingManager.cpp @@ -223,13 +223,9 @@ jni::local_ref getProps( auto* oldProps = oldShadowView.props.get(); auto* newProps = newShadowView.props.get(); if ((ReactNativeFeatureFlags::enablePropsUpdateReconciliationAndroid()) && - (strcmp(newShadowView.componentName, "View") == 0 || - strcmp(newShadowView.componentName, "Image") == 0 || - strcmp(newShadowView.componentName, "ScrollView") == 0 || - strcmp(newShadowView.componentName, "RawText") == 0 || - strcmp(newShadowView.componentName, "Text") == 0 || - strcmp(newShadowView.componentName, "Paragraph") == 0 || - strcmp(newShadowView.componentName, "TextInput") == 0)) { + strcmp( + newShadowView.componentName, + newProps->getDiffPropsImplementationTarget()) == 0) { return ReadableNativeMap::newObjectCxxArgs( newProps->getDiffProps(oldProps)); } diff --git a/packages/react-native/ReactCommon/react/renderer/components/image/ImageProps.cpp b/packages/react-native/ReactCommon/react/renderer/components/image/ImageProps.cpp index ce494dfb0ac..bd3d4dcb78a 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/image/ImageProps.cpp +++ b/packages/react-native/ReactCommon/react/renderer/components/image/ImageProps.cpp @@ -185,6 +185,10 @@ static folly::dynamic convertEdgeInsets(const EdgeInsets& edgeInsets) { return edgeInsetsResult; } +ComponentName ImageProps::getDiffPropsImplementationTarget() const { + return "Image"; +} + folly::dynamic ImageProps::getDiffProps(const Props* prevProps) const { static const auto defaultProps = ImageProps(); diff --git a/packages/react-native/ReactCommon/react/renderer/components/image/ImageProps.h b/packages/react-native/ReactCommon/react/renderer/components/image/ImageProps.h index ccf92c7e7ca..e4de618494b 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/image/ImageProps.h +++ b/packages/react-native/ReactCommon/react/renderer/components/image/ImageProps.h @@ -47,6 +47,7 @@ class ImageProps final : public ViewProps { bool progressiveRenderingEnabled{}; #ifdef RN_SERIALIZABLE_STATE + ComponentName getDiffPropsImplementationTarget() const override; folly::dynamic getDiffProps(const Props* prevProps) const override; #endif }; diff --git a/packages/react-native/ReactCommon/react/renderer/components/scrollview/platform/android/react/renderer/components/scrollview/HostPlatformScrollViewProps.cpp b/packages/react-native/ReactCommon/react/renderer/components/scrollview/platform/android/react/renderer/components/scrollview/HostPlatformScrollViewProps.cpp index 71dec44b64e..802ef8265a7 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/scrollview/platform/android/react/renderer/components/scrollview/HostPlatformScrollViewProps.cpp +++ b/packages/react-native/ReactCommon/react/renderer/components/scrollview/platform/android/react/renderer/components/scrollview/HostPlatformScrollViewProps.cpp @@ -106,6 +106,11 @@ static folly::dynamic convertPoint(const Point& point) { return pointResult; } +ComponentName HostPlatformScrollViewProps::getDiffPropsImplementationTarget() + const { + return "ScrollView"; +} + folly::dynamic HostPlatformScrollViewProps::getDiffProps( const Props* prevProps) const { static const auto defaultProps = HostPlatformScrollViewProps(); diff --git a/packages/react-native/ReactCommon/react/renderer/components/scrollview/platform/android/react/renderer/components/scrollview/HostPlatformScrollViewProps.h b/packages/react-native/ReactCommon/react/renderer/components/scrollview/platform/android/react/renderer/components/scrollview/HostPlatformScrollViewProps.h index d62179a62b8..4c54decb939 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/scrollview/platform/android/react/renderer/components/scrollview/HostPlatformScrollViewProps.h +++ b/packages/react-native/ReactCommon/react/renderer/components/scrollview/platform/android/react/renderer/components/scrollview/HostPlatformScrollViewProps.h @@ -39,6 +39,7 @@ class HostPlatformScrollViewProps final : public BaseScrollViewProps { SharedDebugStringConvertibleList getDebugProps() const override; #endif + ComponentName getDiffPropsImplementationTarget() const override; folly::dynamic getDiffProps(const Props* prevProps) const override; }; diff --git a/packages/react-native/ReactCommon/react/renderer/components/text/ParagraphProps.cpp b/packages/react-native/ReactCommon/react/renderer/components/text/ParagraphProps.cpp index 7119757fdc5..095e868d8fc 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/text/ParagraphProps.cpp +++ b/packages/react-native/ReactCommon/react/renderer/components/text/ParagraphProps.cpp @@ -154,6 +154,10 @@ SharedDebugStringConvertibleList ParagraphProps::getDebugProps() const { #ifdef RN_SERIALIZABLE_STATE +ComponentName ParagraphProps::getDiffPropsImplementationTarget() const { + return "Paragraph"; +} + folly::dynamic ParagraphProps::getDiffProps(const Props* prevProps) const { static const auto defaultProps = ParagraphProps(); diff --git a/packages/react-native/ReactCommon/react/renderer/components/text/ParagraphProps.h b/packages/react-native/ReactCommon/react/renderer/components/text/ParagraphProps.h index 0622568c8a6..3acafb2641d 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/text/ParagraphProps.h +++ b/packages/react-native/ReactCommon/react/renderer/components/text/ParagraphProps.h @@ -59,6 +59,7 @@ class ParagraphProps : public ViewProps, public BaseTextProps { #endif #ifdef RN_SERIALIZABLE_STATE + ComponentName getDiffPropsImplementationTarget() const override; folly::dynamic getDiffProps(const Props* prevProps) const override; #endif }; diff --git a/packages/react-native/ReactCommon/react/renderer/components/text/RawTextProps.cpp b/packages/react-native/ReactCommon/react/renderer/components/text/RawTextProps.cpp index e49c26c1919..bcf58b8de12 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/text/RawTextProps.cpp +++ b/packages/react-native/ReactCommon/react/renderer/components/text/RawTextProps.cpp @@ -30,6 +30,10 @@ SharedDebugStringConvertibleList RawTextProps::getDebugProps() const { #ifdef RN_SERIALIZABLE_STATE +ComponentName RawTextProps::getDiffPropsImplementationTarget() const { + return "RawText"; +} + folly::dynamic RawTextProps::getDiffProps(const Props* prevProps) const { folly::dynamic result = folly::dynamic::object(); diff --git a/packages/react-native/ReactCommon/react/renderer/components/text/RawTextProps.h b/packages/react-native/ReactCommon/react/renderer/components/text/RawTextProps.h index 79cacf70bef..4a086254413 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/text/RawTextProps.h +++ b/packages/react-native/ReactCommon/react/renderer/components/text/RawTextProps.h @@ -38,6 +38,7 @@ class RawTextProps : public Props { #endif #ifdef RN_SERIALIZABLE_STATE + ComponentName getDiffPropsImplementationTarget() const override; folly::dynamic getDiffProps(const Props* prevProps) const override; #endif }; diff --git a/packages/react-native/ReactCommon/react/renderer/components/text/TextProps.cpp b/packages/react-native/ReactCommon/react/renderer/components/text/TextProps.cpp index b4913bb89fb..d013aa04a03 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/text/TextProps.cpp +++ b/packages/react-native/ReactCommon/react/renderer/components/text/TextProps.cpp @@ -35,6 +35,10 @@ SharedDebugStringConvertibleList TextProps::getDebugProps() const { #ifdef RN_SERIALIZABLE_STATE +ComponentName TextProps::getDiffPropsImplementationTarget() const { + return "Text"; +} + folly::dynamic TextProps::getDiffProps(const Props* prevProps) const { folly::dynamic result = folly::dynamic::object(); diff --git a/packages/react-native/ReactCommon/react/renderer/components/text/TextProps.h b/packages/react-native/ReactCommon/react/renderer/components/text/TextProps.h index 7fbdf9b6456..2cb00fc39cf 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/text/TextProps.h +++ b/packages/react-native/ReactCommon/react/renderer/components/text/TextProps.h @@ -36,6 +36,7 @@ class TextProps : public Props, public BaseTextProps { #endif #ifdef RN_SERIALIZABLE_STATE + ComponentName getDiffPropsImplementationTarget() const override; folly::dynamic getDiffProps(const Props* prevProps) const override; #endif }; diff --git a/packages/react-native/ReactCommon/react/renderer/components/textinput/platform/android/react/renderer/components/androidtextinput/AndroidTextInputProps.cpp b/packages/react-native/ReactCommon/react/renderer/components/textinput/platform/android/react/renderer/components/androidtextinput/AndroidTextInputProps.cpp index 69f18ca91f8..bc5db3a4d67 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/textinput/platform/android/react/renderer/components/androidtextinput/AndroidTextInputProps.cpp +++ b/packages/react-native/ReactCommon/react/renderer/components/textinput/platform/android/react/renderer/components/androidtextinput/AndroidTextInputProps.cpp @@ -366,6 +366,10 @@ static folly::dynamic toDynamic( return acceptDragAndDropTypesArray; } +ComponentName AndroidTextInputProps::getDiffPropsImplementationTarget() const { + return "TextInput"; +} + folly::dynamic AndroidTextInputProps::getDiffProps( const Props* prevProps) const { static const auto defaultProps = AndroidTextInputProps(); diff --git a/packages/react-native/ReactCommon/react/renderer/components/textinput/platform/android/react/renderer/components/androidtextinput/AndroidTextInputProps.h b/packages/react-native/ReactCommon/react/renderer/components/textinput/platform/android/react/renderer/components/androidtextinput/AndroidTextInputProps.h index ca3636a2213..26753b62d72 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/textinput/platform/android/react/renderer/components/androidtextinput/AndroidTextInputProps.h +++ b/packages/react-native/ReactCommon/react/renderer/components/textinput/platform/android/react/renderer/components/androidtextinput/AndroidTextInputProps.h @@ -133,6 +133,7 @@ class AndroidTextInputProps final : public BaseTextInputProps { SharedDebugStringConvertibleList getDebugProps() const override; #endif + ComponentName getDiffPropsImplementationTarget() const override; folly::dynamic getDiffProps(const Props* prevProps) const override; }; diff --git a/packages/react-native/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/HostPlatformViewProps.cpp b/packages/react-native/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/HostPlatformViewProps.cpp index e64a92fbc31..fe5d271f1cc 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/HostPlatformViewProps.cpp +++ b/packages/react-native/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/HostPlatformViewProps.cpp @@ -539,6 +539,10 @@ static folly::dynamic toDynamic(const EdgeInsets& edgeInsets) { return edgeInsetsResult; } +ComponentName HostPlatformViewProps::getDiffPropsImplementationTarget() const { + return "View"; +} + folly::dynamic HostPlatformViewProps::getDiffProps( const Props* prevProps) const { folly::dynamic result = folly::dynamic::object(); diff --git a/packages/react-native/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/HostPlatformViewProps.h b/packages/react-native/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/HostPlatformViewProps.h index a87a9dd1e3a..78b3995df88 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/HostPlatformViewProps.h +++ b/packages/react-native/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/HostPlatformViewProps.h @@ -58,6 +58,7 @@ class HostPlatformViewProps : public BaseViewProps { #endif #ifdef RN_SERIALIZABLE_STATE + ComponentName getDiffPropsImplementationTarget() const override; folly::dynamic getDiffProps(const Props* prevProps) const override; #endif }; diff --git a/packages/react-native/ReactCommon/react/renderer/core/Props.h b/packages/react-native/ReactCommon/react/renderer/core/Props.h index 75cf5a3e846..3ddb6041833 100644 --- a/packages/react-native/ReactCommon/react/renderer/core/Props.h +++ b/packages/react-native/ReactCommon/react/renderer/core/Props.h @@ -66,6 +66,10 @@ class Props : public virtual Sealable, public virtual DebugStringConvertible { #ifdef RN_SERIALIZABLE_STATE folly::dynamic rawProps = folly::dynamic::object(); + virtual ComponentName getDiffPropsImplementationTarget() const { + return ""; + } + virtual folly::dynamic getDiffProps(const Props* prevProps) const { return folly::dynamic::object(); }