@@ -959,12 +959,7 @@ describe('ReactSuspenseWithNoopRenderer', () => {
959959 expect ( Scheduler ) . toFlushAndYield ( [ 'S' ] ) ;
960960
961961 // Schedule an update, and suspend for up to 5 seconds.
962- React . unstable_withSuspenseConfig (
963- ( ) => ReactNoop . render ( < App text = "A" /> ) ,
964- {
965- timeoutMs : 5000 ,
966- } ,
967- ) ;
962+ React . unstable_startTransition ( ( ) => ReactNoop . render ( < App text = "A" /> ) ) ;
968963 // The update should suspend.
969964 expect ( Scheduler ) . toFlushAndYield ( [ 'Suspend! [A]' , 'Loading...' ] ) ;
970965 expect ( ReactNoop . getChildren ( ) ) . toEqual ( [ span ( 'S' ) ] ) ;
@@ -976,12 +971,7 @@ describe('ReactSuspenseWithNoopRenderer', () => {
976971 expect ( ReactNoop . getChildren ( ) ) . toEqual ( [ span ( 'S' ) ] ) ;
977972
978973 // Schedule another low priority update.
979- React . unstable_withSuspenseConfig (
980- ( ) => ReactNoop . render ( < App text = "B" /> ) ,
981- {
982- timeoutMs : 10000 ,
983- } ,
984- ) ;
974+ React . unstable_startTransition ( ( ) => ReactNoop . render ( < App text = "B" /> ) ) ;
985975 // This update should also suspend.
986976 expect ( Scheduler ) . toFlushAndYield ( [ 'Suspend! [B]' , 'Loading...' ] ) ;
987977 expect ( ReactNoop . getChildren ( ) ) . toEqual ( [ span ( 'S' ) ] ) ;
@@ -2282,7 +2272,7 @@ describe('ReactSuspenseWithNoopRenderer', () => {
22822272 ReactNoop . render ( < Foo renderContent = { 1 } /> ) ;
22832273
22842274 // Took a long time to render. This is to ensure we get a long suspense time.
2285- // Could also use something like withSuspenseConfig to simulate this.
2275+ // Could also use something like startTransition to simulate this.
22862276 Scheduler . unstable_advanceTime ( 1500 ) ;
22872277 await advanceTimers ( 1500 ) ;
22882278
@@ -2314,11 +2304,7 @@ describe('ReactSuspenseWithNoopRenderer', () => {
23142304 expect ( ReactNoop . getChildren ( ) ) . toEqual ( [ span ( 'Loading A...' ) ] ) ;
23152305 } ) ;
23162306
2317- describe ( 'delays transitions when there a suspense config is supplied' , ( ) => {
2318- const SUSPENSE_CONFIG = {
2319- timeoutMs : 2000 ,
2320- } ;
2321-
2307+ describe ( 'startTransition' , ( ) => {
23222308 // @gate experimental
23232309 it ( 'top level render' , async ( ) => {
23242310 function App ( { page} ) {
@@ -2330,10 +2316,7 @@ describe('ReactSuspenseWithNoopRenderer', () => {
23302316 }
23312317
23322318 // Initial render.
2333- React . unstable_withSuspenseConfig (
2334- ( ) => ReactNoop . render ( < App page = "A" /> ) ,
2335- SUSPENSE_CONFIG ,
2336- ) ;
2319+ React . unstable_startTransition ( ( ) => ReactNoop . render ( < App page = "A" /> ) ) ;
23372320
23382321 expect ( Scheduler ) . toFlushAndYield ( [ 'Suspend! [A]' , 'Loading...' ] ) ;
23392322 // Only a short time is needed to unsuspend the initial loading state.
@@ -2349,10 +2332,7 @@ describe('ReactSuspenseWithNoopRenderer', () => {
23492332 expect ( ReactNoop . getChildren ( ) ) . toEqual ( [ span ( 'A' ) ] ) ;
23502333
23512334 // Start transition.
2352- React . unstable_withSuspenseConfig (
2353- ( ) => ReactNoop . render ( < App page = "B" /> ) ,
2354- SUSPENSE_CONFIG ,
2355- ) ;
2335+ React . unstable_startTransition ( ( ) => ReactNoop . render ( < App page = "B" /> ) ) ;
23562336
23572337 expect ( Scheduler ) . toFlushAndYield ( [ 'Suspend! [B]' , 'Loading...' ] ) ;
23582338 Scheduler . unstable_advanceTime ( 100000 ) ;
@@ -2389,10 +2369,7 @@ describe('ReactSuspenseWithNoopRenderer', () => {
23892369
23902370 // Initial render.
23912371 await ReactNoop . act ( async ( ) => {
2392- React . unstable_withSuspenseConfig (
2393- ( ) => transitionToPage ( 'A' ) ,
2394- SUSPENSE_CONFIG ,
2395- ) ;
2372+ React . unstable_startTransition ( ( ) => transitionToPage ( 'A' ) ) ;
23962373
23972374 expect ( Scheduler ) . toFlushAndYield ( [ 'Suspend! [A]' , 'Loading...' ] ) ;
23982375 // Only a short time is needed to unsuspend the initial loading state.
@@ -2409,10 +2386,7 @@ describe('ReactSuspenseWithNoopRenderer', () => {
24092386
24102387 // Start transition.
24112388 await ReactNoop . act ( async ( ) => {
2412- React . unstable_withSuspenseConfig (
2413- ( ) => transitionToPage ( 'B' ) ,
2414- SUSPENSE_CONFIG ,
2415- ) ;
2389+ React . unstable_startTransition ( ( ) => transitionToPage ( 'B' ) ) ;
24162390
24172391 expect ( Scheduler ) . toFlushAndYield ( [ 'Suspend! [B]' , 'Loading...' ] ) ;
24182392 Scheduler . unstable_advanceTime ( 100000 ) ;
@@ -2452,10 +2426,7 @@ describe('ReactSuspenseWithNoopRenderer', () => {
24522426
24532427 // Initial render.
24542428 await ReactNoop . act ( async ( ) => {
2455- React . unstable_withSuspenseConfig (
2456- ( ) => transitionToPage ( 'A' ) ,
2457- SUSPENSE_CONFIG ,
2458- ) ;
2429+ React . unstable_startTransition ( ( ) => transitionToPage ( 'A' ) ) ;
24592430
24602431 expect ( Scheduler ) . toFlushAndYield ( [ 'Suspend! [A]' , 'Loading...' ] ) ;
24612432 // Only a short time is needed to unsuspend the initial loading state.
@@ -2472,10 +2443,7 @@ describe('ReactSuspenseWithNoopRenderer', () => {
24722443
24732444 // Start transition.
24742445 await ReactNoop . act ( async ( ) => {
2475- React . unstable_withSuspenseConfig (
2476- ( ) => transitionToPage ( 'B' ) ,
2477- SUSPENSE_CONFIG ,
2478- ) ;
2446+ React . unstable_startTransition ( ( ) => transitionToPage ( 'B' ) ) ;
24792447
24802448 expect ( Scheduler ) . toFlushAndYield ( [ 'Suspend! [B]' , 'Loading...' ] ) ;
24812449 Scheduler . unstable_advanceTime ( 100000 ) ;
@@ -2689,75 +2657,7 @@ describe('ReactSuspenseWithNoopRenderer', () => {
26892657 } ) ;
26902658
26912659 // @gate experimental
2692- it ( 'disables suspense config when nothing is passed to withSuspenseConfig' , async ( ) => {
2693- function App ( { page} ) {
2694- return (
2695- < Suspense fallback = { < Text text = "Loading..." /> } >
2696- < AsyncText text = { page } ms = { 2000 } />
2697- </ Suspense >
2698- ) ;
2699- }
2700-
2701- // Initial render.
2702- ReactNoop . render ( < App page = "A" /> ) ;
2703- expect ( Scheduler ) . toFlushAndYield ( [ 'Suspend! [A]' , 'Loading...' ] ) ;
2704- Scheduler . unstable_advanceTime ( 2000 ) ;
2705- await advanceTimers ( 2000 ) ;
2706- expect ( Scheduler ) . toHaveYielded ( [ 'Promise resolved [A]' ] ) ;
2707- expect ( Scheduler ) . toFlushAndYield ( [ 'A' ] ) ;
2708- expect ( ReactNoop . getChildren ( ) ) . toEqual ( [ span ( 'A' ) ] ) ;
2709-
2710- // Start transition.
2711- React . unstable_withSuspenseConfig (
2712- ( ) => {
2713- // When we schedule an inner transition without a suspense config
2714- // so it should only suspend for a short time.
2715- React . unstable_withSuspenseConfig ( ( ) =>
2716- ReactNoop . render ( < App page = "B" /> ) ,
2717- ) ;
2718- } ,
2719- { timeoutMs : 2000 } ,
2720- ) ;
2721-
2722- expect ( Scheduler ) . toFlushAndYield ( [ 'Suspend! [B]' , 'Loading...' ] ) ;
2723- // Suspended
2724- expect ( ReactNoop . getChildren ( ) ) . toEqual ( [ span ( 'A' ) ] ) ;
2725- Scheduler . unstable_advanceTime ( 500 ) ;
2726- await advanceTimers ( 500 ) ;
2727- // Committed loading state.
2728- expect ( ReactNoop . getChildren ( ) ) . toEqual ( [
2729- hiddenSpan ( 'A' ) ,
2730- span ( 'Loading...' ) ,
2731- ] ) ;
2732-
2733- Scheduler . unstable_advanceTime ( 2000 ) ;
2734- await advanceTimers ( 2000 ) ;
2735- expect ( Scheduler ) . toHaveYielded ( [ 'Promise resolved [B]' ] ) ;
2736- expect ( Scheduler ) . toFlushAndYield ( [ 'B' ] ) ;
2737- expect ( ReactNoop . getChildren ( ) ) . toEqual ( [ span ( 'B' ) ] ) ;
2738-
2739- React . unstable_withSuspenseConfig (
2740- ( ) => {
2741- // First we schedule an inner unrelated update.
2742- React . unstable_withSuspenseConfig ( ( ) =>
2743- ReactNoop . render ( < App page = "B" unrelated = { true } /> ) ,
2744- ) ;
2745- // Then we schedule another transition to a slow page,
2746- // but at this scope we should suspend for longer.
2747- Scheduler . unstable_next ( ( ) => ReactNoop . render ( < App page = "C" /> ) ) ;
2748- } ,
2749- { timeoutMs : 60000 } ,
2750- ) ;
2751- expect ( Scheduler ) . toFlushAndYield ( [ 'B' , 'Suspend! [C]' , 'Loading...' ] ) ;
2752- expect ( ReactNoop . getChildren ( ) ) . toEqual ( [ span ( 'B' ) ] ) ;
2753- // Event after a large amount of time, we never show a loading state.
2754- Scheduler . unstable_advanceTime ( 60000 ) ;
2755- await advanceTimers ( 60000 ) ;
2756- expect ( ReactNoop . getChildren ( ) ) . toEqual ( [ span ( 'B' ) ] ) ;
2757- } ) ;
2758-
2759- // @gate experimental
2760- it ( 'withSuspenseConfig delay applies when we use an updated avoided boundary' , async ( ) => {
2660+ it ( 'do not show placeholder when updating an avoided boundary with startTransition' , async ( ) => {
27612661 function App ( { page} ) {
27622662 return (
27632663 < Suspense fallback = { < Text text = "Loading..." /> } >
@@ -2780,10 +2680,7 @@ describe('ReactSuspenseWithNoopRenderer', () => {
27802680 expect ( ReactNoop . getChildren ( ) ) . toEqual ( [ span ( 'Hi!' ) , span ( 'A' ) ] ) ;
27812681
27822682 // Start transition.
2783- React . unstable_withSuspenseConfig (
2784- ( ) => ReactNoop . render ( < App page = "B" /> ) ,
2785- { timeoutMs : 2000 } ,
2786- ) ;
2683+ React . unstable_startTransition ( ( ) => ReactNoop . render ( < App page = "B" /> ) ) ;
27872684
27882685 expect ( Scheduler ) . toFlushAndYield ( [ 'Hi!' , 'Suspend! [B]' , 'Loading B...' ] ) ;
27892686
@@ -2806,7 +2703,7 @@ describe('ReactSuspenseWithNoopRenderer', () => {
28062703 } ) ;
28072704
28082705 // @gate experimental
2809- it ( 'withSuspenseConfig delay applies when we use a newly created avoided boundary' , async ( ) => {
2706+ it ( 'do not show placeholder when mounting an avoided boundary with startTransition ' , async ( ) => {
28102707 function App ( { page} ) {
28112708 return (
28122709 < Suspense fallback = { < Text text = "Loading..." /> } >
@@ -2830,10 +2727,7 @@ describe('ReactSuspenseWithNoopRenderer', () => {
28302727 expect ( ReactNoop . getChildren ( ) ) . toEqual ( [ span ( 'Hi!' ) , span ( 'A' ) ] ) ;
28312728
28322729 // Start transition.
2833- React . unstable_withSuspenseConfig (
2834- ( ) => ReactNoop . render ( < App page = "B" /> ) ,
2835- { timeoutMs : 2000 } ,
2836- ) ;
2730+ React . unstable_startTransition ( ( ) => ReactNoop . render ( < App page = "B" /> ) ) ;
28372731
28382732 expect ( Scheduler ) . toFlushAndYield ( [ 'Hi!' , 'Suspend! [B]' , 'Loading B...' ] ) ;
28392733
@@ -2992,12 +2886,9 @@ describe('ReactSuspenseWithNoopRenderer', () => {
29922886 expect ( ReactNoop ) . toMatchRenderedOutput ( < div hidden = { true } /> ) ;
29932887
29942888 // Start transition.
2995- React . unstable_withSuspenseConfig (
2996- ( ) => {
2997- ReactNoop . render ( < App showContent = { true } /> ) ;
2998- } ,
2999- { timeoutMs : 2500 } ,
3000- ) ;
2889+ React . unstable_startTransition ( ( ) => {
2890+ ReactNoop . render ( < App showContent = { true } /> ) ;
2891+ } ) ;
30012892
30022893 expect ( Scheduler ) . toFlushAndYield ( [ 'Suspend! [A]' , 'Loading...' ] ) ;
30032894 Scheduler . unstable_advanceTime ( 2000 ) ;
@@ -3049,12 +2940,9 @@ describe('ReactSuspenseWithNoopRenderer', () => {
30492940 expect ( Scheduler ) . toFlushAndYieldThrough ( [ 'Suspend! [A]' ] ) ;
30502941
30512942 // Start transition.
3052- React . unstable_withSuspenseConfig (
3053- ( ) => {
3054- ReactNoop . render ( < App showContent = { true } /> ) ;
3055- } ,
3056- { timeoutMs : 5000 } ,
3057- ) ;
2943+ React . unstable_startTransition ( ( ) => {
2944+ ReactNoop . render ( < App showContent = { true } /> ) ;
2945+ } ) ;
30582946
30592947 expect ( Scheduler ) . toFlushAndYield ( [ 'Suspend! [A]' , 'Loading...' ] ) ;
30602948 Scheduler . unstable_advanceTime ( 2000 ) ;
0 commit comments