diff --git a/packages/open-next/package.json b/packages/open-next/package.json index af0a741a9..ee0fed89c 100644 --- a/packages/open-next/package.json +++ b/packages/open-next/package.json @@ -3,7 +3,7 @@ "access": "public" }, "name": "open-next", - "version": "2.3.9", + "version": "2.3.10", "bin": { "open-next": "./dist/index.js" }, @@ -58,4 +58,4 @@ "type": "git", "url": "git+https://github.com/sst/open-next.git" } -} +} \ No newline at end of file diff --git a/packages/open-next/src/adapters/routing/middleware.ts b/packages/open-next/src/adapters/routing/middleware.ts index 85eb02b3b..0e342b917 100644 --- a/packages/open-next/src/adapters/routing/middleware.ts +++ b/packages/open-next/src/adapters/routing/middleware.ts @@ -1,6 +1,6 @@ import path from "node:path"; -import { NEXT_DIR, NextConfig } from "../config/index.js"; +import { NEXT_DIR, NextConfig, PrerenderManifest } from "../config/index.js"; import { InternalEvent, InternalResult } from "../event-mapper.js"; import { IncomingMessage } from "../http/request.js"; import { ServerlessResponse } from "../http/response.js"; @@ -46,7 +46,12 @@ export async function handleMiddleware( const hasMatch = middleMatch.some((r) => r.test(rawPath)); if (!hasMatch) return internalEvent; // We bypass the middleware if the request is internal - if (internalEvent.headers["x-isr"]) return internalEvent; + if ( + internalEvent.headers["x-isr"] && + internalEvent.headers["x-prerender-revalidate"] === + PrerenderManifest.preview.previewModeId + ) + return internalEvent; const req = new IncomingMessage(internalEvent); const res = new ServerlessResponse({ diff --git a/packages/open-next/src/adapters/types/next-types.ts b/packages/open-next/src/adapters/types/next-types.ts index 99312216f..a6191fbcc 100644 --- a/packages/open-next/src/adapters/types/next-types.ts +++ b/packages/open-next/src/adapters/types/next-types.ts @@ -142,6 +142,9 @@ export interface PrerenderManifest { dataRouteRegex: string; }; }; + preview: { + previewModeId: string; + }; } export type Options = {