fix: append `server-timing` header value if key exist when using `setHeaders` to...
authorTobias Lundin <tobias.lundin@gmail.com>
Thu, 20 Nov 2025 19:12:14 +0000 (20:12 +0100)
committerGitHub <noreply@github.com>
Thu, 20 Nov 2025 19:12:14 +0000 (20:12 +0100)
Closes #14681

.changeset/clear-spies-wear.md [new file with mode: 0644]
packages/kit/src/runtime/server/respond.js

diff --git a/.changeset/clear-spies-wear.md b/.changeset/clear-spies-wear.md
new file mode 100644 (file)
index 0000000..01b7df6
--- /dev/null
@@ -0,0 +1,5 @@
+---
+'@sveltejs/kit': patch
+---
+
+fix: allow multiple `server-timing` headers
index 9067418bc450a126906c62945e1bd4cf818405ea..a4f1266214978130eea03342498df82c5e2ea880 100644 (file)
@@ -183,7 +183,12 @@ export async function internal_respond(request, options, manifest, state) {
                                                'Use `event.cookies.set(name, value, options)` instead of `event.setHeaders` to set cookies'
                                        );
                                } else if (lower in headers) {
-                                       throw new Error(`"${key}" header is already set`);
+                                       // appendHeaders-style for Server-Timing https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Server-Timing
+                                       if (lower === 'server-timing') {
+                                               headers[lower] += ', ' + value;
+                                       } else {
+                                               throw new Error(`"${key}" header is already set`);
+                                       }
                                } else {
                                        headers[lower] = value;