Skip to content

Dead Letter Queue

Dead Letter Queue
0 errors pending
CQ is empty.

When actions fail permanently (after all retry attempts are exhausted), AsyncFlowState automatically captures the failure context and securely stores it in a Dead Letter Queue (DLQ).

This allows you to easily build internal dashboards to inspect failed actions, export failure logs for debugging, or replay intercepted failures later.

Quick Start

Activate the DLQ by setting deadLetter: true in your flow configuration.

ts
import { useFlow } from "@asyncflowstate/react";

const { loading } = useFlow(submitOrder, {
  retry: { maxAttempts: 3 },
  deadLetter: true, // Failures will be stored in the DLQ
  meta: { user: 123 }, // Metadata is preserved in the DLQ
});

Accessing the Dead Letter Queue

You can interact with the global DeadLetterQueue to inspect or replay failed actions.

ts
import { DeadLetterQueue } from "@asyncflowstate/core";

const dlq = DeadLetterQueue.getInstance();

// Subscribe to state changes
dlq.subscribe((entries) => {
  console.log("Failed actions:", entries);
});

// Access the entries manually
const entries = dlq.getAll();

/*
[
  {
    "id": "abc123xyz",
    "args": [{ orderId: 99 }],
    "error": "Network timeout",
    "timestamp": "2026-04-07T12:00:00.000Z",
    "attempts": 3,
    "meta": { "user": 123 }
  }
]
*/

DLQ Management

You can clear entries or export them in bulk for reporting.

ts
const dlq = DeadLetterQueue.getInstance();

// Remove a specific failure once it's been handled
dlq.remove("abc123xyz");

// Export all failures as a formatted JSON string
const logFile = dlq.export();

// Clear the entire queue
dlq.clear();

Built with by AsyncFlowState Contributors
Open Source · MIT License