diff --git a/.changeset/release-v2 b/.changeset/release-v2
new file mode 100755
index 000000000..339e200a7
--- /dev/null
+++ b/.changeset/release-v2
@@ -0,0 +1,12 @@
+#!/bin/bash
+set -e
+
+pnpm build
+sed -i.bak -e '3,6d' .changeset/config.json
+
+sed -i 's/@opennextjs\/aws/open-next/' .changeset/config.json
+#cp packages/open-next/package.json packages/open-next/dist/package.json
+cp README.md packages/open-next/README.md
+#sed -i.bak -e '2,5d' packages/open-next/dist/package.json
+pnpm changeset publish
+cp .changeset/config.json.bak .changeset/config.json
diff --git a/.github/workflows/v2-release.yml b/.github/workflows/v2-release.yml
new file mode 100644
index 000000000..3a3112e51
--- /dev/null
+++ b/.github/workflows/v2-release.yml
@@ -0,0 +1,28 @@
+name: v2-release
+
+on: workflow_dispatch
+
+jobs:
+  release:
+    name: Pre-release
+    runs-on: ubuntu-latest
+    steps:
+      - name: Checkout Repo
+        # https://github.com/actions/checkout
+        uses: actions/checkout@v4
+
+      # Setup .npmrc file to publish to npm
+      - uses: actions/setup-node@v4
+        with:
+          registry-url: "https://registry.npmjs.org"
+
+      - uses: ./.github/actions/pnpm-setup
+
+      - name: Install dependencies
+        run: pnpm install
+
+
+      - name: Publish Pre-release to npm
+        run: pnpm release-v2
+        env:
+          NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
\ No newline at end of file
diff --git a/package.json b/package.json
index dcc13a820..5a6054e3e 100644
--- a/package.json
+++ b/package.json
@@ -16,18 +16,18 @@
     "e2e:test": "turbo run e2e:test",
     "version": "./.changeset/version",
     "release": "./.changeset/release",
-    "release-snapshot": "./.changeset/snapshot"
-    
+    "release-snapshot": "./.changeset/snapshot",
+    "release-v2": "./.changeset/release-v2"
   },
   "devDependencies": {
     "@changesets/changelog-github": "^0.4.4",
     "@changesets/cli": "^2.22.0",
     "@sladg/eslint-config-base": "1.4.1",
     "eslint": "^8.47.0",
-     "turbo": "1.10.12"
+    "turbo": "1.10.12"
   },
   "engines": {
     "node": ">=16",
     "pnpm": ">=8"
   }
-}
+}
\ No newline at end of file
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 = {
