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`