Skip to content

Event Handlers Reference

All event handlers are passed via eventHandlers when mounting. Every handler is optional.

const app = await mountFlowDropApp(container, {
eventHandlers: {
/* handlers below */
}
});
HandlerSignatureWhen it fires
onWorkflowChange(workflow: Workflow, changeType: WorkflowChangeType) => voidAny modification to nodes, edges, config, or metadata
onWorkflowLoad(workflow: Workflow) => voidAfter a workflow is loaded and initialized
onDirtyStateChange(isDirty: boolean) => voidWhen the workflow transitions between saved and unsaved states
ValueTrigger
node_addNode added to canvas
node_removeNode deleted
node_moveNode dragged to new position
node_configNode configuration values changed
edge_addConnection drawn between nodes
edge_removeConnection deleted
metadataWorkflow metadata changed
nameWorkflow name edited
descriptionWorkflow description edited
HandlerSignatureWhen it fires
onBeforeSave(workflow: Workflow) => Promise<boolean | void>Before save. Return false to cancel.
onAfterSave(workflow: Workflow) => Promise<void>After successful save
onSaveError(error: Error, workflow: Workflow) => Promise<void>When save fails
HandlerSignatureWhen it fires
onApiError(error: Error, operation: string) => boolean | voidAny API request failure. Return true to suppress default toast. operation values: "save", "load", "fetchNodes", "fetchCategories", etc.
onBeforeUnmount(workflow: Workflow, isDirty: boolean) => voidBefore FlowDrop is destroyed/unmounted
HandlerSignatureWhen it fires
onAgentSpecExecutionStarted(executionId: string) => voidExecution begins
onAgentSpecExecutionCompleted(executionId: string, results: Record<string, unknown>) => voidExecution succeeds
onAgentSpecExecutionFailed(executionId: string, error: Error) => voidExecution fails
onAgentSpecNodeStatusUpdate(nodeId: string, status: NodeExecutionInfo) => voidNode status changes during execution
interface FlowDropEventHandlers {
onWorkflowChange?: (workflow: Workflow, changeType: WorkflowChangeType) => void;
onDirtyStateChange?: (isDirty: boolean) => void;
onBeforeSave?: (workflow: Workflow) => Promise<boolean | void>;
onAfterSave?: (workflow: Workflow) => Promise<void>;
onSaveError?: (error: Error, workflow: Workflow) => Promise<void>;
onWorkflowLoad?: (workflow: Workflow) => void;
onBeforeUnmount?: (workflow: Workflow, isDirty: boolean) => void;
onApiError?: (error: Error, operation: string) => boolean | void;
onAgentSpecExecutionStarted?: (executionId: string) => void;
onAgentSpecExecutionCompleted?: (executionId: string, results: Record<string, unknown>) => void;
onAgentSpecExecutionFailed?: (executionId: string, error: Error) => void;
onAgentSpecNodeStatusUpdate?: (nodeId: string, status: NodeExecutionInfo) => void;
}

For usage examples and patterns, see the Event System guide.