One warm function. Multiple concurrent requests.
Easel Functions run your framework’s server code with no servers to manage. Concurrent Functions let one warm instance serve overlapping requests, so traffic bursts reuse capacity instead of starting new instances.
More requests per warm instance
While one request waits on a database or an API, the same warm instance starts the next. Bursts reuse capacity instead of starting new instances, and each request keeps its own identity.
A burst of 4 requests to /api/chat
RequestCold startOne request per instance
4 instances · 3 cold starts
Concurrent Functions
1 instance · 0 cold starts
Works with the code you already have
Server Components, Route Handlers, Server Actions, loaders, and server routes become Functions automatically. Static and cached pages are served from the CDN and never invoke one.
Build output
Next.js · 6 routes · 3 Functions| Route | Type | Served by |
|---|---|---|
| ○/ | Static page | CDN |
| ●/blog/[slug] | ISR page | CDNregenerated by a Function |
| ƒ/dashboard | Server Components | Function |
| ƒ/api/chat | Route Handler | Functionstreaming |
| ƒ/api/webhooks/stripe | Route Handler | Function |
| ƒmiddleware | Middleware | Edgeruns before the cache |
Respond first and finish the work after
Responses stream to the browser as chunks are ready. Work you schedule with after() or waitUntil keeps running in the same invocation once the response is sent.
POST/api/chat
1 invocation · 2.31sSee every invocation
Each invocation shows its route, the requests it served, cold starts, duration, and memory. Open one to see its overlapping requests side by side.
Invocations
Last 15 minutes- /api/chat4Warm1.84s412 MBPOST /api/chat1.48sPOST /api/chat1.03sPOST /api/chat1.16sPOST /api/chat1.21s
- /dashboard1Warm212ms268 MB
- /api/webhooks/stripe2Cold640ms190 MB
Caching, billing, and tracing included
Caching, billing, and tracing that work the way your framework expects.
Runtime Cache
A key/value store shared across instances, with the same
getCache()API you already use.One tag, every layer
revalidateTagclears the CDN, Runtime Cache, and ISR pages together.Pay for requests, not instances
Billed on requests and GB-hours. Overlapping requests share one billed execution.
OpenTelemetry built in
Your spans nest under each invocation's trace. No collector or endpoint to configure.
Run Concurrent Functions on your next deploy
Deploy an app with server routes, then open Observability to watch one warm function serve overlapping requests.