Skip to content

@hono/node-server/vercel: POST requests hang (no response) on Vercel Node runtime while GET works #306

@leohahn

Description

@leohahn

What version of Hono?

  • hono@4.11.9
  • @hono/node-server@1.19.9

What version of Node.js?

  • Vercel function runtime nodejs24.x

What happened?

Using the official Vercel adapter from @hono/node-server/vercel:

import { handle } from '@hono/node-server/vercel'
import app from '../apps/api/src/server.js'

export default handle(app)

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

  1. 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
  2. Use @hono/node-server/vercel handle(app) as above
  3. Call POST route (JSON or form-encoded) via Preview URL
  4. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions