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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions