VercelVercel
'; user_status_content.firstChild.appendChild(avatarContainer); } else { // Placeholder for LoggedOutUserMenu let loggedOutContainer = document.createElement('div'); // if LoggedOutUserMenu fallback let userBtn = document.createElement('button'); userBtn.style.width = "33px"; userBtn.style.height = "33px"; userBtn.style.display = "flex"; userBtn.style.alignItems = "center"; userBtn.style.justifyContent = "center"; userBtn.style.color = "var(--ds-gray-900)"; userBtn.style.border = "1px solid var(--ds-gray-300)"; userBtn.style.borderRadius = "100%"; userBtn.style.cursor = "pointer"; userBtn.style.background = "transparent"; userBtn.style.padding = "0"; // user icon ( from geist) let svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg'); svg.setAttribute('data-testid', 'geist-icon'); svg.setAttribute('height', '16'); svg.setAttribute('stroke-linejoin', 'round'); svg.setAttribute('style', 'color:currentColor'); svg.setAttribute('viewBox', '0 0 16 16'); svg.setAttribute('width', '16'); let path = document.createElementNS('http://www.w3.org/2000/svg', 'path'); path.setAttribute('fill-rule', 'evenodd'); path.setAttribute('clip-rule', 'evenodd'); path.setAttribute('d', 'M7.75 0C5.95507 0 4.5 1.45507 4.5 3.25V3.75C4.5 5.54493 5.95507 7 7.75 7H8.25C10.0449 7 11.5 5.54493 11.5 3.75V3.25C11.5 1.45507 10.0449 0 8.25 0H7.75ZM6 3.25C6 2.2835 6.7835 1.5 7.75 1.5H8.25C9.2165 1.5 10 2.2835 10 3.25V3.75C10 4.7165 9.2165 5.5 8.25 5.5H7.75C6.7835 5.5 6 4.7165 6 3.75V3.25ZM2.5 14.5V13.1709C3.31958 11.5377 4.99308 10.5 6.82945 10.5H9.17055C11.0069 10.5 12.6804 11.5377 13.5 13.1709V14.5H2.5ZM6.82945 9C4.35483 9 2.10604 10.4388 1.06903 12.6857L1 12.8353V13V15.25V16H1.75H14.25H15V15.25V13V12.8353L14.931 12.6857C13.894 10.4388 11.6452 9 9.17055 9H6.82945Z'); path.setAttribute('fill', 'currentColor'); svg.appendChild(path); userBtn.appendChild(svg); loggedOutContainer.appendChild(userBtn); loggedOutContainer.style.display = 'flex'; loggedOutContainer.style.gap = '8px'; loggedOutContainer.style.alignItems = 'center'; user_status_content.firstChild.appendChild(loggedOutContainer); } })();
Menu

Koa on Vercel

Last updated January 29, 2026

Koa is an expressive HTTP middleware framework for building web applications and APIs with zero configuration.​​​​ You can deploy a Koa app to Vercel with zero configuration using Vercel Functions.

Koa applications on Vercel benefit from:

  • Fluid compute: Pay for the CPU you use, automatic cold start reduction, optimized concurrency, background processing, and more
  • Preview deployments: Test your changes in a copy of your production infrastructure
  • Instant Rollback: Recover from breaking changes or bugs in milliseconds
  • Vercel Firewall: Protect your applications from a wide range of threats with a robust, multi-layered security system
  • Secure Compute: Create private links between your Vercel-hosted backend and other clouds

To allow Vercel to deploy your Koa application and process web requests, your server entrypoint file should be named one of the following:

  • src/app.{js,mjs,cjs,ts,cts,mts}
  • src/index.{js,mjs,cjs,ts,cts,mts}
  • src/server.{js,mjs,cjs,ts,cts,mts}
  • app.{js,mjs,cjs,ts,cts,mts}
  • index.{js,mjs,cjs,ts,cts,mts}
  • server.{js,mjs,cjs,ts,cts,mts}

For example, use the following code as an entrypoint:

src/index.ts
import Koa from 'koa'
import { Router } from '@koa/router'
 
const app = new Koa()
const router = new Router()
 
router.get('/', (ctx) => {
  ctx.body = { message: 'Hello from Koa!' }
})
 
app.use(router.routes())
app.use(router.allowedMethods())
 
app.listen(3000)

Use vercel dev to run your application locally.

terminal
vercel dev
Minimum CLI version required: 50.4.8

To deploy, connect your Git repository or use Vercel CLI:

terminal
vc deploy
Minimum CLI version required: 50.4.8

When you deploy a Koa app to Vercel, your Koa application becomes a single Vercel Function and uses Fluid compute by default. Vercel automatically scales your Koa app up and down based on traffic.

All Vercel Functions limitations apply to the Koa application, including the size of the application being limited to 250MB.

Learn more about deploying Koa projects on Vercel with the following resources:


Was this helpful?

supported.