Concepts
Background Functions
Contrary to the Queue’s status-quo of Producers and Consumers, Defer brings the concept of Background Functions as a basic unit of work:
import { defer } from "@defer/client";
async function importContacts(userId: string) {
// ... import contacts from Hubspot
}
export default defer(importContacts, { concurrency: 2, retry: 2 });
Enqueuing an execution is achieved by simply calling Background Functions (Producer pattern):
import express from "express";
import importContacts from "./defer/importContacts";
const app = express();
app.get("/", (req, res) => {
// calling a background function triggers an execution on Defer Platform
await importContacts(req.session.userId);
res.send("Import started!");
});
app.listen(3000);
Calling a Background Function (await importContacts();
) triggers a call to
the Defer API to enqueue an Execution on
The Defer Platform.

The lifecycle of a Background Function call.
Builds & Executions
Builds
Defer builds your Background Function into optimized bundles to run pending Executions in isolated containers.
A Defer Build extracts the Background Function defined in your project with their configuration:

Background Functions identified in a project.
Executions
Executions get processed based on their schedule and available account concurrency capacity.
Each Execution benefits from dedicated resources and rich runtime supporting native dependencies and local imports.
Finally, Executions comes with detailed timings, logs in the Console, and quick actions such as rerun or cancel:

A successful execution with logs and detailed timings.
Was this page helpful?