mirror of
https://github.com/hanzoai/next.js.git
synced 2026-10-30 14:46:38 +00:00
Extracted from #94595 . The root layout includes a timestamp that we use to check if the root layout changed during a navigation, but it was unnecessarily using `await connection(); Date.now()` when a `performance.now()`would be enough. Changing it to not introduce a random dynamic hole which could affect validation in some way. This change revealed that some client component tests were implicitly relying on the dynamic timestamp component as a workaround for NAR-800 . I've added a workaround dynamic component to each of the relevant tests, those can be removed when we fix the bug.
28 lines
914 B
TypeScript
28 lines
914 B
TypeScript
import type { ReactNode } from 'react'
|
|
import { FetchesClientData } from './client'
|
|
import { DataCacheProvider } from '../../../../client-data-fetching-lib/server'
|
|
import { HackilyPreventFullyStaticServerPrerender } from '../../../shared'
|
|
|
|
// Make sure that the holes from this layout aren't factored in for validation
|
|
// (otherwise, we'd check a navigation into it from the root layout and fail)
|
|
export const instant = false
|
|
|
|
export default function Layout({ children }: { children: ReactNode }) {
|
|
return (
|
|
<>
|
|
<HackilyPreventFullyStaticServerPrerender />
|
|
<DataCacheProvider>
|
|
<div>
|
|
<p>
|
|
This layout renders a client component that suspends in SSR, but it
|
|
doesn't not block the children, so we can still validate them.
|
|
</p>
|
|
<FetchesClientData />
|
|
</div>
|
|
<hr />
|
|
{children}
|
|
</DataCacheProvider>
|
|
</>
|
|
)
|
|
}
|