From 815271c35329923e4aafe96b975bf73d3c3b30db Mon Sep 17 00:00:00 2001 From: Zack Tanner <1939140+ztanner@users.noreply.github.com> Date: Thu, 18 Apr 2024 07:19:01 -0700 Subject: [PATCH] fix root page revalidation when redirecting in a server action --- .../reducers/server-action-reducer.ts | 4 ++- .../app/actions.ts | 8 +++++- .../parallel-routes-revalidation/app/page.tsx | 5 +++- .../app/redirect/page.tsx | 14 +++++++++++ .../parallel-routes-revalidation.test.ts | 25 ++++++++++++++++++- 5 files changed, 52 insertions(+), 4 deletions(-) create mode 100644 test/e2e/app-dir/parallel-routes-revalidation/app/redirect/page.tsx diff --git a/packages/next/src/client/components/router-reducer/reducers/server-action-reducer.ts b/packages/next/src/client/components/router-reducer/reducers/server-action-reducer.ts index 7d8e314b848ad1..4784cfbdee5f74 100644 --- a/packages/next/src/client/components/router-reducer/reducers/server-action-reducer.ts +++ b/packages/next/src/client/components/router-reducer/reducers/server-action-reducer.ts @@ -225,7 +225,9 @@ export function serverActionReducer( [''], currentTree, treePatch, - href + redirectLocation + ? createHrefFromUrl(redirectLocation) + : state.canonicalUrl ) if (newTree === null) { diff --git a/test/e2e/app-dir/parallel-routes-revalidation/app/actions.ts b/test/e2e/app-dir/parallel-routes-revalidation/app/actions.ts index 465a4c417b0f4a..dc194b76a78eff 100644 --- a/test/e2e/app-dir/parallel-routes-revalidation/app/actions.ts +++ b/test/e2e/app-dir/parallel-routes-revalidation/app/actions.ts @@ -1,7 +1,8 @@ 'use server' +import { revalidatePath } from 'next/cache' import { redirect } from 'next/navigation' -const data = [] +let data = [] export async function addData(newData: string) { // sleep 1s @@ -21,3 +22,8 @@ export async function redirectAction() { await new Promise((res) => setTimeout(res, 1000)) redirect('/') } + +export async function clearData() { + data = [] + revalidatePath('/') +} diff --git a/test/e2e/app-dir/parallel-routes-revalidation/app/page.tsx b/test/e2e/app-dir/parallel-routes-revalidation/app/page.tsx index b8f647cca09e0e..3ef8e789935721 100644 --- a/test/e2e/app-dir/parallel-routes-revalidation/app/page.tsx +++ b/test/e2e/app-dir/parallel-routes-revalidation/app/page.tsx @@ -1,5 +1,5 @@ import Link from 'next/link' -import { getData } from './actions' +import { clearData, getData } from './actions' export default async function Home() { const data = await getData() @@ -14,6 +14,9 @@ export default async function Home() { Open Redirect Modal Intercepted Detail Page
{randomNumber}
+
+ +

Current Data