Skip to content
Cloudflare Docs

Changelog

New updates and improvements at Cloudflare.

Subscribe to RSS
View all RSS feeds

hero image

Directly import `waitUntil` in Workers for easily spawning background tasks

You can now import waitUntil from cloudflare:workers to extend your Worker's execution beyond the request lifecycle from anywhere in your code.

Previously, waitUntil could only be accessed through the execution context (ctx) parameter passed to your Worker's handler functions. This meant that if you needed to schedule background tasks from deeply nested functions or utility modules, you had to pass the ctx object through multiple function calls to access waitUntil.

Now, you can import waitUntil directly and use it anywhere in your Worker without needing to pass ctx as a parameter:

import { waitUntil } from "cloudflare:workers";
export function trackAnalytics(eventData) {
const analyticsPromise = fetch("https://analytics.example.com/track", {
method: "POST",
body: JSON.stringify(eventData),
});
// Extend execution to ensure analytics tracking completes
waitUntil(analyticsPromise);
}

This is particularly useful when you want to:

  • Schedule background tasks from utility functions or modules
  • Extend execution for analytics, logging, or cleanup operations
  • Avoid passing the execution context through multiple layers of function calls
import { waitUntil } from "cloudflare:workers";
export default {
async fetch(request, env, ctx) {
// Background task that should complete even after response is sent
cleanupTempData(env.KV_NAMESPACE);
return new Response("Hello, World!");
}
};
function cleanupTempData(kvNamespace) {
// This function can now use waitUntil without needing ctx
const deletePromise = kvNamespace.delete("temp-key");
waitUntil(deletePromise);
}

For more information, see the waitUntil documentation.