diff --git a/cli/tsc/dts/lib.deno.ns.d.ts b/cli/tsc/dts/lib.deno.ns.d.ts
index 00eff1e233..e287f7afc0 100644
--- a/cli/tsc/dts/lib.deno.ns.d.ts
+++ b/cli/tsc/dts/lib.deno.ns.d.ts
@@ -5090,9 +5090,7 @@ declare namespace Deno {
      *
      * @category HTTP Server
      */
-    fetch: (
-      request: Request,
-    ) => Response | Promise<Response>;
+    fetch: ServeHandler;
   }
 
   /** Options which can be set when calling {@linkcode Deno.serve}.
diff --git a/ext/http/00_serve.ts b/ext/http/00_serve.ts
index be1f1f8096..a49ab2790a 100644
--- a/ext/http/00_serve.ts
+++ b/ext/http/00_serve.ts
@@ -880,8 +880,8 @@ function registerDeclarativeServer(exports) {
             );
           }
         },
-        handler: (req) => {
-          return exports.fetch(req);
+        handler: (req, connInfo) => {
+          return exports.fetch(req, connInfo);
         },
       });
     };
diff --git a/tests/specs/serve/basic/__test__.jsonc b/tests/specs/serve/basic/__test__.jsonc
index a8eaca0b6d..be63f793aa 100644
--- a/tests/specs/serve/basic/__test__.jsonc
+++ b/tests/specs/serve/basic/__test__.jsonc
@@ -3,12 +3,12 @@
   "tests": {
     "basic_win": {
       "if": "windows",
-      "args": "serve --host 0.0.0.0 --port 12345 main.ts",
+      "args": "serve --check --host 0.0.0.0 --port 12345 main.ts",
       "output": "main.out"
     },
     "basic_not_win": {
       "if": "unix",
-      "args": "serve --host 0.0.0.0 --port 12345 main.ts",
+      "args": "serve --check --host 0.0.0.0 --port 12345 main.ts",
       "output": "main_not_win.out"
     }
   }
diff --git a/tests/specs/serve/basic/main.out b/tests/specs/serve/basic/main.out
index e79d76af53..8247920e20 100644
--- a/tests/specs/serve/basic/main.out
+++ b/tests/specs/serve/basic/main.out
@@ -1 +1,2 @@
+Check [WILDCARD]
 deno serve: Listening on http://localhost:12345/
diff --git a/tests/specs/serve/basic/main.ts b/tests/specs/serve/basic/main.ts
index 9e299ab219..8aa061b1e9 100644
--- a/tests/specs/serve/basic/main.ts
+++ b/tests/specs/serve/basic/main.ts
@@ -15,4 +15,4 @@ export default {
   fetch(req) {
     return new Response("Hello world!");
   },
-};
+} satisfies Deno.ServeDefaultExport;
diff --git a/tests/specs/serve/basic/main_not_win.out b/tests/specs/serve/basic/main_not_win.out
index cbfd3395eb..6b4a66750f 100644
--- a/tests/specs/serve/basic/main_not_win.out
+++ b/tests/specs/serve/basic/main_not_win.out
@@ -1 +1,2 @@
+Check [WILDCARD]
 deno serve: Listening on http://0.0.0.0:12345/
diff --git a/tests/specs/serve/conn_info/__test__.jsonc b/tests/specs/serve/conn_info/__test__.jsonc
new file mode 100644
index 0000000000..faefad0ad9
--- /dev/null
+++ b/tests/specs/serve/conn_info/__test__.jsonc
@@ -0,0 +1,6 @@
+{
+  "args": "serve --check --port 12468 main.ts",
+  "output": "main.out",
+  "tempDir": true,
+  "exitCode": 0
+}
diff --git a/tests/specs/serve/conn_info/main.out b/tests/specs/serve/conn_info/main.out
new file mode 100644
index 0000000000..790c4775dc
--- /dev/null
+++ b/tests/specs/serve/conn_info/main.out
@@ -0,0 +1,3 @@
+Check [WILDCARD]main.ts
+deno serve: Listening on http://[WILDCARD]
+ServeHandlerInfo {}
diff --git a/tests/specs/serve/conn_info/main.ts b/tests/specs/serve/conn_info/main.ts
new file mode 100644
index 0000000000..dbc1b7f070
--- /dev/null
+++ b/tests/specs/serve/conn_info/main.ts
@@ -0,0 +1,19 @@
+(async () => {
+  for (let i = 0; i < 1000; i++) {
+    try {
+      const resp = await fetch("http://localhost:12468/");
+      Deno.exit(0);
+    } catch {
+      await new Promise((r) => setTimeout(r, 10));
+    }
+  }
+
+  Deno.exit(2);
+})();
+
+export default {
+  fetch(request, connInfo) {
+    console.log(connInfo);
+    return new Response("Hello world!");
+  },
+} satisfies Deno.ServeDefaultExport;