Skip to main content
FlowDrop’s interrupt system enables workflows to pause execution and request user input before continuing. This is essential for approval workflows, data collection, decision points, and quality control.
Every interrupt prompt below ships as a live, interactive component. Explore its states, props, and edge cases in FlowDrop Storybook.

Interrupt types

Confirmation

Simple yes/no prompt for binary decisions:
Interrupt prompts rendered in chat showing confirmation buttons.

The confirmation interrupt types as users see them in the playground chat.

Response: boolean

ConfirmationPrompt in Storybook

Try the confirmed, declined, submitting, and error states.

Choice

Single or multiple selection from predefined options:
Response: string (single) or string[] (multiple)

ChoicePrompt in Storybook

Compare single-select and multi-select variants.

Text input

Free-form text entry:
Response: string

TextInputPrompt in Storybook

See single-line, multiline, and length-constrained inputs.

Form

Complex data entry using JSON Schema:
Response: object (matching schema structure)

Review

Review proposed field changes with per-field accept/reject decisions and visual diffs:
Response: ReviewResolution with per-field decisions and summary counts.

ReviewPrompt in Storybook

Inspect per-field diffs, accept/reject controls, and many-change views.

Architecture

Frontend integration

The ChatPanel automatically detects and renders interrupts in messages. For manual integration:

Using prompt components directly

Backend integration

Message metadata format

When a workflow requires input, the backend sends a message with interrupt metadata:

API endpoints

State management

The interrupt store uses a state machine with these transitions:
  • idle — Awaiting user input
  • submitting — User response being sent
  • resolved — Successfully processed
  • error — Submission failed (can retry)
Resolved interrupts remain visible but disabled, showing the user’s selection.

Best practices

  1. Clear messages — Write actionable prompts (“Do you approve sending this email to 150 recipients?” not “Proceed?”)
  2. Meaningful labels — Use descriptive button labels (“Yes, send email” not “Yes”)
  3. Default values — Provide sensible defaults for form fields
  4. Cancel behavior — Only set allowCancel: false for mandatory interrupts
  5. Error handling — Always handle resolution failures gracefully