@@ -2696,4 +2696,77 @@ describe('Store', () => {
26962696 <ClientComponent key="D">
26972697 ` ) ;
26982698 } ) ;
2699+
2700+ // @reactVersion >= 19.0
2701+ it ( 'can reconcile Suspense in fallback positions' , async ( ) => {
2702+ let resolveFallback ;
2703+ const fallbackPromise = new Promise ( resolve => {
2704+ resolveFallback = resolve ;
2705+ } ) ;
2706+ let resolveContent ;
2707+ const contentPromise = new Promise ( resolve => {
2708+ resolveContent = resolve ;
2709+ } ) ;
2710+
2711+ function Component ( { children, promise} ) {
2712+ if ( promise ) {
2713+ React . use ( promise ) ;
2714+ }
2715+ return < div > { children } </ div > ;
2716+ }
2717+
2718+ await actAsync ( ( ) =>
2719+ render (
2720+ < React . Suspense
2721+ name = "content"
2722+ fallback = {
2723+ < React . Suspense
2724+ name = "fallback"
2725+ fallback = {
2726+ < Component key = "fallback-fallback" >
2727+ Loading fallback...
2728+ </ Component >
2729+ } >
2730+ < Component key = "fallback-content" promise = { fallbackPromise } >
2731+ Loading...
2732+ </ Component >
2733+ </ React . Suspense >
2734+ } >
2735+ < Component key = "content" promise = { contentPromise } >
2736+ done
2737+ </ Component >
2738+ </ React . Suspense > ,
2739+ ) ,
2740+ ) ;
2741+
2742+ expect ( store ) . toMatchInlineSnapshot ( `
2743+ [root]
2744+ ▾ <Suspense name="content">
2745+ ▾ <Suspense name="fallback">
2746+ <Component key="fallback-fallback">
2747+ [shell]
2748+ <Suspense name="content" rects={null}>
2749+ <Suspense name="fallback" rects={null}>
2750+ ` ) ;
2751+
2752+ await actAsync ( ( ) => {
2753+ resolveFallback ( ) ;
2754+ } ) ;
2755+
2756+ expect ( store ) . toMatchInlineSnapshot ( `
2757+ [root]
2758+ ▾ <Suspense name="content">
2759+ ▾ <Suspense name="fallback">
2760+ <Component key="fallback-content">
2761+ [shell]
2762+ <Suspense name="content" rects={null}>
2763+ <Suspense name="fallback" rects={[{x:1,y:2,width:10,height:1}]}>
2764+ ` ) ;
2765+
2766+ await actAsync ( ( ) => {
2767+ resolveContent ( ) ;
2768+ } ) ;
2769+
2770+ expect ( store ) . toMatchInlineSnapshot ( ) ;
2771+ } ) ;
26992772} ) ;
0 commit comments