Bun.serve() server.
1
Configure Bun in vercel.json
To run your Functions on Bun, add a The value must be
bunVersion field to your vercel.json file:vercel.json
"1.x"; Vercel manages the minor and patch versions.For best results, match your local Bun version with the version used by Vercel.2
Add a server
Choose how requests reach your code.
- Bun.serve() for the whole app
- Bun.serve() under /api
- Next.js or another framework
Vercel’s Bun framework preset sends every request for the deployment to a single A minimal project is
Bun.serve() server. Vercel uses the preset when the project sets bunVersion, has a bun.lock file, and has a server entrypoint at one of these paths:server.{js,cjs,mjs,ts,cts,mts}src/server.{js,cjs,mjs,ts,cts,mts}
bun install creates bun.lock on Bun 1.2 or later. On older versions, run bun install --save-text-lockfile. The preset does not detect the binary bun.lockb format.Call Bun.serve() once while the module loads. Vercel detects that call and routes incoming requests to it. The fetch, routes, error, and websocket options are supported:server.ts
package.json, bun.lock, server.ts, and the vercel.json from the previous step. It doesn’t need an api/ directory or any routing configuration.port and hostname only apply when you run the server locally; they don’t configure the deployed endpoint. Unix sockets and HTML imports in routes are not supported on Vercel.To serve WebSocket connections, see the Bun example in Vercel’s WebSockets documentation.3
Deploy your app
Connect your repository to Vercel, or deploy from the CLI:Or install the Vercel CLI globally:Learn more in the Vercel Deploy CLI documentation →
terminal
terminal
4
Verify the runtime
To confirm your deployment uses Bun, log the Bun version:See the Vercel Bun Runtime documentation for feature support →
index.ts
- Fluid compute: Both Bun and Node.js runtimes run on Fluid compute and support the same core Vercel Functions features.
- Middleware: To run Routing Middleware with Bun, set the runtime to
nodejs:
middleware.ts