diff --git a/packages/next/next-server/server/load-components.ts b/packages/next/next-server/server/load-components.ts index e14ed8b17b..d50e1097ea 100644 --- a/packages/next/next-server/server/load-components.ts +++ b/packages/next/next-server/server/load-components.ts @@ -19,7 +19,7 @@ export type LoadComponentsReturnType = { params: any }) => { props: any - revalidate: number | false + revalidate?: number | boolean } unstable_getStaticPaths?: () => void buildManifest?: any diff --git a/packages/next/next-server/server/render.tsx b/packages/next/next-server/server/render.tsx index 86353f8b45..197dfd60b8 100644 --- a/packages/next/next-server/server/render.tsx +++ b/packages/next/next-server/server/render.tsx @@ -156,7 +156,7 @@ type RenderOpts = { params: any | undefined }) => { props: any - revalidate: number | false + revalidate?: number | boolean } unstable_getStaticPaths?: () => void } @@ -458,14 +458,14 @@ export async function renderToHTML( `\nTo only run getStaticProps at build-time and not revalidate at runtime, you can set \`revalidate\` to \`false\`!` ) } - } else if (data.revalidate === false) { - // `false` is an allowed behavior. We'll catch `revalidate: true` and - // fall into our default behavior. - } else { - // By default, we revalidate after 1 second. This value is optimal for + } else if (data.revalidate === true) { + // When enabled, revalidate after 1 second. This value is optimal for // the most up-to-date page possible, but without a 1-to-1 // request-refresh ratio. data.revalidate = 1 + } else { + // By default, we never revalidate. + data.revalidate = false } props.pageProps = data.props diff --git a/test/integration/prerender/pages/another/index.js b/test/integration/prerender/pages/another/index.js index bcdae56698..e1a316d071 100644 --- a/test/integration/prerender/pages/another/index.js +++ b/test/integration/prerender/pages/another/index.js @@ -19,7 +19,7 @@ export async function unstable_getStaticProps() { world: text, time: new Date().getTime(), }, - revalidate: 1, + revalidate: true, } } diff --git a/test/integration/prerender/test/index.test.js b/test/integration/prerender/test/index.test.js index 8f819c9faa..5b79b4281b 100644 --- a/test/integration/prerender/test/index.test.js +++ b/test/integration/prerender/test/index.test.js @@ -93,7 +93,7 @@ const expectedManifestRoutes = () => ({ }, '/default-revalidate': { dataRoute: `/_next/data/${buildId}/default-revalidate.json`, - initialRevalidateSeconds: 1, + initialRevalidateSeconds: false, srcRoute: null, }, '/something': { @@ -114,12 +114,17 @@ const navigateTest = () => { '/blog/post-1/comment-1', ] + await waitFor(2500) + await Promise.all(toBuild.map(pg => renderViaHTTP(appPort, pg))) const browser = await webdriver(appPort, '/') let text = await browser.elementByCss('p').text() expect(text).toMatch(/hello.*?world/) + // hydration + await waitFor(2500) + // go to /another await browser.elementByCss('#another').click() await browser.waitForElementByCss('#home')