NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #3814 most downloaded on npm
xyflow core system that powers React Flow and Svelte Flow.
Last release 10 days ago
24 Sep 2026
Release timing varies
gaps range from 8 days to 3 months
Most releases are documented
notes for 49 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
3 years old
87 releases · first in 2023
One column per quarter.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Patch Changes #5998 91a4adf - Always fire onResizeEnd after onResizeStart #5998 91a4adf - Fix incorrect values during resize when shouldResize returns
Patch Changes #5997 0117cc9 - Prevent attribution warning when pane is not rendered either
Patch Changes #5981 22e0be2 - Add handleAttributionWarning function
Patch Changes #5902 393d951 - Allow middle-mouse viewport panning to start from a selection rectangle. #5889 ff126a0 - Fix extent: 'parent' not immedi
#5902 393d951 - Allow middle-mouse viewport panning to start from a selection rectangle.
#5889 ff126a0 - Fix extent: 'parent' not immediately resolving when parent has width or initialWidth.
#5871 e5d86bd - Fix getNodesBounds stretching the returned bounds to include the origin (0, 0) when one of the passed ids/nodes can't be resolved.
#5922 392da00 - Allow Control to activate pane panning with a primary-button drag.
Patch Changes #5850 c707267 - Cache the zoom pane extent so panning and pinching no longer force a synchronous layout. #5839 0c0cebc - Use correct fil
#5850 c707267 - Cache the zoom pane extent so panning and pinching no longer force a synchronous layout.
#5839 0c0cebc - Use correct fill color for bg pattern in dark mode
#5851 56cf3b0 - Fix fitView with includeHiddenNodes ignoring hidden nodes that declare an intrinsic size (width/height/initialWidth/initialHeight) but were never measured
#5845 a01bb6b - Check if parent node is in node lookup before clamp the position to prevent throwing an error.
#5849 9b3f390 - Always fire onPanZoomEnd when onPanZoomStart was fired due to a pan-on-scroll wheel tick
#5837 cdfcbeb - Check for element existence and type before checking property existence in node/edge typeguards.
Patch Changes #5806 ceb8604 - Reduce allocations in getNodesInside by testing nodes against the viewport without building a Rect per node #5815 87da45
### Patch Changes - #5791 `732c8eb` - Adds a type error when handleId is used without handleType in useNodeConnections - #5793 `c5c853d` - Dev Warning
#5791 732c8eb - Adds a type error when handleId is used without handleType in useNodeConnections
#5793 c5c853d - Dev Warnings now use library-specific messaging with the correct documentation links.
#5677 e6661de - Add autoPanOnSelection to auto-pan when user drags a selection close to the edge of the viewport.
#5638 40660cd - Fix selection box issue on mobile devices by adding touch-action:none
#5784 7055140 - Fix node resizing possible beyond absolute extents
### Patch Changes - #5730 `4a278dbbf` Thanks @justn-hyeok! - Fix missing border radius on getSmoothStepPath edge bends when using stepPosition
4a278dbbf Thanks @justn-hyeok! - Fix missing border radius on getSmoothStepPath edge bends when using stepPosition### Patch Changes - #5703 `ce6c869df` Thanks @peterkogo! - Improve return type of useNodesData. Now you can narrow down the data type by checking the
ce6c869df Thanks @peterkogo! - Improve return type of useNodesData. Now you can narrow down the data type by checking the node type.### Patch Changes - #5637 `0c7261a6d` Thanks @moklick! - Add zIndexMode to control how z-index is calculated for nodes and edges - #5617 `8598b6bc2` T
#5637 0c7261a6d Thanks @moklick! - Add zIndexMode to control how z-index is calculated for nodes and edges
#5617 8598b6bc2 Thanks @akre54! - Allow custom getEdgeId function in addEdge and reconnectEdge options to enable custom edge ID schemes.
#5635 2d7fa40e2 Thanks @tornado-softwares! - Update an ongoing connection when user moves node with keyboard.
### Patch Changes - #5578 `00bcb9f5f` Thanks @peterkogo! - Pass current pointer position to connection
00bcb9f5f Thanks @peterkogo! - Pass current pointer position to connection### Patch Changes - #5572 `5ec0cac7f` Thanks @peterkogo! - Fix onPaneClick events being suppressed when selectionOnDrag=true
5ec0cac7f Thanks @peterkogo! - Fix onPaneClick events being suppressed when selectionOnDrag=true### Patch Changes - #5544 `c17b49f4c` Thanks @0x0f0f0f! - Add EdgeToolbar component - #5550 `6ffb9f790` Thanks @peterkogo! - Prevent child nodes of di
#5544 c17b49f4c Thanks @0x0f0f0f! - Add EdgeToolbar component
#5550 6ffb9f790 Thanks @peterkogo! - Prevent child nodes of different parents from overlapping
#5528 d50a963cd Thanks @peterkogo! - Let NodeResizer props change during ongoing resize
#5551 6bb64b3ed Thanks @moklick! - Allow to start a selection above a node
#5546 8a9ee2d83 Thanks @0x0f0f0f! - Do not crash mini map if all nodes are hidden
#5547 1c8961207 Thanks @moklick! - Always call onMoveEnd when onMoveStart was called
### Patch Changes - #5515 `9b4e99029` Thanks @peterkogo! - Fix id of static handles not being parsed - #5512 `70b672604` Thanks @peterkogo! - Prevent
#5515 9b4e99029 Thanks @peterkogo! - Fix id of static handles not being parsed
#5512 70b672604 Thanks @peterkogo! - Prevent native page zoom when pinch zooming on node with nowheel class
### Patch Changes - #5480 `f869808e3` Thanks @peterkogo! - Prevent multi-touch events while making a new connection - #5489 `2a35c65a0` Thanks @Sec-an
#5480 f869808e3 Thanks @peterkogo! - Prevent multi-touch events while making a new connection
#5489 2a35c65a0 Thanks @Sec-ant! - Fix nodeDragThreshold changing with zoom level
#5509 b6ae4cc11 Thanks @moklick! - Prevent calling onResizeEnd if node was not resized
#5511 d891e5ff1 Thanks @peterkogo! - Fix regression: elevate edges if connected nodes are selected
#5497 eba087e8b Thanks @peterkogo! - Skip eagerly rendering nodes when node dimensions and handles are predefined
`53da1193` Thanks @moklick! - Round floating numbers for node positions when dragging a multi selection
### Patch Changes - #5443 `144f8feb` Thanks @moklick! - Use 1 as the default for interactive Minimap zoom step - #5428 `f18e9856` Thanks @Karl255! - F
#5443 144f8feb Thanks @moklick! - Use 1 as the default for interactive Minimap zoom step
#5428 f18e9856 Thanks @Karl255! - Fix clicking on detached handle elements not initiating drawing of connections
#5453 7a088817 Thanks @moklick! - Snap selection instead of separate nodes when snap grid is enabled
#5415 6838df9d Thanks @moklick! - Allow strings and enums for existing marker types
#5450 fddbb7de Thanks @moklick! - Call onNodeDrag while autopan is ongoing
#5448 f5fe1d71 Thanks @moklick! - Use correct HandleConnection type for Handle onConnect
#5419 daa33fb3 Thanks @0x0f0f0f! - Make arrow heads markers fallback to --xy-edge-stroke CSS variable when passing null as marker color
### Patch Changes - #5321 `864d4188` Thanks @dylanmiddendorf! - Fix incorrect node position clamping for non-child nodes - #5376 `f0ce2c87` Thanks @ke
#5321 864d4188 Thanks @dylanmiddendorf! - Fix incorrect node position clamping for non-child nodes
#5376 f0ce2c87 Thanks @kennyjwilli! - Add stepPosition param to step edge
### Patch Changes - #5370 `26f2cdd7` Thanks @moklick! - Only fire connection end events if connection was started
### Patch Changes - #5362 `72dc1d60` Thanks @moklick! - Remove pointer events from Panel via CSS while a selection gets dragged - #5361 `90e9247a` Tha
### Patch Changes - #5354 `c4312d89` Thanks @moklick! - Add TSDoc annotations - #5333 `3d7e8b6b` Thanks @peterkogo! - Add missing type exports - #5350
### Patch Changes - #5299 `848b486b` Thanks @printerscanner! - Add ariaRole prop to nodes and edges - #5280 `dba6faf2` Thanks @moklick! - Improve typi
#5299 848b486b Thanks @printerscanner! - Add ariaRole prop to nodes and edges
#5276 6ce44a05 Thanks @moklick! - Add an ease and interpolate option to all function that alter the viewport
#5277 f59730ce Thanks @printerscanner! - Add ariaLabelConfig prop for customizing UI text like aria labels and descriptions.
#5317 09458f52 Thanks @moklick! - Add domAttributes option for nodes and edges
#5326 050b511c Thanks @peterkogo! - Prevent NodeResizer controls to become too small when zooming out
### Patch Changes - #5266 `77107453` Thanks @peterkogo! - Fix connection snapping for handles larger than connectionRadius
77107453 Thanks @peterkogo! - Fix connection snapping for handles larger than connectionRadius### Patch Changes - #5259 `77bf79c4` Thanks @peterkogo! - Fix background-color css variable fallback.
77bf79c4 Thanks @peterkogo! - Fix background-color css variable fallback.### Patch Changes - #5255 `a95f0e2f` Thanks @peterkogo! - Added OnReconnect types
a95f0e2f Thanks @peterkogo! - Added OnReconnect types### Patch Changes - #5252 `2a03213b` Thanks @moklick! - Center panel correctly when bottom-center or top-center position is used
### Patch Changes - #5227 `a7d10ffc` Thanks @moklick! - add resizeDirection for XYResizer - #5221 `4e681f9c` Thanks @moklick! - Allow zero as a valid
### Patch Changes - #5212 `0f43b8ea` Thanks @moklick! - Add polyfill for Promise.withResolvers - #5192 `fc241253` Thanks @peterkogo! - Optimize perfor
#5212 0f43b8ea Thanks @moklick! - Add polyfill for Promise.withResolvers
#5192 fc241253 Thanks @peterkogo! - Optimize performance of nodesInitialized
#5153 98fe23c7 Thanks @nick-lawrence-ctm! - Add separators to horizontal control buttons
#5191 e5735b51 Thanks @peterkogo! - Fix legacy padding being slightly larger than before
### Patch Changes - #5156 `02a3b746` Thanks @dimaMachina! - Improve TSDoc comments for type GetSmoothStepPathParams and getSmoothStepPath function - #
#5156 02a3b746 Thanks @dimaMachina! - Improve TSDoc comments for type GetSmoothStepPathParams and getSmoothStepPath function
#5168 cbe305e1 Thanks @dimaMachina! - Improve TSDoc comments for getOutgoers, getIncomers and type GetNodesBoundsParams
#5169 1f671bd4 Thanks @dimaMachina! - Improve TSDoc comments for type ReconnectEdgeOptions and getViewportForBounds
#5155 aaebc462 Thanks @dimaMachina! - Improve TSDoc comments for type GetStraightPathParams and getStraightPath function
#5157 6ec942fc Thanks @dimaMachina! - Improve TSDoc comments for type GetBezierPathParams and getBezierPath function
### Patch Changes - #5147 `f819005b` Thanks @moklick! - Pass dimensions to final resize change event - #5142 `24a1bc89` Thanks @dimaMachina! - Improve
#5147 f819005b Thanks @moklick! - Pass dimensions to final resize change event
#5142 24a1bc89 Thanks @dimaMachina! - Improve TSDoc comments for HandleProps, NodeBase and InternalNodeBase
#5136 36657cd6 Thanks @dimaMachina! - Improve TSDoc comments for EdgeBase
#5139 89de9ca8 Thanks @dimaMachina! - Use rgba for colors with opacity instead of rgb for MiniMap mask color
#5148 2ac6e155 Thanks @moklick! - Prevent browser zoom for pinch zoom gestures on nowheel elements
#5137 f0f378e5 Thanks @dimaMachina! - Improve TSDoc comments for Connection and ConnectionInProgress
### Patch Changes - #5118 `5d15b01b` Thanks @moklick! - Do not swallow key events when a button is focused - #5067 `cb685281` Thanks @peterkogo! - Fix
### Patch Changes - #5052 `99dd7d35` Thanks @moklick! - Show an error if user drags uninitialized node
### Patch Changes - #5010 `6c121d42` Thanks @moklick! - Add more TSDocs to components, hooks, utils funcs and types - #4990 `4947029c` Thanks @damians
#5010 6c121d42 Thanks @moklick! - Add more TSDocs to components, hooks, utils funcs and types
#4990 4947029c Thanks @damianstasik! - Make it possible to stop autoPanOnDrag by setting it to false
#5003 e8e0d684 Thanks @dimaMachina! - repair lint command
### Patch Changes - #4957 `fe843982` Thanks @peterkogo! - Narrow properties selected, selectable, deletable, draggable of NodeProps type to be require
#4957 fe843982 Thanks @peterkogo! - Narrow properties selected, selectable, deletable, draggable of NodeProps type to be required.
#4968 e73ef09f Thanks @peterkogo! - Make internal nodes immutable
### Patch Changes - #4949 `592c7eaf` Thanks @peterkogo! - Fix useNodeConnection hook not returning all connected edges.
592c7eaf Thanks @peterkogo! - Fix useNodeConnection hook not returning all connected edges.### Patch Changes - #4880 `e2d849dc` Thanks @crimx! - Add type check for all event targets - #4725 `e10f53cf` Thanks @peterkogo! - Add useNodeConnecti
#4880 e2d849dc Thanks @crimx! - Add type check for all event targets
#4725 e10f53cf Thanks @peterkogo! - Add useNodeConnections hook to track all connections to a node. Can be filtered by handleType and handleId.
#4929 4947f683 Thanks @peterkogo! - Optimize selections and take into account if edges connected to selected nodes are actually selectable.
### Patch Changes - #4874 `d60331e6` Thanks @crimx! - Refactor isInputDOMNode so that it handles non-html objects
### Patch Changes - #4790 `2fa9a920` Thanks @peterkogo! - Fix node dragging & resizing while zooming on flow that does not cover whole browser window.
#4790 2fa9a920 Thanks @peterkogo! - Fix node dragging & resizing while zooming on flow that does not cover whole browser window.
#4782 323e1b35 Thanks @peterkogo! - Fix node intersections in nested flow.
### Patch Changes - #4772 `7f670ab0` Thanks @mistic! - Splits exports field in package.json to support an explicit resolution for browser, node and de
### Patch Changes - #4755 `005ae1c0` Thanks @peterkogo! - Add module to exports in package.json. This should resolve possible issues with Webpack ESM
#4755 005ae1c0 Thanks @peterkogo! - Add module to exports in package.json. This should resolve possible issues with Webpack ESM Module Resolution.
#4730 2c590b90 Thanks @peterkogo! - Fixed rare crash while dragging
### Patch Changes - #4681 `99ba64ac` Thanks @moklick! - Fix an issue that appeared when user deleted node while dragging. - #4670 `b056564c` Thanks @p
### Patch Changes - #4477 `d5592e75` Thanks @peterkogo! - Add getNodesBounds to useReactFlow/useSvelteFlow hook as the new recommended way of determin
#4477 d5592e75 Thanks @peterkogo! - Add getNodesBounds to useReactFlow/useSvelteFlow hook as the new recommended way of determining node bounds.
#4572 d9563505 Thanks @peterkogo! - Improve handling of global and individual nodeExtents. Nodes will never render outside of specified extents.
### Patch Changes - #4611 `2aaa709c` Thanks @moklick! - make onViewportChange a dynamic prop
### Patch Changes - #4594 `5138d90b` Thanks @peterkogo! - Fixed reconnecting edges with loose connectionMode - #4603 `12dbe125` Thanks @moklick! - use
### Patch Changes - #4568 `c3e62782` Thanks @peterkogo! - Only display grab cursor when panOnDrag is on left mouse button
c3e62782 Thanks @peterkogo! - Only display grab cursor when panOnDrag is on left mouse button### Patch Changes - #4544 `b63a3734` Thanks @moklick! - strengthen css selector for edges for overflow visible - #4555 `24e87e39` Thanks @peterkogo! -
#4544 b63a3734 Thanks @moklick! - strengthen css selector for edges for overflow visible
#4555 24e87e39 Thanks @peterkogo! - Added final connection state as a function parameter to onReconnectEnd
#4548 692e6440 Thanks @peterkogo! - Replaced algorithm used for searching close handles while connecting
#4519 559d4926 Thanks @peterkogo! - fix(connection) snapped position not updated correctly
#4538 4ecfd7e1 Thanks @bcakmakoglu! - Use the handle id of the matching handle type when warning about an edge that can't be created due to missing handle ids.
#4536 e7ef328f Thanks @peterkogo! - fix(onlyRenderVisible) edges to offscreen nodes with fixed width & height displayed correctly
#4549 99733c01 Thanks @moklick! - feat(onConnectEnd): pass connectionState param
### Patch Changes - #4465 `543c0939` Thanks @moklick! - fix(nodes): re-measure when measured is not set - #4464 `89cd677b` Thanks @moklick! - fix(hand
### Patch Changes - #4446 `80baf53b` Thanks @moklick! - fix(resizer): export types - #4451 `4cccd06a` Thanks @moklick! - add nodeClickDistance
### Patch Changes - #4432 `d2da5765` Thanks @moklick! - refactor(ConnectionState): use internal node, add node generic
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →