Streaming function responses and maxDuration
Your functions now stream responses. Easel sends headers as soon as your code returns them and forwards body chunks as they’re produced, instead of waiting for the whole body. Each route also runs for the maxDuration you set.
Streaming responses
Return a ReadableStream, stream server-rendered HTML with Suspense, or send Server-Sent Events, and the client starts receiving data as soon as your code writes it. The invocation stays active while the stream is open, and streaming counts toward the route’s maximum duration.
Responses the CDN needs whole before it can cache them, such as ISR pages, are still buffered before caching. Ordinary dynamic responses stream to the client.
Set a maximum duration
Routes without a value get a 30s default. Set a longer one per route through your framework. In Next.js, export it from the route segment:
Easel reads the value from your build output, so a functions entry in vercel.json works too. Values outside 1–800s are clamped. Maximum duration covers your handler, streaming the body, and waitUntil or after() work.
Each function on a deployment’s resources page shows its Max duration, so you can confirm what Easel picked up.
See Function runtime and Maximum duration for details.