unstale

npm / @xyflow/react

@xyflow/react

What changed in @xyflow/react 12, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-17.

3 breaking7 new APIs and options7 performance9 behavior and defaults2 tooling27 fixes and other

See which of these apply to your code, ranked, in your agent:

npx @unstale/cli init

@unstale/cli 0.1.0 on npm

@xyflow/react 1255 changes

Breaking changes 3

  • Pane clicks no longer fire when a connection ends on the pane.

    12.11.1release notes

  • Using handleId without handleType now produces a type error.

    12.11.0release notes

  • Child nodes belonging to different parents are prevented from overlapping.

    12.9.0release notes

New APIs and options 7

  • Adds automatic panning when a user drags a selection close to the viewport edge.

    12.11.0release notes

  • Exports the NodeHandle type for use by developers.

    12.11.0release notes

  • screenToFlowPosition now accepts snapGrid in its options.

    12.10.2release notes

  • Adds a hook for applying middleware to node-change handling.

    12.10.0release notes

  • Adds zIndexMode to control how z-index is calculated for nodes and edges.

    12.10.0release notes

  • Adds the type property to EdgeProps, matching NodeProps behavior.

    12.9.0release notes

  • Adds the EdgeToolbar component for building toolbars associated with edges.

    12.9.0release notes

Performance 7

  • MiniMap no longer re-renders on every store update, improving rendering performance.

    12.11.2release notes

  • Viewport pan and zoom transforms are applied imperatively so the component renders only once.

    12.11.2release notes

  • XYDrag instances are created only for draggable nodes, reducing unnecessary runtime work.

    12.11.2release notes

  • Optimizes zooming performance when panOnScroll mode is enabled.

    12.10.1release notes

  • Prevents unnecessary updates when selectNodesOnDrag is false.

    12.10.1release notes

  • Prevents unnecessary re-renders in FlowRenderer, improving rendering efficiency.

    12.10.0release notes

  • Improves the performance of adding nodes and edges.

    12.9.0release notes

Behavior and default changes 9

  • Development now logs when a user hides attribution.

    12.11.4release notes

  • Middle-mouse viewport panning can now start from a selection rectangle.

    12.11.3release notes

  • Control can activate pane panning during a primary-button drag.

    12.11.3release notes

  • Touch panning takes precedence over drag selection when selectionOnDrag is combined with mouse-button-specific panOnDrag settings.

    12.11.3release notes

  • useKeyPress now supports key combinations containing three or more keys.

    12.11.3release notes

  • Improves the return type so the data type can be narrowed by checking the node type.

    12.10.1release notes

  • Connections now receive the current pointer position.

    12.9.3release notes

  • The default paneClickDistance value is now 1.

    12.9.3release notes

  • Selections can now be started above a node.

    12.9.0release notes

Tooling 2

  • Adds @types/react as an optional peer dependency to prevent pnpm strict-mode issues.

    12.11.0release notes

  • Adds @types/react-dom as an optional peer dependency to prevent pnpm strict-mode issues.

    12.11.0release notes

Fixes and other changes 27

  • onResizeEnd now always fires after onResizeStart during resizing.

    12.12.0release notes

  • Fixes incorrect values during resize when shouldResize returns false.

    12.12.0release notes

  • Prevents the attribution warning when the pane is not rendered.

    12.11.6release notes

  • All properties in the provider store are reset when the flow unmounts.

    12.11.6release notes

  • MiniMap continues working after ReactFlow is remounted.

    12.11.4release notes

  • MiniMap no longer zooms out to include the origin when every node is hidden.

    12.11.4release notes

  • The Background pattern offset calculation is corrected.

    12.11.3release notes

  • extent: 'parent' now resolves immediately when the parent has width or initialWidth.

    12.11.3release notes

  • An error is now invoked when a handle cannot be found.

    12.11.3release notes

  • Internal setNodes now uses the correct nodeExtent.

    12.11.3release notes

  • The type now preserves its discriminated union, improving type-safe connection state handling.

    12.11.1release notes

  • Development warnings now use library-specific messages and correct documentation links.

    12.11.0release notes

  • Prevents node resizing beyond absolute extents.

    12.11.0release notes

  • Corrects the event type passed to onNodeDrag.

    12.11.0release notes

  • The type field may be omitted; omission is equivalent to type: "default".

    12.10.2release notes

  • Remounts no longer produce an empty store, improving ReactFlow state availability during remounts.

    12.10.2release notes

  • Viewport helper functions now receive options correctly when called through useReactFlow.

    12.10.2release notes

  • Visual node selection is cleared when no nodes remain selected in the flow.

    12.10.2release notes

  • Keeps isValidConnection up to date during an ongoing connection.

    12.10.1release notes

  • Handles an undefined node in the mini map.

    12.10.1release notes

  • Keeps onConnectEnd up to date during an ongoing connection.

    12.10.1release notes

  • Fixes programmatic selection issues by consolidating drag handler effects.

    12.10.1release notes

  • Ongoing connections now update when a user moves a node with the keyboard.

    12.10.0release notes

  • The selection box resets when a user selects a node.

    12.9.2release notes

  • onPaneClick events are no longer suppressed when selectionOnDrag=true.

    12.9.1release notes

  • NodeResizer props can change while a resize is in progress.

    12.9.0release notes

  • onMoveEnd is always called when onMoveStart was called.

    12.9.0release notes