From 20e56a4971a6828825f5fa4166c4af9f8ebf1653 Mon Sep 17 00:00:00 2001 From: Britt Lewis Date: Fri, 30 Jan 2026 18:00:23 -0500 Subject: [PATCH] perf(server): gzip compress session messages response Large sessions can have 20MB+ JSON payloads which take 20-30s to transfer over mobile networks. Gzip compression reduces this to ~2-3MB, improving mobile load times by ~5x. --- packages/opencode/src/server/routes/session.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/packages/opencode/src/server/routes/session.ts b/packages/opencode/src/server/routes/session.ts index 3850376bdb..d9a4b2d5fb 100644 --- a/packages/opencode/src/server/routes/session.ts +++ b/packages/opencode/src/server/routes/session.ts @@ -579,6 +579,17 @@ export const SessionRoutes = lazy(() => sessionID: c.req.valid("param").sessionID, limit: query.limit, }) + const acceptEncoding = c.req.header("accept-encoding") ?? "" + if (acceptEncoding.includes("gzip")) { + const json = JSON.stringify(messages) + const compressed = Bun.gzipSync(json) + return new Response(compressed, { + headers: { + "Content-Type": "application/json", + "Content-Encoding": "gzip", + }, + }) + } return c.json(messages) }, )