Commit 651e755
committed
stash the component stack on the thrown value and reuse (#25790)
ErrorBoundaries are currently not fully composable. The reason is if you
decide your boundary cannot handle a particular error and rethrow it to
higher boundary the React runtime does not understand that this throw is
a forward and it recreates the component stack from the Boundary
position. This loses fidelity and is especially bad if the boundary is
limited it what it handles and high up in the component tree.
This implementation uses a WeakMap to store component stacks for values
that are objects. If an error is rethrown from an ErrorBoundary the
stack will be pulled from the map if it exists. This doesn't work for
thrown primitives but this is uncommon and stashing the stack on the
primitive also wouldn't work
DiffTrain build for [a9cc325](a9cc325)1 parent b19c9fe commit 651e755
File tree
19 files changed
+647
-447
lines changed- compiled/facebook-www
19 files changed
+647
-447
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | | - | |
| 1 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
618 | 618 | | |
619 | 619 | | |
620 | 620 | | |
621 | | - | |
| 621 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
622 | 622 | | |
623 | 623 | | |
624 | 624 | | |
625 | | - | |
| 625 | + | |
626 | 626 | | |
627 | 627 | | |
628 | 628 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
66 | 66 | | |
67 | 67 | | |
68 | 68 | | |
69 | | - | |
| 69 | + | |
70 | 70 | | |
71 | 71 | | |
72 | 72 | | |
| |||
13644 | 13644 | | |
13645 | 13645 | | |
13646 | 13646 | | |
| 13647 | + | |
13647 | 13648 | | |
13648 | 13649 | | |
13649 | 13650 | | |
| 13651 | + | |
| 13652 | + | |
| 13653 | + | |
| 13654 | + | |
| 13655 | + | |
| 13656 | + | |
| 13657 | + | |
| 13658 | + | |
| 13659 | + | |
| 13660 | + | |
| 13661 | + | |
| 13662 | + | |
| 13663 | + | |
| 13664 | + | |
| 13665 | + | |
13650 | 13666 | | |
13651 | 13667 | | |
13652 | 13668 | | |
13653 | | - | |
| 13669 | + | |
13654 | 13670 | | |
13655 | 13671 | | |
13656 | 13672 | | |
13657 | | - | |
| 13673 | + | |
| 13674 | + | |
| 13675 | + | |
| 13676 | + | |
| 13677 | + | |
13658 | 13678 | | |
13659 | 13679 | | |
13660 | 13680 | | |
| |||
16638 | 16658 | | |
16639 | 16659 | | |
16640 | 16660 | | |
16641 | | - | |
| 16661 | + | |
16642 | 16662 | | |
16643 | 16663 | | |
16644 | 16664 | | |
| |||
16763 | 16783 | | |
16764 | 16784 | | |
16765 | 16785 | | |
16766 | | - | |
| 16786 | + | |
16767 | 16787 | | |
16768 | 16788 | | |
16769 | 16789 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
66 | 66 | | |
67 | 67 | | |
68 | 68 | | |
69 | | - | |
| 69 | + | |
70 | 70 | | |
71 | 71 | | |
72 | 72 | | |
| |||
13368 | 13368 | | |
13369 | 13369 | | |
13370 | 13370 | | |
| 13371 | + | |
13371 | 13372 | | |
13372 | 13373 | | |
13373 | 13374 | | |
| 13375 | + | |
| 13376 | + | |
| 13377 | + | |
| 13378 | + | |
| 13379 | + | |
| 13380 | + | |
| 13381 | + | |
| 13382 | + | |
| 13383 | + | |
| 13384 | + | |
| 13385 | + | |
| 13386 | + | |
| 13387 | + | |
| 13388 | + | |
| 13389 | + | |
13374 | 13390 | | |
13375 | 13391 | | |
13376 | 13392 | | |
13377 | | - | |
| 13393 | + | |
13378 | 13394 | | |
13379 | 13395 | | |
13380 | 13396 | | |
13381 | | - | |
| 13397 | + | |
| 13398 | + | |
| 13399 | + | |
| 13400 | + | |
| 13401 | + | |
13382 | 13402 | | |
13383 | 13403 | | |
13384 | 13404 | | |
| |||
16332 | 16352 | | |
16333 | 16353 | | |
16334 | 16354 | | |
16335 | | - | |
| 16355 | + | |
16336 | 16356 | | |
16337 | 16357 | | |
16338 | 16358 | | |
| |||
16457 | 16477 | | |
16458 | 16478 | | |
16459 | 16479 | | |
16460 | | - | |
| 16480 | + | |
16461 | 16481 | | |
16462 | 16482 | | |
16463 | 16483 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1748 | 1748 | | |
1749 | 1749 | | |
1750 | 1750 | | |
| 1751 | + | |
| 1752 | + | |
| 1753 | + | |
| 1754 | + | |
| 1755 | + | |
| 1756 | + | |
| 1757 | + | |
| 1758 | + | |
| 1759 | + | |
| 1760 | + | |
| 1761 | + | |
| 1762 | + | |
1751 | 1763 | | |
1752 | 1764 | | |
1753 | 1765 | | |
| |||
3978 | 3990 | | |
3979 | 3991 | | |
3980 | 3992 | | |
| 3993 | + | |
3981 | 3994 | | |
3982 | | - | |
3983 | | - | |
3984 | | - | |
3985 | | - | |
3986 | | - | |
3987 | | - | |
3988 | | - | |
3989 | | - | |
3990 | | - | |
3991 | | - | |
3992 | | - | |
3993 | | - | |
3994 | | - | |
3995 | | - | |
3996 | | - | |
3997 | | - | |
3998 | | - | |
3999 | | - | |
| 3995 | + | |
| 3996 | + | |
| 3997 | + | |
| 3998 | + | |
| 3999 | + | |
| 4000 | + | |
| 4001 | + | |
| 4002 | + | |
| 4003 | + | |
| 4004 | + | |
4000 | 4005 | | |
4001 | 4006 | | |
4002 | 4007 | | |
| |||
5178 | 5183 | | |
5179 | 5184 | | |
5180 | 5185 | | |
5181 | | - | |
| 5186 | + | |
5182 | 5187 | | |
5183 | 5188 | | |
5184 | 5189 | | |
| |||
5240 | 5245 | | |
5241 | 5246 | | |
5242 | 5247 | | |
5243 | | - | |
| 5248 | + | |
5244 | 5249 | | |
5245 | 5250 | | |
5246 | 5251 | | |
| |||
10582 | 10587 | | |
10583 | 10588 | | |
10584 | 10589 | | |
10585 | | - | |
| 10590 | + | |
10586 | 10591 | | |
10587 | 10592 | | |
10588 | 10593 | | |
10589 | 10594 | | |
10590 | | - | |
| 10595 | + | |
10591 | 10596 | | |
10592 | 10597 | | |
10593 | | - | |
10594 | | - | |
10595 | | - | |
10596 | | - | |
10597 | | - | |
| 10598 | + | |
| 10599 | + | |
| 10600 | + | |
| 10601 | + | |
| 10602 | + | |
10598 | 10603 | | |
10599 | 10604 | | |
10600 | 10605 | | |
| |||
10611 | 10616 | | |
10612 | 10617 | | |
10613 | 10618 | | |
10614 | | - | |
| 10619 | + | |
10615 | 10620 | | |
10616 | 10621 | | |
10617 | 10622 | | |
10618 | 10623 | | |
10619 | 10624 | | |
10620 | 10625 | | |
10621 | | - | |
| 10626 | + | |
10622 | 10627 | | |
10623 | 10628 | | |
10624 | | - | |
| 10629 | + | |
10625 | 10630 | | |
10626 | | - | |
10627 | | - | |
| 10631 | + | |
| 10632 | + | |
10628 | 10633 | | |
10629 | 10634 | | |
10630 | | - | |
10631 | | - | |
| 10635 | + | |
| 10636 | + | |
10632 | 10637 | | |
10633 | | - | |
| 10638 | + | |
10634 | 10639 | | |
10635 | 10640 | | |
10636 | 10641 | | |
| |||
0 commit comments