Commit a19627e
committed
[Fabric] Pass children when cloning (#27458)
## Summary
Currently when cloning nodes in Fabric, we reset a node's children on
each clone, and then repeatedly call appendChild to restore the previous
list of children (even if it was quasi-identical to before). This causes
unnecessary invalidation of the layout state in Fabric's ShadowNode data
(which in turn may require additional yoga clones) and extra JSI calls.
This PR adds a feature flag to pass in the children as part of the clone
call, so Fabric always has a complete view of the node that's being
mutated.
This feature flag requires matching changes in the react-native repo:
facebook/react-native#39817
## How did you test this change?
Unit test added demonstrates the new behaviour
```
yarn test -r www-modern ReactFabric-test
yarn test ReactFabric-test.internal
```
Tested a manual sync into React Native and verified core surfaces render
correctly.
DiffTrain build for commit 151e75a.1 parent c6c6388 commit a19627e
File tree
11 files changed
+241
-126
lines changed- compiled-rn/facebook-fbsource/xplat/js
- RKJSModules/vendor
- react-test-renderer/cjs
- react/cjs
- react-native-github/Libraries/Renderer
- implementations
11 files changed
+241
-126
lines changedLines changed: 4 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
7 | 7 | | |
8 | 8 | | |
9 | 9 | | |
10 | | - | |
| 10 | + | |
11 | 11 | | |
12 | 12 | | |
13 | 13 | | |
| |||
16335 | 16335 | | |
16336 | 16336 | | |
16337 | 16337 | | |
16338 | | - | |
| 16338 | + | |
| 16339 | + | |
16339 | 16340 | | |
16340 | 16341 | | |
16341 | 16342 | | |
| |||
24772 | 24773 | | |
24773 | 24774 | | |
24774 | 24775 | | |
24775 | | - | |
| 24776 | + | |
24776 | 24777 | | |
24777 | 24778 | | |
24778 | 24779 | | |
| |||
Lines changed: 2 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
8978 | 8978 | | |
8979 | 8979 | | |
8980 | 8980 | | |
8981 | | - | |
| 8981 | + | |
8982 | 8982 | | |
8983 | 8983 | | |
8984 | 8984 | | |
| |||
9009 | 9009 | | |
9010 | 9010 | | |
9011 | 9011 | | |
9012 | | - | |
| 9012 | + | |
9013 | 9013 | | |
9014 | 9014 | | |
9015 | 9015 | | |
| |||
Lines changed: 2 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
9404 | 9404 | | |
9405 | 9405 | | |
9406 | 9406 | | |
9407 | | - | |
| 9407 | + | |
9408 | 9408 | | |
9409 | 9409 | | |
9410 | 9410 | | |
| |||
9435 | 9435 | | |
9436 | 9436 | | |
9437 | 9437 | | |
9438 | | - | |
| 9438 | + | |
9439 | 9439 | | |
9440 | 9440 | | |
9441 | 9441 | | |
| |||
Lines changed: 1 addition & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
27 | 27 | | |
28 | 28 | | |
29 | 29 | | |
30 | | - | |
| 30 | + | |
31 | 31 | | |
32 | 32 | | |
33 | 33 | | |
| |||
Lines changed: 1 addition & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
616 | 616 | | |
617 | 617 | | |
618 | 618 | | |
619 | | - | |
| 619 | + | |
Lines changed: 1 addition & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
619 | 619 | | |
620 | 620 | | |
621 | 621 | | |
622 | | - | |
| 622 | + | |
623 | 623 | | |
624 | 624 | | |
625 | 625 | | |
| |||
Lines changed: 1 addition & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | | - | |
| 1 | + | |
Lines changed: 89 additions & 28 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
7 | 7 | | |
8 | 8 | | |
9 | 9 | | |
10 | | - | |
| 10 | + | |
11 | 11 | | |
12 | 12 | | |
13 | 13 | | |
| |||
3180 | 3180 | | |
3181 | 3181 | | |
3182 | 3182 | | |
3183 | | - | |
| 3183 | + | |
| 3184 | + | |
| 3185 | + | |
3184 | 3186 | | |
3185 | 3187 | | |
3186 | 3188 | | |
| |||
5007 | 5009 | | |
5008 | 5010 | | |
5009 | 5011 | | |
5010 | | - | |
5011 | 5012 | | |
5012 | | - | |
| 5013 | + | |
5013 | 5014 | | |
5014 | 5015 | | |
5015 | 5016 | | |
| |||
5028 | 5029 | | |
5029 | 5030 | | |
5030 | 5031 | | |
5031 | | - | |
5032 | | - | |
| 5032 | + | |
| 5033 | + | |
| 5034 | + | |
| 5035 | + | |
| 5036 | + | |
| 5037 | + | |
| 5038 | + | |
| 5039 | + | |
| 5040 | + | |
| 5041 | + | |
| 5042 | + | |
5033 | 5043 | | |
5034 | | - | |
| 5044 | + | |
| 5045 | + | |
| 5046 | + | |
| 5047 | + | |
| 5048 | + | |
5035 | 5049 | | |
5036 | 5050 | | |
5037 | 5051 | | |
| |||
5040 | 5054 | | |
5041 | 5055 | | |
5042 | 5056 | | |
5043 | | - | |
| 5057 | + | |
5044 | 5058 | | |
5045 | 5059 | | |
5046 | 5060 | | |
| |||
5056 | 5070 | | |
5057 | 5071 | | |
5058 | 5072 | | |
5059 | | - | |
| 5073 | + | |
5060 | 5074 | | |
5061 | 5075 | | |
5062 | | - | |
5063 | | - | |
| 5076 | + | |
| 5077 | + | |
| 5078 | + | |
| 5079 | + | |
| 5080 | + | |
| 5081 | + | |
5064 | 5082 | | |
5065 | 5083 | | |
5066 | | - | |
| 5084 | + | |
| 5085 | + | |
| 5086 | + | |
| 5087 | + | |
| 5088 | + | |
5067 | 5089 | | |
5068 | 5090 | | |
5069 | 5091 | | |
5070 | 5092 | | |
5071 | | - | |
| 5093 | + | |
| 5094 | + | |
| 5095 | + | |
5072 | 5096 | | |
5073 | 5097 | | |
5074 | 5098 | | |
| |||
18734 | 18758 | | |
18735 | 18759 | | |
18736 | 18760 | | |
18737 | | - | |
18738 | 18761 | | |
18739 | 18762 | | |
18740 | 18763 | | |
| |||
18764 | 18787 | | |
18765 | 18788 | | |
18766 | 18789 | | |
18767 | | - | |
| 18790 | + | |
| 18791 | + | |
| 18792 | + | |
| 18793 | + | |
| 18794 | + | |
| 18795 | + | |
| 18796 | + | |
| 18797 | + | |
18768 | 18798 | | |
18769 | 18799 | | |
18770 | 18800 | | |
| |||
18836 | 18866 | | |
18837 | 18867 | | |
18838 | 18868 | | |
| 18869 | + | |
18839 | 18870 | | |
| 18871 | + | |
18840 | 18872 | | |
18841 | 18873 | | |
18842 | 18874 | | |
| |||
18874 | 18906 | | |
18875 | 18907 | | |
18876 | 18908 | | |
18877 | | - | |
| 18909 | + | |
18878 | 18910 | | |
18879 | | - | |
| 18911 | + | |
| 18912 | + | |
| 18913 | + | |
| 18914 | + | |
| 18915 | + | |
| 18916 | + | |
| 18917 | + | |
| 18918 | + | |
18880 | 18919 | | |
18881 | 18920 | | |
18882 | 18921 | | |
| |||
18905 | 18944 | | |
18906 | 18945 | | |
18907 | 18946 | | |
| 18947 | + | |
18908 | 18948 | | |
| 18949 | + | |
| 18950 | + | |
| 18951 | + | |
| 18952 | + | |
| 18953 | + | |
| 18954 | + | |
| 18955 | + | |
| 18956 | + | |
| 18957 | + | |
| 18958 | + | |
| 18959 | + | |
| 18960 | + | |
| 18961 | + | |
| 18962 | + | |
| 18963 | + | |
18909 | 18964 | | |
18910 | 18965 | | |
18911 | 18966 | | |
18912 | 18967 | | |
18913 | 18968 | | |
18914 | | - | |
18915 | | - | |
| 18969 | + | |
| 18970 | + | |
18916 | 18971 | | |
18917 | 18972 | | |
18918 | 18973 | | |
18919 | 18974 | | |
18920 | 18975 | | |
18921 | 18976 | | |
18922 | 18977 | | |
18923 | | - | |
| 18978 | + | |
18924 | 18979 | | |
18925 | 18980 | | |
18926 | 18981 | | |
| |||
18929 | 18984 | | |
18930 | 18985 | | |
18931 | 18986 | | |
18932 | | - | |
| 18987 | + | |
18933 | 18988 | | |
18934 | | - | |
| 18989 | + | |
| 18990 | + | |
| 18991 | + | |
| 18992 | + | |
| 18993 | + | |
| 18994 | + | |
| 18995 | + | |
| 18996 | + | |
18935 | 18997 | | |
18936 | 18998 | | |
18937 | 18999 | | |
| |||
19399 | 19461 | | |
19400 | 19462 | | |
19401 | 19463 | | |
19402 | | - | |
| 19464 | + | |
| 19465 | + | |
19403 | 19466 | | |
19404 | 19467 | | |
19405 | 19468 | | |
| |||
21092 | 21155 | | |
21093 | 21156 | | |
21094 | 21157 | | |
21095 | | - | |
21096 | | - | |
21097 | | - | |
| 21158 | + | |
21098 | 21159 | | |
21099 | 21160 | | |
21100 | 21161 | | |
| |||
21167 | 21228 | | |
21168 | 21229 | | |
21169 | 21230 | | |
21170 | | - | |
| 21231 | + | |
21171 | 21232 | | |
21172 | 21233 | | |
21173 | 21234 | | |
| |||
27063 | 27124 | | |
27064 | 27125 | | |
27065 | 27126 | | |
27066 | | - | |
| 27127 | + | |
27067 | 27128 | | |
27068 | 27129 | | |
27069 | 27130 | | |
| |||
0 commit comments