diff --git a/src/content/docs/en/reference/modules/astro-app.mdx b/src/content/docs/en/reference/modules/astro-app.mdx index 61f9f21930ed5..5c4d973779f89 100644 --- a/src/content/docs/en/reference/modules/astro-app.mdx +++ b/src/content/docs/en/reference/modules/astro-app.mdx @@ -248,7 +248,7 @@ import type {

-**Type:** `{addCookieHeader?: boolean; clientAddress?: string; locals?: object; prerenderedErrorPageFetch?: (url: ErrorPagePath) => Promise; routeData?: RouteData;}` +**Type:** `{addCookieHeader?: boolean; clientAddress?: string; locals?: object; prerenderedErrorPageFetch?: (url: ErrorPagePath) => Promise; waitUntil?: (promise: Promise) => void; routeData?: RouteData;}`

Describes the options for controlling the routes rendering. @@ -346,6 +346,33 @@ return app.render(request, { If not provided, Astro will fallback to its default behavior for fetching error pages. +#### `RenderOptions.waitUntil()` + +

+ +**Type:** `(promise: Promise) => void`
+ +

+ +An optional runtime hook for background work after the response is sent. + +Adapters can pass this through to let runtime cache providers schedule work such as cache writes or stale-while-revalidate without blocking the response path. + +The following example forwards a runtime's `waitUntil()` implementation to [`app.render()`](#apprender) in an [adapter server entrypoint](/en/reference/adapter-reference/#building-a-server-entrypoint): + +```js {8} +import { createApp } from 'astro/app/entrypoint'; + +const app = createApp(); + +export async function handler(event, context) { + // ... + return app.render(event.request, { + waitUntil: context.waitUntil.bind(context), + }); +} +``` + #### `RenderOptions.routeData`