Extract `sendAndWait` Helpers into a Reusable Package (@n8n/hitl-utils)

The idea is:

Extract the Human-in-the-Loop (HITL) utilities (currently in utils/sendAndWait/utils) into a lightweight, reusable npm package (e.g., @n8n/hitl-utils). This would allow custom node developers (e.g., for Signal, Telegram, etc.) to implement HITL workflows without copying code or depending on the full n8n package.

My use case:

I’m trying to extend n8n-nodes-signal to support interactive approval flows (similar to Telegram/WhatsApp nodes). Currently, I must either:

  1. Copy-paste the helpers (risking divergence from upstream updates), or
  2. Install n8n as a dependency (which is impractical due to size).

A standalone package would let me (and others) reuse the battle-tested HITL logic while keeping our nodes lightweight.

I think it would be beneficial to add this because:

  1. Encourages Ecosystem Growth
  • Custom node developers can easily add HITL support without reinventing the wheel.
  • Example: n8n-nodes-signal, custom Slack/Discord nodes, etc.
  1. Reduces Duplication
  • Avoids fragmented copies of the same logic across repositories.
  1. Simplifies Maintenance
  • Bug fixes/improvements in n8n automatically benefit all consumers.
  • No need to manually sync changes.
  1. Lightweight Integration
  • Consumers install only the helpers (few KB) instead of the entire n8n package (100MB+).

Any resources to support this?

Are you willing to work on this?

My TypeScript knowledge is limited. But I at least help with testing.

Great idea to extract the sendAndWait helpers into a lightweight package to avoid code duplication and ease integration in custom nodes.
It would also make centralized updates easier and prevent code drift.
Even with limited TS skills, you can contribute through testing, and the community can help with development.

2 Likes