You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
@hono/node-server/vercel: POST requests hang (no response) on Vercel Node runtime while GET works #306
in a Vercel function (api/server.ts) with rewrites (/api/* and /rpc/* -> /api/server), GET requests work, but POST requests never return a response (client times out).
Repro matrix from Preview deployment:
Case
Method
Path
Result
health
GET
/api/health (separate function)
200
slack-url-verification
POST
/api/slack
timeout (curl exit 28 after 25s)
slack-interactivity-invalid-signature
POST
/api/slack/interactivity
timeout (curl exit 28 after 25s)
rpc-ping-no-csrf
POST
/rpc/ping
timeout (curl exit 28 after 25s)
rpc-ping-csrf-no-auth
POST
/rpc/ping
timeout (curl exit 28 after 25s)
When we switch back to a custom Node IncomingMessage/ServerResponse bridge that buffers the request body and calls app.fetch(request), the same POST routes return immediately with expected app-level responses.
Minimal reproduction steps
Deploy a Vite + Hono app on Vercel with:
API function at api/server.ts
rewrites /api/:path((?!health$|server$).*) -> /api/server and /rpc/(.*) -> /api/server
Use @hono/node-server/vercelhandle(app) as above
Call POST route (JSON or form-encoded) via Preview URL
Observe no response body/status until client timeout
Expected
POST routes should behave like GET routes and return app responses.
Actual
POST routes hang indefinitely on Vercel Node runtime.
Additional context
Using hono/vercel in this same Node function setup also hangs, but that appears to be a signature mismatch (Request handler in Node req/res runtime).
The issue here is specifically with the Node-targeted Vercel adapter from @hono/node-server/vercel.
Honestly, I'm not familiar with Vercel recently, but is there any case to use @hono/node-server/vercel when Vercel already supports Hono apps natively? https://vercel.com/docs/frameworks/backend/hono
Honestly, I'm not familiar with Vercel recently, but is there any case to use @hono/node-server/vercel when Vercel already supports Hono apps natively? https://vercel.com/docs/frameworks/backend/hono
Because otherwise you get following error
ok now i get different error
onError TypeError: c2.req.raw.headers.get is not a function
at getSignedCookie (file:///var/task/index.js:255800:37)
at getUserCookieV2 (file:///var/task/index.js:255897:24)
at Object.handler (file:///var/task/index.js:285028:26)
I'm currently working with the same setup, and you don't have to use the node-server from Vercel, just do the export default app, it'll run on node js runtime only. Just add the following env variables: NODEJS_HELPERS=0 and VERCEL_EXPERIMENTAL_BACKENDS=1
Activity
fix(vercel): buffer POST body for app.fetch to fix POST timeouts
venarius commentedon Apr 10, 2026
+1 Same Issue here
My solution:
yusukebe commentedon Apr 12, 2026
Hi @leohahn @venarius
Honestly, I'm not familiar with Vercel recently, but is there any case to use
@hono/node-server/vercelwhen Vercel already supports Hono apps natively? https://vercel.com/docs/frameworks/backend/hono🛠️ fix(api): Vercel ネイティブ Hono 対応で signup の POST ハングを修正
🛠️ fix(deploy): switch Vercel function to native Hono export
abhishiv commentedon Jun 25, 2026
Because otherwise you get following error
satyam-bhosale commentedon Jun 25, 2026
I'm currently working with the same setup, and you don't have to use the
node-serverfrom Vercel, just do theexport default app, it'll run on node js runtime only. Just add the following env variables:NODEJS_HELPERS=0andVERCEL_EXPERIMENTAL_BACKENDS=1fix(api): buffer request body in Vercel bridge to stop POST hang + ha…
fix(api): unhang POST on Vercel, fail-fast on bad DB config in dev
Emit the Build Output API instead of hoping Vercel finds the bundle
Export a Node listener, because the launcher never reads a Web handler