{"collection":{"slug":"workflow-orchestration","name":"Background Jobs & Orchestration"},"digest":{"id":"cwd_tvYmDB8OgjPNT8gsrvZPM","weekStart":"2026-05-11","title":"Deferred execution arrives and expression engines tighten up","intro":"Inngest shipped deferred functions and expanded its Insights querying; n8n released v2.21 with major VM expression engine fixes across multiple patch levels; and Trigger.dev sped up failure detection.","body":"### Deferred functions and richer observability at Inngest\n\nThe week's biggest architectural news comes from Inngest, which released [deferred functions](/release/rel_KVQSWHtSXEMJcbwg4ONCo-inngest-4-4-0) as an experimental feature in the JS SDK v4.4.0. Deferred functions let a workflow hand off work to be completed later without holding a connection open — useful for long-running side effects that don't need to block the caller. On the server side, [v1.19.3](/release/rel_iM7cxUpyQK-eu3Nu36Rco-v1-19-3) follows quickly on the heels of v1.19.4's scope improvements: its Docker image strips `curl` for security and patches several Debian CVEs, while also fixing a bug that could close Connect workers prematurely when persisted SDK replies were still in flight.\n\nObservability also got a significant upgrade. The [Insights feature](/release/rel_Tj8C4nzfXZueTIWjjNal0-insights-new-datasources-and-features-for-querying-your-data) now supports querying Runs, Steps, and StepAttempts as first-class datasources, letting teams trace execution flow at a finer granularity without jumping between screens. This turns Insights from a dashboard into a debugging tool for pinpointing why a particular step failed or which runs are consuming the most wall-clock time.\n\n### n8n's expression engine overhaul\n\nn8n released [v2.21.0](/release/rel_E0YyN8PXgKgWA94aXLNzC-n8n-2-21-0) early in the week, but the story is the dense trail of patches that followed. Across [2.21.1](/release/rel_QJwAe8hV-h-O5nlvbMQY_-n8n-2-21-1), [2.21.2](/release/rel_C-vtkAfkq1B9rFAXh3C2j-n8n-2-21-2), and [2.21.3](/release/rel_C1jfEcg0rl_09YimAzw9H-n8n-2-21-3), the team hammered on the VM expression engine — the component that evaluates user-authored expressions in a sandboxed JavaScript environment. Three fixes stand out: nested arrays are now preserved correctly in output (which previously could silently flatten complex data structures), empty expressions resolve to empty strings instead of producing errors or `null`, and the AxiosHeaders instance is preserved when applying OpenAI vendor defaults, which matters for anyone piping AI model responses into subsequent nodes.\n\nThe same issues were backported to the LTS track: [v2.20.7](/release/rel_OQAakFJdMG27iCKw7vXp0-n8n-2-20-7) carries the OpenAI header fix, and [v2.20.8](/release/rel_EtE8gvXTkQBU0YfTBeWn--n8n-2-20-8) brings the nested array preservation. A security bulletin release on the v1.x line ([1.123.43](/release/rel_q944wcTDJZali4KgVeUSy-n8n-1-123-43)) addresses 16 vulnerabilities in dependencies including fast-xml-builder and langsmith, a reminder that supply-chain hygiene isn't just a recent trend.\n\n### Faster failures at Trigger.dev, quieter networking at Temporal\n\n[Trigger.dev v4.4.6](/release/rel_JpVPDSQF2CMEAIckE4D2c-trigger-dev-v4-4-6) closes a frustrating edge case: uncaught exceptions (say from a Redis client emitting `\"error\"` without a listener) no longer let runs hang until `MAX_DURATION_EXCEEDED`. The worker now fails the attempt immediately with the original error. The same release fixes a CPU-spinning bug in dev mode.\n\nOver at Temporal, [TypeScript SDK 1.17.2](/release/rel_d-8wUklnX8PR8XD0SSKN6-1-17-2) disables the new DNS resolver load-balancing feature by default after it caused networking issues in some setups — a welcome retreat for anyone who hit unexpected connection drops after the previous SDK update.","releaseIds":["rel_KVQSWHtSXEMJcbwg4ONCo","rel_iM7cxUpyQK-eu3Nu36Rco","rel_Tj8C4nzfXZueTIWjjNal0","rel_E0YyN8PXgKgWA94aXLNzC","rel_QJwAe8hV-h-O5nlvbMQY_","rel_C-vtkAfkq1B9rFAXh3C2j","rel_C1jfEcg0rl_09YimAzw9H","rel_OQAakFJdMG27iCKw7vXp0","rel_EtE8gvXTkQBU0YfTBeWn-","rel_q944wcTDJZali4KgVeUSy","rel_JpVPDSQF2CMEAIckE4D2c","rel_d-8wUklnX8PR8XD0SSKN6"],"releaseCount":16,"generatedAt":"2026-07-11T16:58:06.909Z","releases":[{"id":"rel_KVQSWHtSXEMJcbwg4ONCo","title":"inngest@4.4.0","path":"/release/rel_KVQSWHtSXEMJcbwg4ONCo-inngest-4-4-0","org":{"slug":"inngest","name":"Inngest"},"importance":null},{"id":"rel_iM7cxUpyQK-eu3Nu36Rco","title":"v1.19.3","path":"/release/rel_iM7cxUpyQK-eu3Nu36Rco-v1-19-3","org":{"slug":"inngest","name":"Inngest"},"importance":null},{"id":"rel_Tj8C4nzfXZueTIWjjNal0","title":"Insights: New datasources and features for querying your data","path":"/release/rel_Tj8C4nzfXZueTIWjjNal0-insights-new-datasources-and-features-for-querying-your-data","org":{"slug":"inngest","name":"Inngest"},"importance":null},{"id":"rel_E0YyN8PXgKgWA94aXLNzC","title":"n8n@2.21.0","path":"/release/rel_E0YyN8PXgKgWA94aXLNzC-n8n-2-21-0","org":{"slug":"n8n","name":"n8n"},"importance":null},{"id":"rel_QJwAe8hV-h-O5nlvbMQY_","title":"n8n@2.21.1","path":"/release/rel_QJwAe8hV-h-O5nlvbMQY_-n8n-2-21-1","org":{"slug":"n8n","name":"n8n"},"importance":null},{"id":"rel_C-vtkAfkq1B9rFAXh3C2j","title":"n8n@2.21.2","path":"/release/rel_C-vtkAfkq1B9rFAXh3C2j-n8n-2-21-2","org":{"slug":"n8n","name":"n8n"},"importance":null},{"id":"rel_C1jfEcg0rl_09YimAzw9H","title":"n8n@2.21.3","path":"/release/rel_C1jfEcg0rl_09YimAzw9H-n8n-2-21-3","org":{"slug":"n8n","name":"n8n"},"importance":null},{"id":"rel_OQAakFJdMG27iCKw7vXp0","title":"n8n@2.20.7","path":"/release/rel_OQAakFJdMG27iCKw7vXp0-n8n-2-20-7","org":{"slug":"n8n","name":"n8n"},"importance":null},{"id":"rel_EtE8gvXTkQBU0YfTBeWn-","title":"n8n@2.20.8","path":"/release/rel_EtE8gvXTkQBU0YfTBeWn--n8n-2-20-8","org":{"slug":"n8n","name":"n8n"},"importance":null},{"id":"rel_q944wcTDJZali4KgVeUSy","title":"n8n@1.123.43","path":"/release/rel_q944wcTDJZali4KgVeUSy-n8n-1-123-43","org":{"slug":"n8n","name":"n8n"},"importance":null},{"id":"rel_JpVPDSQF2CMEAIckE4D2c","title":"trigger.dev v4.4.6","path":"/release/rel_JpVPDSQF2CMEAIckE4D2c-trigger-dev-v4-4-6","org":{"slug":"trigger-dev","name":"Trigger.dev"},"importance":null},{"id":"rel_d-8wUklnX8PR8XD0SSKN6","title":"1.17.2","path":"/release/rel_d-8wUklnX8PR8XD0SSKN6-1-17-2","org":{"slug":"temporal","name":"Temporal"},"importance":null}]}}