Skip to main content
The Scheduler service schedules Confect functions to run in the future. It wraps Convex’s scheduler with Effect-native types: delays use Duration and timestamps use DateTime. Both runAfter() and runAt() accept a ref to a mutation or action and an optional args object matching the ref’s args schema. They return an ID from the _scheduled_functions system table. Pass this ID to cancel() to cancel the scheduled function.

Run after a delay

Run at a specific time

Cancel a scheduled function

Call scheduler.cancel(id) to cancel a previously scheduled function. It returns an Effect<void> and is available wherever the Scheduler service is provided, including mutations and actions.
Cancellation follows Convex’s semantics: a pending function will not run. An action that has already started continues running, but any new functions it schedules are canceled. A mutation is canceled atomically or cannot be canceled if it has already committed. Convex cancellation errors surface as Effect defects, matching runAfter and runAt. For the full scheduling APIs, see the Effect Duration documentation, the Effect DateTime documentation, and the Convex scheduling documentation.