Commit 98164cb
committed
Fix: Stylesheet in error UI suspends indefinitely (#27265)
This fixes the regression test added in the previous commit. The
"Suspensey commit" implementation relies on the
`shouldRemainOnPreviousScreen` function to determine whether to 1)
suspend the commit 2) activate a parent fallback and schedule a retry.
The issue was that we were sometimes attempting option 2 even when there
was no parent fallback.
Part of the reason this bug landed is due to how `throwException` is
structured. In the case of Suspensey commits, we pass a special "noop"
thenable to `throwException` as a way to trigger the Suspense path. This
special thenable must never have a listener attached to it. This is not
a great way to structure the logic, it's just a consequence of how the
code evolved over time. We should refactor it into multiple functions so
we can trigger a fallback directly without having to check the type. In
the meantime, I added an internal warning to help detect similar
mistakes in the future.
DiffTrain build for commit dd480ef.1 parent 5043aee commit 98164cb
13 files changed
Lines changed: 331 additions & 316 deletions
File tree
- compiled-rn/facebook-fbsource/xplat/js
- RKJSModules/vendor
- react-test-renderer/cjs
- react/cjs
- react-native-github/Libraries/Renderer
- implementations
Lines changed: 53 additions & 42 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 | | |
| |||
4071 | 4071 | | |
4072 | 4072 | | |
4073 | 4073 | | |
4074 | | - | |
| 4074 | + | |
| 4075 | + | |
| 4076 | + | |
| 4077 | + | |
| 4078 | + | |
| 4079 | + | |
| 4080 | + | |
| 4081 | + | |
4075 | 4082 | | |
4076 | 4083 | | |
4077 | 4084 | | |
| |||
11072 | 11079 | | |
11073 | 11080 | | |
11074 | 11081 | | |
| 11082 | + | |
| 11083 | + | |
| 11084 | + | |
| 11085 | + | |
| 11086 | + | |
| 11087 | + | |
11075 | 11088 | | |
11076 | 11089 | | |
11077 | 11090 | | |
11078 | | - | |
| 11091 | + | |
11079 | 11092 | | |
11080 | 11093 | | |
11081 | 11094 | | |
| |||
11106 | 11119 | | |
11107 | 11120 | | |
11108 | 11121 | | |
11109 | | - | |
11110 | 11122 | | |
11111 | | - | |
11112 | | - | |
11113 | | - | |
| 11123 | + | |
| 11124 | + | |
11114 | 11125 | | |
11115 | | - | |
11116 | | - | |
11117 | | - | |
11118 | | - | |
11119 | | - | |
11120 | | - | |
11121 | | - | |
| 11126 | + | |
| 11127 | + | |
11122 | 11128 | | |
11123 | | - | |
11124 | | - | |
11125 | | - | |
11126 | | - | |
11127 | | - | |
11128 | 11129 | | |
11129 | 11130 | | |
11130 | | - | |
| 11131 | + | |
| 11132 | + | |
| 11133 | + | |
| 11134 | + | |
| 11135 | + | |
| 11136 | + | |
11131 | 11137 | | |
11132 | 11138 | | |
11133 | 11139 | | |
| |||
20983 | 20989 | | |
20984 | 20990 | | |
20985 | 20991 | | |
20986 | | - | |
| 20992 | + | |
| 20993 | + | |
| 20994 | + | |
| 20995 | + | |
| 20996 | + | |
| 20997 | + | |
| 20998 | + | |
| 20999 | + | |
| 21000 | + | |
| 21001 | + | |
20987 | 21002 | | |
20988 | 21003 | | |
| 21004 | + | |
20989 | 21005 | | |
20990 | 21006 | | |
20991 | 21007 | | |
| |||
21001 | 21017 | | |
21002 | 21018 | | |
21003 | 21019 | | |
21004 | | - | |
21005 | | - | |
21006 | | - | |
21007 | | - | |
21008 | | - | |
21009 | | - | |
21010 | | - | |
21011 | | - | |
21012 | | - | |
21013 | | - | |
21014 | | - | |
21015 | | - | |
21016 | | - | |
21017 | | - | |
21018 | | - | |
21019 | | - | |
21020 | | - | |
21021 | | - | |
21022 | | - | |
21023 | | - | |
| 21020 | + | |
| 21021 | + | |
| 21022 | + | |
| 21023 | + | |
| 21024 | + | |
| 21025 | + | |
| 21026 | + | |
| 21027 | + | |
| 21028 | + | |
| 21029 | + | |
| 21030 | + | |
| 21031 | + | |
| 21032 | + | |
| 21033 | + | |
| 21034 | + | |
21024 | 21035 | | |
21025 | 21036 | | |
21026 | 21037 | | |
| |||
23966 | 23977 | | |
23967 | 23978 | | |
23968 | 23979 | | |
23969 | | - | |
| 23980 | + | |
23970 | 23981 | | |
23971 | 23982 | | |
23972 | 23983 | | |
| |||
Lines changed: 28 additions & 31 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 | | |
| |||
6731 | 6731 | | |
6732 | 6732 | | |
6733 | 6733 | | |
6734 | | - | |
6735 | | - | |
6736 | | - | |
6737 | | - | |
6738 | | - | |
6739 | | - | |
6740 | | - | |
6741 | | - | |
6742 | | - | |
6743 | | - | |
6744 | | - | |
| 6734 | + | |
6745 | 6735 | | |
6746 | | - | |
6747 | | - | |
6748 | | - | |
6749 | | - | |
6750 | | - | |
| 6736 | + | |
| 6737 | + | |
| 6738 | + | |
| 6739 | + | |
| 6740 | + | |
| 6741 | + | |
| 6742 | + | |
| 6743 | + | |
| 6744 | + | |
| 6745 | + | |
| 6746 | + | |
| 6747 | + | |
6751 | 6748 | | |
6752 | 6749 | | |
6753 | 6750 | | |
| |||
7074 | 7071 | | |
7075 | 7072 | | |
7076 | 7073 | | |
| 7074 | + | |
| 7075 | + | |
7077 | 7076 | | |
7078 | | - | |
| 7077 | + | |
7079 | 7078 | | |
7080 | 7079 | | |
7081 | 7080 | | |
| |||
7096 | 7095 | | |
7097 | 7096 | | |
7098 | 7097 | | |
| 7098 | + | |
7099 | 7099 | | |
7100 | | - | |
| 7100 | + | |
7101 | 7101 | | |
7102 | | - | |
7103 | | - | |
7104 | | - | |
7105 | | - | |
7106 | | - | |
7107 | | - | |
7108 | 7102 | | |
7109 | | - | |
7110 | | - | |
7111 | | - | |
7112 | | - | |
| 7103 | + | |
| 7104 | + | |
| 7105 | + | |
| 7106 | + | |
| 7107 | + | |
| 7108 | + | |
| 7109 | + | |
7113 | 7110 | | |
7114 | 7111 | | |
7115 | 7112 | | |
| |||
8615 | 8612 | | |
8616 | 8613 | | |
8617 | 8614 | | |
8618 | | - | |
| 8615 | + | |
8619 | 8616 | | |
8620 | 8617 | | |
8621 | 8618 | | |
| |||
8646 | 8643 | | |
8647 | 8644 | | |
8648 | 8645 | | |
8649 | | - | |
| 8646 | + | |
8650 | 8647 | | |
8651 | 8648 | | |
8652 | 8649 | | |
| |||
Lines changed: 28 additions & 31 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 | | |
| |||
7071 | 7071 | | |
7072 | 7072 | | |
7073 | 7073 | | |
7074 | | - | |
7075 | | - | |
7076 | | - | |
7077 | | - | |
7078 | | - | |
7079 | | - | |
7080 | | - | |
7081 | | - | |
7082 | | - | |
7083 | | - | |
7084 | | - | |
| 7074 | + | |
7085 | 7075 | | |
7086 | | - | |
7087 | | - | |
7088 | | - | |
7089 | | - | |
7090 | | - | |
| 7076 | + | |
| 7077 | + | |
| 7078 | + | |
| 7079 | + | |
| 7080 | + | |
| 7081 | + | |
| 7082 | + | |
| 7083 | + | |
| 7084 | + | |
| 7085 | + | |
| 7086 | + | |
| 7087 | + | |
7091 | 7088 | | |
7092 | 7089 | | |
7093 | 7090 | | |
| |||
7426 | 7423 | | |
7427 | 7424 | | |
7428 | 7425 | | |
| 7426 | + | |
| 7427 | + | |
7429 | 7428 | | |
7430 | | - | |
| 7429 | + | |
7431 | 7430 | | |
7432 | 7431 | | |
7433 | 7432 | | |
| |||
7448 | 7447 | | |
7449 | 7448 | | |
7450 | 7449 | | |
| 7450 | + | |
7451 | 7451 | | |
7452 | | - | |
| 7452 | + | |
7453 | 7453 | | |
7454 | | - | |
7455 | | - | |
7456 | | - | |
7457 | | - | |
7458 | | - | |
7459 | | - | |
7460 | 7454 | | |
7461 | | - | |
7462 | | - | |
7463 | | - | |
7464 | | - | |
| 7455 | + | |
| 7456 | + | |
| 7457 | + | |
| 7458 | + | |
| 7459 | + | |
| 7460 | + | |
| 7461 | + | |
7465 | 7462 | | |
7466 | 7463 | | |
7467 | 7464 | | |
| |||
9041 | 9038 | | |
9042 | 9039 | | |
9043 | 9040 | | |
9044 | | - | |
| 9041 | + | |
9045 | 9042 | | |
9046 | 9043 | | |
9047 | 9044 | | |
| |||
9072 | 9069 | | |
9073 | 9070 | | |
9074 | 9071 | | |
9075 | | - | |
| 9072 | + | |
9076 | 9073 | | |
9077 | 9074 | | |
9078 | 9075 | | |
| |||
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 | + | |
0 commit comments