Props List
This is the list of props you can pass to the <ReactFlow /> component.
import ReactFlow from 'reactflow';
Typescript
The interface of the ReactFlow Prop types is exported as ReactFlowProps. You can use it in your code as follows:
import { ReactFlowProps } from 'reactflow';
When you pass one of these props: nodeTypes, edgeTypes, deleteKeyCode (as an array), selectionKeyCode (as an array), multiselectionKeyCode (as an array), snapGrid or any event handler, you need to define it outside of the component or memoize it in order to prevent unnecessary re-renderings and bugs!
Basic Props
nodes?
edges?
defaultNodes?
defaultEdges?
onNodesChange?
(nodeChanges: NodeChange[]) => voidonEdgesChange?
(edgeChanges: EdgeChange[]) => voidonConnect?
(connection: Connection) => voidnodeTypes?
{ [key: string]: React.ComponentType<NodeProps> }{ input: InputNode, default: DefaultNode, output: OutputNode, group: GroupNode }edgeTypes?
{ [key: string]: React.ComponentType<EdgeProps> }{ default: BezierEdge, straight: StraightEdge, step: StepEdge, smoothstep: SmoothStepEdge }nodeOrigin?
[0.5, 0.5], bottom-right = [1, 1]. Values should be between 0 and 1.[number, number][0,0]style?
CSSPropertiesclassName?
stringFlow View
fitView?
booleanfalsefitViewOptions?
minZoom?
number0.5maxZoom?
number2defaultViewport?
snapGrid?
[number, number][25, 25]snapToGrid?
booleanfalseonlyRenderVisibleElements?
booleanfalsetranslateExtent?
nodeExtent?
[[-∞, -∞], [+∞, +∞]]preventScrolling?
booleantrueattributionPosition?
Edge Specific Props
elevateEdgesOnSelect?
booleanfalsedefaultMarkerColor?
string'#b1b1b7'defaultEdgeOptions?
edgeUpdaterRadius?
number10edgesUpdatable?
booleantrueEvent Handlers
Please wrap all event handlers that you are passing to <ReactFlow /> with a useCallback hook or define it outside of the component.
General
onInit?
(reactFlowInstance: ReactFlowInstance) => voidonError?
(code: string, message: string) => voidNodes
onNodeClick?
(event: React.MouseEvent, node: Node) => voidonNodeDragStart?
onNodeDrag?
onNodeDragStop?
onNodeMouseEnter?
(event: React.MouseEvent, node: Node) => voidonNodeMouseMove?
(event: React.MouseEvent, node: Node) => voidonNodeMouseLeave?
(event: React.MouseEvent, node: Node) => voidonNodeContextMenu?
(event: React.MouseEvent, node: Node) => voidonNodeDoubleClick?
(event: React.MouseEvent, node: Node) => voidonNodesDelete?
(nodes: Node[]) => voidonNodesChange?
(nodeChanges: NodeChange[]) => voidEdges
onEdgeClick?
(event: React.MouseEvent, edge: Edge) => voidonEdgeDoubleClick?
(event: React.MouseEvent, edge: Edge) => voidonEdgeMouseEnter?
(event: React.MouseEvent, edge: Edge) => voidonEdgeMouseMove?
(event: React.MouseEvent, edge: Edge) => voidonEdgeMouseLeave?
(event: React.MouseEvent, edge: Edge) => voidonEdgeContextMenu?
(event: React.MouseEvent, edge: Edge) => voidonEdgeUpdate?
(oldEdge: Edge, newConnection: Connection) => voidonEdgeUpdateStart?
(event: React.MouseEvent, edge: Edge, handleType: HandleType) => voidonEdgeUpdateEnd?
(event: React.MouseEvent, edge: Edge, handleType: HandleType) => voidonEdgesDelete?
(edges: Edge[]) => voidonEdgesChange?
(edgeChanges: EdgeChange[]) => voidConnections
onConnect?
(connection: Connection) => voidonConnectStart?
(event: React.MouseEvent, params: OnConnectStartParams) => voidonConnectEnd?
(event: React.MouseEvent) => voidonClickConnectStart?
(event: React.MouseEvent, params: OnConnectStartParams) => voidonClickConnectEnd?
(event: React.MouseEvent) => voidisValidConnection
(edge: Edge) => booleanundefinedPane
onMove?
(event: MouseEvent, viewport: Viewport) => voidonMoveStart?
(event: MouseEvent, viewport: Viewport) => voidonMoveEnd?
(event: MouseEvent, viewport: Viewport) => voidonPaneClick?
(event: React.MouseEvent) => voidonPaneMouseEnter?
(event: React.MouseEvent) => voidonPaneMouseMove?
(event: React.MouseEvent) => voidonPaneMouseLeave?
(event: React.MouseEvent) => voidonPaneContextMenu?
(event: React.MouseEvent) => voidonPaneScroll?
(event: React.MouseEvent) => voidSelection
onSelectionChange?
(params: OnSelectionChangeParams) => voidonSelectionDragStart?
(event: React.MouseEvent, nodes: Node[]) => voidonSelectionDrag?
(event: React.MouseEvent, nodes: Node[]) => voidonSelectionDragStop?
(event: React.MouseEvent, nodes: Node[]) => voidonSelectionContextMenu?
(event: React.MouseEvent, nodes: Node[]) => voidonSelectionStart?
() => voidonSelectionEnd?
() => voidInteraction
nodesDraggable?
draggable node option. If you want to use mouse handlers for non-draggable nodes, you need to add the class name"nopan" to the node.booleantruenodesConnectable?
connectable node option.booleantruenodesFocusable?
focusable node option.booleantrueedgesFocusable?
focusable edge option.booleantrueelementsSelectable?
selectable node option.booleantrueautoPanOnConnect?
booleantrueautoPanOnNodeDrag?
booleantruepanOnDrag?
boolean | number[]trueselectionOnDrag?
booleanfalseselectionMode?
SelectionMode.FullpanOnScroll?
zoomOnScroll option.booleanfalsepanOnScrollSpeed?
panOnScroll is enablednumberpanOnScrollMode?
zoomOnScroll?
booleantruezoomOnPinch?
booleantruezoomOnDoubleClick?
booleantrueselectNodesOnDrag?
booleantrueelevateNodesOnSelect?
booleantrueconnectOnClick?
booleantrueconnectionMode?
'strict' (only source to target connections are possible) or 'loose' (source to source and target to target connections are allowed)'strict'disableKeyboardA11y?
booleanfalseConnection Line
connectionRadius?
number20connectionLineType?
'default'connectionLineStyle?
CSSPropertiesconnectionLineComponent?
React.ComponentconnectionLineWrapperStyles?
CSSPropertiesKeys
Use these props to disable or change the node and edge delete key (default is backspace) or the keys to draw a selection box:
deleteKeyCode?
null to disable functionality.string | string[] | null'Backspace'selectionKeyCode?
null to disable functionalitystring | string[] | null'Shift'multiSelectionKeyCode?
null to disable functionalitystring | string[] | null'Meta'zoomActivationKeyCode?
panOnScroll=true orzoomOnScroll=false. You can set it to null to disable functionalitystring | string[] | null'Meta'panActivationKeyCode?
panOnScroll=false. You can set it to null to disable functionalitystring | string[] | null'Space'Pro Options
These options are only intended for subscribers of React Flow Pro. If you’re considering removing the attribution, please make sure to read our Remove Attribution guide first.
proOptions?
object (see below)proOptions.hideAttribution?
booleanfalse