JORVEL

Deployment adapters

Every adapter converts one createEdgeAdapter handler (EdgeRequest → EdgeResponse) into a platform's native signature. Your SSR code stays identical; only the adapter package changes.

PackageTargetEntry
@jorvel/adapter-nodeNode HTTP servercreateNodeHandler
@jorvel/adapter-vercelVercel FunctionscreateVercelHandler
@jorvel/adapter-cloudflareCloudflare Workersfetch(request, env, ctx)
@jorvel/adapter-bunBun.servecreateBunHandler / serveBun
@jorvel/adapter-denoDeno DeploycreateDenoHandler / serveDeno
@jorvel/adapter-netlifyNetlify Functions/EdgecreateNetlifyHandler
@jorvel/adapter-aws-lambdaAPI Gateway v2 + Lambda@EdgecreateLambdaHandler / createEdgeLambdaHandler

Bun

ts
import { serveBun } from '@jorvel/adapter-bun';
import { App, template, routes } from './app.js';

serveBun({ App, template, routes, staticDir: 'dist', port: 3000 });
// or: const fetch = createBunHandler({ ... }); Bun.serve({ port: 3000, fetch });

Deno Deploy

ts
import { serveDeno } from '@jorvel/adapter-deno';
import { App, template, routes } from './app.ts';

serveDeno({ App, template, routes }); // Deno.serve under the hood, PORT=8000 default

Netlify

netlify/edge-functions/ssr.ts
ts
import { createNetlifyHandler, netlifyToml } from '@jorvel/adapter-netlify';
import { App, template, routes } from '../../src/app.js';

export default createNetlifyHandler({ App, template, routes });
// `netlifyToml` exports a starter netlify.toml routing /* through this function

AWS Lambda & Lambda@Edge

ts
// API Gateway HTTP API (v2)
import { createLambdaHandler } from '@jorvel/adapter-aws-lambda';
export const handler = createLambdaHandler({ App, template, routes });

// CloudFront origin-request (Lambda@Edge)
import { createEdgeLambdaHandler } from '@jorvel/adapter-aws-lambda';
export const handler = createEdgeLambdaHandler({ App, template, routes });

The AWS adapter declares its own minimal event/result types, so you don't need @types/aws-lambda installed. Binary bodies are base64-encoded automatically.

Other hosts

Fly.io / Render / Railway run the Node adapter in a container — use jorvel deploy --target docker for a Dockerfile and point the platform at it.

Streaming on buffered runtimes

API Gateway (buffered) can't stream a ReadableStream body — the AWS adapter returns an empty body for streamed responses. Use the Node/Bun/Deno/CF adapters when you rely on streaming SSR.