diff --git a/ReactCommon/react/renderer/mounting/StubViewTree.cpp b/ReactCommon/react/renderer/mounting/StubViewTree.cpp index 77be82e032e..0dafb5419d8 100644 --- a/ReactCommon/react/renderer/mounting/StubViewTree.cpp +++ b/ReactCommon/react/renderer/mounting/StubViewTree.cpp @@ -93,6 +93,10 @@ void StubViewTree::mutate(ShadowViewMutationList const &mutations) { childStubView->parentTag = parentTag; parentStubView->children.insert( parentStubView->children.begin() + mutation.index, childStubView); + } else { + auto childTag = mutation.newChildShadowView.tag; + auto childStubView = registry[childTag]; + childStubView->update(mutation.newChildShadowView); } break; } @@ -151,13 +155,15 @@ void StubViewTree::mutate(ShadowViewMutationList const &mutations) { registry.find(mutation.newChildShadowView.tag) != registry.end()); auto oldStubView = registry[mutation.newChildShadowView.tag]; react_native_assert(oldStubView->tag != 0); - if ((ShadowView)(*oldStubView) != mutation.oldChildShadowView) { - LOG(ERROR) - << "UPDATE mutation assertion failure: oldChildShadowView doesn't match oldStubView: [" - << mutation.oldChildShadowView.tag << "]"; + if (!mutation.mutatedViewIsVirtual()) { + if ((ShadowView)(*oldStubView) != mutation.oldChildShadowView) { + LOG(ERROR) + << "UPDATE mutation assertion failure: oldChildShadowView doesn't match oldStubView: [" + << mutation.oldChildShadowView.tag << "]"; + } + react_native_assert( + (ShadowView)(*oldStubView) == mutation.oldChildShadowView); } - react_native_assert( - (ShadowView)(*oldStubView) == mutation.oldChildShadowView); oldStubView->update(mutation.newChildShadowView); break; }