diff --git a/android/src/main/java/com/swmansion/reanimated/NodesManager.java b/android/src/main/java/com/swmansion/reanimated/NodesManager.java index 1e637197a355..16af193f5075 100644 --- a/android/src/main/java/com/swmansion/reanimated/NodesManager.java +++ b/android/src/main/java/com/swmansion/reanimated/NodesManager.java @@ -1,7 +1,7 @@ package com.swmansion.reanimated; import static java.lang.Float.NaN; - +import android.util.Log; import android.view.View; import com.facebook.react.bridge.Arguments; import com.facebook.react.bridge.GuardedRunnable; @@ -345,6 +345,19 @@ public void sendEvent(String name, WritableMap body) { } public void updateProps(int viewTag, Map props) { + // We need to check current view exist in UIManager or not + // Sometime, view can be replace, recycle, ... with wrong way (like FlashList) + // So before update, We need to check view tag exist in UIManager + try { + View view = mUIManager.resolveView(viewTag); + if(view == null) { + return; + } + } catch (Exception ex) { + Log.d("Reanimated-updateProps", "Skip update props cause viewTag not exist or have been removed!"); + return; + } + // TODO: update PropsNode to use this method instead of its own way of updating props boolean hasUIProps = false; boolean hasNativeProps = false;