Skip to content

Commit 58c99a5

Browse files
authored
fix(nextjs): Improve page detection for Next 15 (#4383)
1 parent 5853261 commit 58c99a5

File tree

3 files changed

+25
-1
lines changed

3 files changed

+25
-1
lines changed

.changeset/fluffy-eyes-arrive.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@clerk/nextjs": minor
3+
---
4+
5+
Bug fix: Correctly redirect to sign in page in Next 15.

packages/nextjs/src/server/nextFetcher.ts

+7
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,14 @@ type NextFetcher = Fetcher & {
1212
* Full type can be found https://github.com/vercel/next.js/blob/6185444e0a944a82e7719ac37dad8becfed86acd/packages/next/src/client/components/static-generation-async-storage.external.ts#L4
1313
*/
1414
interface StaticGenerationAsyncStorage {
15+
/**
16+
* Available for Next 14
17+
*/
1518
readonly pagePath?: string;
19+
/**
20+
* Available for Next 15
21+
*/
22+
readonly page?: string;
1623
}
1724

1825
function isNextFetcher(fetch: Fetcher | NextFetcher): fetch is NextFetcher {

packages/nextjs/src/server/protect.ts

+13-1
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,19 @@ const isAppRouterInternalNavigation = (req: Request) =>
134134

135135
const isPagePathAvailable = () => {
136136
const __fetch = globalThis.fetch;
137-
return Boolean(isNextFetcher(__fetch) ? __fetch.__nextGetStaticStore().getStore()?.pagePath : false);
137+
138+
if (!isNextFetcher(__fetch)) {
139+
return false;
140+
}
141+
142+
const { page, pagePath } = __fetch.__nextGetStaticStore().getStore() || {};
143+
144+
return Boolean(
145+
// available on next@14
146+
pagePath ||
147+
// available on next@15
148+
page,
149+
);
138150
};
139151

140152
const isPagesRouterInternalNavigation = (req: Request) => !!req.headers.get(nextConstants.Headers.NextjsData);

0 commit comments

Comments
 (0)