Adapters
Mount the same handler on Next.js, Nuxt, Nitro, h3, Hono, Express, bare Node — or anything that speaks Request.
The handler’s native interface is Web-standard: handler.fetch is a
(request: Request) => Promise<Response> function. If your platform speaks
Request — Next.js App Router, Cloudflare Workers, Deno, Bun, Remix — you
need no adapter at all:
export const POST = handler.fetch
Adapters exist for the platforms that don’t, each on its own subpath so nothing you skip is bundled.
Next.js
App Router route exports, and the Pages Router raw-body setup.
Nuxt
A webhook endpoint in one server/api file.
Nitro
Analog, SolidStart, TanStack Start — anything with Nitro server routes.
h3
Plain h3 apps — v1 and v2 from one import.
Hono
One handler wherever Hono runs — Workers, Deno, Bun, Node.
Express
Two ways past the JSON parser to the raw bytes.
Bare Node
node:http servers, plus the low-level building blocks.
Response behavior
All adapters produce the same responses handler.fetch would: handshake
responses pass through verbatim, errors return their
status and JSON body, everything else returns 200.