inngest-durable-functions

Build fault-tolerant TypeScript workflows with Inngest durable execution, retries, and step memoization.

Updated Jul 28, 2026
One-click install
npx skills add https://github.com/dhanushreddy291/durable-workflow-on-neon-functions --skill inngest-durable-functions-dhanushreddy291
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: inngest-durable-functions
Source: https://github.com/dhanushreddy291/durable-workflow-on-neon-functions/tree/main/.agents/skills/inngest-durable-functions
Command: npx skills add https://github.com/dhanushreddy291/durable-workflow-on-neon-functions --skill inngest-durable-functions-dhanushreddy291

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires inngest, winston, and includes references (resource) components.

What problem does it solve? Serverless background jobs break when processes crash mid-execution, cron jobs silently fail, and webhook handlers drop events, forcing you to rebuild queue infrastructure and duplicate work on retries. ## Core Features & Use Cases - Durable Step Execution: Wrap side effects in step.run() so completed steps are memoized and never re-executed after failures. - Flexible Triggers: Start functions from events with conditional filters, cron schedules with timezones, or direct function invocation. - Idempotency and Cancellation: Deduplicate runs with idempotency keys, cancel in-flight runs on matching events, and enforce start/finish timeouts. - Error Handling and Observability: Use NonRetriableError and RetryAfterError for precise retry control, plus OpenTelemetry extended traces and structured logging. - Use Case: A lead-enrichment pipeline inserts a database row, calls a web search API, sleeps durably for minutes without compute cost, and resumes exactly where it left off if the server restarts. ## Quick Start Ask the AI to create an Inngest function triggered by an event that fetches data in one step, processes it in another, and retries safely on failure.

Frequently Asked Questions about inngest-durable-functions

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I create a durable function with Inngest in TypeScript?▼

Call inngest.createFunction with a unique id, a triggers array containing events or cron schedules, and an async handler receiving event and step. Wrap all side effects like API calls and database writes in step.run() so they are memoized and retried independently.

How do I retry failed steps in an Inngest function?▼

Each step retries automatically with exponential backoff, defaulting to 4 retries per step, configurable via the retries option. Throw NonRetriableError for permanent failures like missing users, or RetryAfterError to respect API rate limits with custom timing.

Can Inngest functions run on a cron schedule?▼

Yes, add a cron trigger like { cron: "0 9 * * *" } to the triggers array, optionally with a timezone prefix such as TZ=Europe/Paris. You can combine up to 10 event and cron triggers on a single function.

What are the limits of an Inngest function run?▼

Each function run allows a maximum of 1,000 steps, 4MB of returned data per step, and 32MB of combined run state. If you hit these limits, split work into smaller functions connected via step.invoke() or step.sendEvent().

Why does my Inngest step re-execute after deployment?▼

Steps re-execute when their step IDs change, because Inngest hashes step IDs as state identifiers for memoization. Keep step IDs stable across deploys; changing an ID intentionally forces re-execution of that step.

Does Inngest support OpenTelemetry tracing and logging?▼

Yes, the extendedTracesMiddleware from inngest/experimental integrates with OpenTelemetry providers like Sentry and auto-instruments libraries such as pg, redis, express, and winston. Pass a structured logger to the Inngest client for correlated function logs.