78 KiB
@xyflow/react
12.10.0
Minor Changes
-
#5637
0c7261a6dThanks @moklick! - AddzIndexModeto control how z-index is calculated for nodes and edges -
#5484
a523919d6Thanks @peterkogo! - Addexperimental_useOnNodesChangeMiddlewarehook
Patch Changes
-
#5629
9030fab2dThanks @AlaricBaraou! - Prevent unnecessary re-render inFlowRenderer -
#5592
38dbf41c4Thanks @svilen-ivanov-kubit! - Always create a new measured object in apply changes. -
#5635
2d7fa40e2Thanks @tornado-softwares! - Update an ongoing connection when user moves node with keyboard. -
Updated dependencies [
0c7261a6d,8598b6bc2,2d7fa40e2]:- @xyflow/system@0.0.74
12.9.3
Patch Changes
-
#5621
c1304dba7Thanks @moklick! - SetpaneClickDistancedefault value to1. -
#5578
00bcb9f5fThanks @peterkogo! - Pass current pointer position to connection -
Updated dependencies [
00bcb9f5f]:- @xyflow/system@0.0.73
12.9.2
Patch Changes
12.9.1
Patch Changes
-
#5572
5ec0cac7fThanks @peterkogo! - Fix onPaneClick events being suppressed when selectionOnDrag=true -
Updated dependencies [
5ec0cac7f]:- @xyflow/system@0.0.72
12.9.0
Minor Changes
-
#5544
c17b49f4cThanks @0x0f0f0f! - AddEdgeToolbarcomponent -
#5550
6ffb9f790Thanks @peterkogo! - Prevent child nodes of different parents from overlapping -
#5551
6bb64b3edThanks @moklick! - Allow to start a selection above a node
Patch Changes
-
#5531
fe2a45ed2Thanks @Sec-ant! - Addtypeproperty toEdgePropsto matchNodePropsbehavior -
#5528
d50a963cdThanks @peterkogo! - LetNodeResizerprops change during ongoing resize -
#5530
3b9951e42Thanks @peterkogo! - Improve performance of adding nodes & edges -
#5547
1c8961207Thanks @moklick! - Always callonMoveEndwhenonMoveStartwas called -
Updated dependencies [
c17b49f4c,6ffb9f790,d50a963cd,6bb64b3ed,8a9ee2d83,1c8961207]:- @xyflow/system@0.0.71
12.8.6
Patch Changes
-
#5515
9b4e99029Thanks @peterkogo! - Fix id of static handles not being parsed -
#5512
70b672604Thanks @peterkogo! - Prevent native page zoom when pinch zooming on node with nowheel class -
Updated dependencies [
9b4e99029,70b672604]:- @xyflow/system@0.0.70
12.8.5
Patch Changes
-
#5480
f869808e3Thanks @peterkogo! - Prevent multi-touch events while making a new connection -
#5482
56381ae54Thanks @peterkogo! - Make isNodeIntersecting behave the same as getIntersectingNodes -
#5509
b6ae4cc11Thanks @moklick! - Prevent calling onResizeEnd if node was not resized -
#5511
d891e5ff1Thanks @peterkogo! - Fix regression: elevate edges if connected nodes are selected -
#5497
eba087e8bThanks @peterkogo! - Skip eagerly rendering nodes when node dimensions and handles are predefined -
#5455
d2df1dcedThanks @Sec-ant! - Fix warning when display is set to none on the wrapper div -
Updated dependencies [
f869808e3,2a35c65a0,b6ae4cc11,d891e5ff1,eba087e8b]:- @xyflow/system@0.0.69
12.8.4
Patch Changes
-
#5472
372c493aThanks @moklick! - Remove dangerouslySetInnerHTML from domAttributes -
#5459
2e7c89c6Thanks @0x0f0f0f! - Fix open arrow marker using fill color from edge instead of none -
Updated dependencies [
5ece6b36,53da1193]:- @xyflow/system@0.0.68
12.8.3
Patch Changes
-
#5420
c453ee3fThanks @ShlomoGalle! - OmitdefaultValuefromNode'sdomAttributesto fix type incompatibility when usingWritableDraft -
#5436
def02b96Thanks @moklick! - Prevent a 0 added to the markup for edges when interactionWidth is 0 -
#5444
9aca4839Thanks @paula-stacho! - Export MiniMapNode -
#5443
144f8febThanks @moklick! - Use 1 as the default for interactive Minimap zoom step -
#5428
f18e9856Thanks @Karl255! - Fix clicking on detached handle elements not initiating drawing of connections -
#5453
7a088817Thanks @moklick! - Snap selection instead of separate nodes when snap grid is enabled -
#5415
6838df9dThanks @moklick! - Allow strings and enums for existing marker types -
#5444
9192fd7dThanks @paula-stacho! - Export MiniMapNode -
#5448
f5fe1d71Thanks @moklick! - Use correct HandleConnection type for Handle onConnect -
#5419
daa33fb3Thanks @0x0f0f0f! - Make arrow heads markers fallback to --xy-edge-stroke CSS variable when passing null as marker color -
Updated dependencies [
144f8feb,f18e9856,7a088817,6838df9d,fddbb7de,f5fe1d71,daa33fb3]:- @xyflow/system@0.0.67
12.8.2
Patch Changes
-
#5384
18514e11Thanks @Sec-ant! - Fix node fallback to respect custom default node type when unknown node type is encountered -
#5394
21db22d4Thanks @moklick! - Return intersections correctly of passed node is bigger than intersecting nodes -
#5384
ab05d008Thanks @Sec-ant! - Fix edge fallback to respect custom default edge type when unknown edge type is encountered. -
#5376
f0ce2c87Thanks @kennyjwilli! - Add stepPosition param to step edge -
Updated dependencies [
864d4188,f0ce2c87]:- @xyflow/system@0.0.66
12.8.1
Patch Changes
- Updated dependencies [
26f2cdd7]:- @xyflow/system@0.0.65
12.8.0
Minor Changes
-
#5361
90e9247aThanks @peterkogo! - Render edges above nodes when they are within a subflow -
#5344
2441bf8dThanks @moklick! - Add connectionDragThreshold prop
Patch Changes
-
#5362
72dc1d60Thanks @moklick! - Remove pointer events from Panel via CSS while a selection gets dragged -
Updated dependencies [
72dc1d60,90e9247a,2441bf8d]:- @xyflow/system@0.0.64
12.7.1
Patch Changes
-
#5333
3d7e8b6bThanks @peterkogo! - Add missing type exports -
#5353
4dd3ae66Thanks @aidanbarrett! - Add missingFinalConnectionStateparameter toonReconnectEndprop types -
Updated dependencies [
c4312d89,3d7e8b6b,9c61000c]:- @xyflow/system@0.0.63
12.7.0
Minor Changes
-
#5299
848b486bThanks @printerscanner! - AddariaRoleprop to nodes and edges -
#5276
6ce44a05Thanks @moklick! - Add aneaseandinterpolateoption to all function that alter the viewport -
#5277
f59730ceThanks @printerscanner! - AddariaLabelConfigprop for customizing UI text like aria labels and descriptions. -
#5317
09458f52Thanks @moklick! - AdddomAttributesoption for nodes and edges -
#5326
050b511cThanks @peterkogo! - Prevent NodeResizer controls to become too small when zooming out -
#5308
09fab679Thanks @printerscanner! - Focus nodes on tab if not within the viewport and add a new propautoPanOnNodeFocus
Patch Changes
- Updated dependencies [
848b486b,dba6faf2,6ce44a05,f59730ce,09458f52,050b511c]:- @xyflow/system@0.0.62
12.6.4
Patch Changes
-
#5263
e4a8d4b4Thanks @moklick! - Multi select key works when input is focused -
#5266
77107453Thanks @peterkogo! - Fix connection snapping for handles larger than connectionRadius -
Updated dependencies [
77107453]:- @xyflow/system@0.0.61
12.6.3
Patch Changes
-
#5259
77bf79c4Thanks @peterkogo! - Fix background-color css variable fallback. -
Updated dependencies [
77bf79c4]:- @xyflow/system@0.0.60
12.6.2
Patch Changes
-
#5257
b1314be0Thanks @moklick! - Use OnReconnect from system -
Updated dependencies [
a95f0e2f]:- @xyflow/system@0.0.59
12.6.1
Patch Changes
-
#5249
895b5d81Thanks @moklick! - CallonNodesChangefor uncontrolled flows that useupdateNode -
#5247
67e1cb68Thanks @moklick! - Cleanup TSDoc annotations for ReactFlow -
Updated dependencies [
2a03213b]:- @xyflow/system@0.0.58
12.6.0
Minor Changes
-
#5219
4236adbcThanks @moklick! - Add initialMinZoom, initialMaxZoom and initialFitViewOptions to ReactFlowProvider -
#5227
a7d10ffcThanks @moklick! - AddresizeDirectionprop for theNodeResizeControlcomponent
Patch Changes
-
#5217
bce74e88Thanks @moklick! - Keep node seleciton on pane click if elementsSelectable=false -
Updated dependencies [
a7d10ffc,4e681f9c]:- @xyflow/system@0.0.57
12.5.6
Patch Changes
-
#5212
0f43b8eaThanks @moklick! - Add polyfill forPromise.withResolvers -
#5192
fc241253Thanks @peterkogo! - Optimize performance of nodesInitialized -
#5196
7f902db4Thanks @moklick! - Hide edge marker and attribution for screenreaders -
#5213
78782c16Thanks @moklick! - Do not trigger selection events if elementsSelectable=false -
#5191
e5735b51Thanks @peterkogo! - Fix legacy padding being slightly larger than before -
Updated dependencies [
0f43b8ea,fc241253,98fe23c7,e5735b51]:- @xyflow/system@0.0.56
12.5.5
Patch Changes
-
#5172
e6139a00Thanks @dimaMachina! - Improve TSDoc comments foruseNodesData,useReactFlow,isNodeandisEdge -
#5165
d536abeaThanks @dimaMachina! - Improve TSDoc comments foruseViewport,useUpdateNodeInternals,useOnSelectionChange,useNodesInitializedhooks andUseOnSelectionChangeOptions,UseNodesInitializedOptionstypes -
#5171
62d87409Thanks @dimaMachina! - Improve TSDoc comments forReactFlowProps -
#5154
d0237166Thanks @ibagov! - Improve TSDoc comments foronNodesChange -
#5174
ae585d13Thanks @dimaMachina! - Improve TSDoc comments forBaseEdgeProps -
#5159
0c1436d6Thanks @dimaMachina! - Improve TSDoc comments foruseConnectionhook -
#5167
934ea42dThanks @dimaMachina! - Improve TSDoc comments foruseEdges,useInternalNode,useNodesanduseNodeIdhooks -
#5163
ab800054Thanks @dimaMachina! - Improve TSDoc comments foruseNodesStateanduseEdgesStatehook -
#5160
b357f43dThanks @dimaMachina! - Improve TSDoc comments fortype UseHandleConnectionsParamsanduseHandleConnectionshook -
#5162
29f4aeb2Thanks @dimaMachina! - Improve TSDoc comments fortype UseNodeConnectionsParamsanduseNodeConnectionshook -
#5164
09021550Thanks @dimaMachina! - Improve TSDoc comments fortype UseOnViewportChangeOptionsanduseOnViewportChangehook -
#5166
701ad17eThanks @dimaMachina! - Improve TSDoc comments foruseStorehook -
#5170
eb2a33c6Thanks @dimaMachina! - Improve TSDoc comments forinterface GetSimpleBezierPathParamsandgetSimpleBezierPath -
#5161
c4efe749Thanks @dimaMachina! - Improve TSDoc comments fortype UseKeyPressOptionsanduseKeyPresshook -
Updated dependencies [
02a3b746,cbe305e1,1f671bd4,aaebc462,6ec942fc]:- @xyflow/system@0.0.55
12.5.4
Patch Changes
-
#5134
7acab1e1Thanks @dimaMachina! - Adjust@defaultTSDoc tags forBackgroundProps -
#5135
754a1671Thanks @dimaMachina! - Improve TSDoc comments forNodeResizerPropsandResizeControlProps -
#5140
82e6860eThanks @dimaMachina! - Improve TSDoc comments forMiniMapPropsandPanelProps -
#5147
f819005bThanks @moklick! - Pass dimensions to final resize change event -
#5143
b1e1cc11Thanks @dimaMachina! - Improve TSDoc comments forReactFlowInstanceandGeneralHelpers -
#5138
d4eb8d52Thanks @dimaMachina! - Improve TSDoc comments forViewportHelperFunctionsandNodeToolbarProps -
#5144
5a1ce56eThanks @dimaMachina! - ComparenodeStrokeWidthwithnumber, not withstringwithinMiniMap -
#5141
06cf4c10Thanks @dimaMachina! - Improve TSDoc comments forEdge,BaseEdgePropsandConnectionLineComponentProps -
Updated dependencies [
f819005b,24a1bc89,36657cd6,89de9ca8,2ac6e155,f0f378e5]:- @xyflow/system@0.0.54
12.5.3
Patch Changes
- #5132
75ab8942Thanks @peterkogo! - Fix fitView not working when onNodesChange is not defined.
12.5.2
Patch Changes
-
#5124
b76f7f9eThanks @bjornosal! - Export NodeConnection type -
#5127
3079c2c9Thanks @peterkogo! - FixfitViewnot working when returning early inonNodesChange.
12.5.1
Patch Changes
12.5.0
Minor Changes
- #5067
acba901dThanks @peterkogo! - You can now express paddings in fitViewOptions as pixels ('30px'), as viewport percentages ('20%') and define different paddings for each side.
Patch Changes
-
#5109
0cdda42cThanks @dimaMachina! - fix: improve TSDoc comments forBackgroundProps -
#5059
065ff89dThanks @bcakmakoglu! - Prevent onPaneClick when connection is in progress. Closes #5057 -
#5110
7eb6eb07Thanks @dimaMachina! - fix: improve TSDoc comments forEdgeLabelOptionsandBaseEdgeProps -
#5113
bce8542dThanks @dimaMachina! - fix: improve TSDoc comments forControlProps -
#5116
58942154Thanks @dimaMachina! - fix: improve TSDoc comments forNodeToolbarProps -
#5114
ba2bfbb4Thanks @dimaMachina! - feat: exportEdgeLabelRendererProps -
#5107
c5a8c237Thanks @moklick! - Add TSDoc annotations for exported edges -
#5067
cb685281Thanks @peterkogo! - Fix fitView not working immediately after adding new nodes -
#5115
c2154557Thanks @dimaMachina! - fix: improve TSDoc comments forEdgeLabelOptionsandEdgeTextProps -
#5093
65825e89Thanks @moklick! - Hidden nodes are not displayed in the mini map anymore -
#5090
8da1748aThanks @moklick! - Release key even when an inout field is focused -
Updated dependencies [
5d15b01b,cb685281,a79f30b3]:- @xyflow/system@0.0.53
12.4.4
Patch Changes
-
#5052
99dd7d35Thanks @moklick! - Show an error if user drags uninitialized node -
#5042
2fe0e850Thanks @moklick! - Allow click connections when target setsisConnectableStart -
#5047
b3bf5693Thanks @moklick! - Pass generics to OnSelectionChangeFunc so that users can type it correctly -
#5053
25fb45b5Thanks @moklick! - Remove incorrect deprecation warning -
#5033
7b4a81fbThanks @dimaMachina! - lint: useReact.JSXtype instead of the deprecated globalJSXnamespace -
#5043
0292ad20Thanks @moklick! - Use current expandParent value on drag to be able to update it while dragging -
#5032
5867bba8Thanks @dimaMachina! - lint: remove unnecessary type assertions -
Updated dependencies [
99dd7d35]:- @xyflow/system@0.0.52
12.4.3
Patch Changes
-
#5010
6c121d42Thanks @moklick! - Add more TSDocs to components, hooks, utils funcs and types -
#4991
ea54d9bcThanks @waynetee! - Fix viewport shifting on node focus -
#5013
cde899c5Thanks @moklick! - PassNodeTypetype argument fromReactFlowPropstoconnectionLineComponentproperty. -
#5008
12d859feThanks @moklick! - Add package.json to exports -
#5012
4d3f19e8Thanks @moklick! - Add snapGrid option to screenToFlowPosition and set snapToGrid to false -
#5003
e8e0d684Thanks @dimaMachina! - repair lint command -
#4991
4c62f19bThanks @waynetee! - Prevent viewport shift after using Tab -
Updated dependencies [
6c121d42,4947029c,e8e0d684]:- @xyflow/system@0.0.51
12.4.2
Patch Changes
-
#4957
fe843982Thanks @peterkogo! - Narrow properties selected, selectable, deletable, draggable of NodeProps type to be required. -
Updated dependencies [
fe843982,e73ef09f]:- @xyflow/system@0.0.50
12.4.1
Patch Changes
-
#4949
592c7eafThanks @peterkogo! - Fix useNodeConnection hook not returning all connected edges. -
Updated dependencies [
592c7eaf]:- @xyflow/system@0.0.49
12.4.0
Minor Changes
- #4725
e10f53cfThanks @peterkogo! - Add useNodeConnections hook to track all connections to a node. Can be filtered by handleType and handleId.
Patch Changes
-
#4947
868aa3f3Thanks @moklick! - Export ResizeControlVariant correctly as a value. -
#4880
e2d849dcThanks @crimx! - Add type check for all event targets -
#4929
4947f683Thanks @peterkogo! - Optimize selections and take into account if edges connected to selected nodes are actually selectable. -
Updated dependencies [
e2d849dc,e10f53cf,4947f683]:- @xyflow/system@0.0.48
12.3.6
Patch Changes
-
#4846
75017939Thanks @moklick! - Make it possible to use expandParent with immer and other immutable helpers -
#4865
2c4acc2bThanks @moklick! - Add group node to BuiltInNode type. Thanks @sjdemartini! -
#4877
9a8309daThanks @peterkogo! - Fix intersections for nodes with origins other than [0,0]. Thanks @gmvrpw! -
#4844
6f11e552Thanks @moklick! - Allow custom data-testid for ReactFlow component -
#4816
43aa52a8Thanks @moklick! - Type isValidConnection prop correctly by passing EdgeType -
#4855
106c2cf8Thanks @mhuggins! - Support passingpathelement attributes toBaseEdgecomponent. -
#4862
adf4fb4eThanks @bcakmakoglu! - Prevent default scrolling behavior when nodes or a selection is moved with an arrow key press. -
#4875
41d4743aThanks @peterkogo! - Prevent unnecessary rerenders of edges when resizing the flow. -
#4826
5f90acdaThanks @chrtze! - Forward ref of the div inside Panel components. -
Updated dependencies [
d60331e6]:- @xyflow/system@0.0.47
12.3.5
Patch Changes
-
#4789
358eb355Thanks @peterkogo! - Support key combinations which include '+' (e.g., 'Control++' resolves to the combination 'Control' and '+'). -
#4796
73402779Thanks @Aki-7! - Fix number of issues connected to batching node & edge updates. -
#4790
2fa9a920Thanks @peterkogo! - Fix node dragging & resizing while zooming on flow that does not cover whole browser window. -
#4782
323e1b35Thanks @peterkogo! - Fix node intersections in nested flow. -
Updated dependencies [
2fa9a920,323e1b35]:- @xyflow/system@0.0.46
12.3.4
Patch Changes
-
#4772
7f670ab0Thanks @mistic! - Splits exports field in package.json to support an explicit resolution for browser, node and default to resolve issues with webpack esm module resolution. -
Updated dependencies [
7f670ab0]:- @xyflow/system@0.0.45
12.3.3
Patch Changes
-
#4755
005ae1c0Thanks @peterkogo! - Add module to exports in package.json. This should resolve possible issues with Webpack ESM Module Resolution. -
#4730
2c590b90Thanks @peterkogo! - Fixed rare crash while dragging -
Updated dependencies [
005ae1c0,2c590b90]:- @xyflow/system@0.0.44
12.3.2
Patch Changes
- #4722
e816bb69Thanks @moklick! - Fix internal behaviour that mutated user nodes which led to an issue with Redux and immer
12.3.1
Patch Changes
-
#4670
b056564cThanks @peterkogo! - Fix initialfitViewnot working correctly fornodeOriginother than [0,0] -
#4670
b056564cThanks @peterkogo! - ImprovefitViewto respect clamped node positions based onnodeExtent -
#4653
02390f99Thanks @bcakmakoglu! - Calculate viewport dimensions infitViewinstead of using stored dimensions. Fixes #4652 -
Updated dependencies [
99ba64ac,b056564c]:- @xyflow/system@0.0.43
12.3.0
Minor Changes
- #4477
d5592e75Thanks @peterkogo! - AddgetNodesBoundstouseReactFlow/useSvelteFlowhook as the new recommended way of determining node bounds.
Patch Changes
-
#4630
4347269fThanks @moklick! - Fix<Minimap />only displaying nodes when providingonNodesChange. -
#4572
d9563505Thanks @peterkogo! - Improve handling of global and individualnodeExtents. Nodes will never render outside of specified extents. -
Updated dependencies [
d5592e75,d9563505]:- @xyflow/system@0.0.42
12.2.1
Patch Changes
-
#4619
a7eb7c2dThanks @moklick! - align background pattern with snap grid -
#4611
2aaa709cThanks @moklick! - make onViewportChange a dynamic prop -
Updated dependencies [
2aaa709c]:- @xyflow/system@0.0.41
12.2.0
Minor Changes
- #4574
b65aed19Thanks @bcakmakoglu! - AddgetHandleConnectionshelper touseReactFlow&useSvelteFlow
Patch Changes
-
#4594
5138d90bThanks @peterkogo! - Fixed reconnecting edges with loose connectionMode -
#4603
12dbe125Thanks @moklick! - use correct index when using setNodes for inserting -
Updated dependencies [
5138d90b,12dbe125]:- @xyflow/system@0.0.40
12.1.1
Patch Changes
-
#4568
c3e62782Thanks @peterkogo! - Only display grab cursor when panOnDrag is on left mouse button -
#4567
cc75c29fThanks @peterkogo! - Fix internal type of edges in store -
Updated dependencies [
c3e62782]:- @xyflow/system@0.0.39
12.1.0
Minor Changes
-
#4555
24e87e39Thanks @peterkogo! - Added final connection state as a function parameter to onReconnectEnd -
#4554
cca11ea1Thanks @peterkogo! - Added optional selector for useConnection hook -
#4549
99733c01Thanks @moklick! - feat(onConnectEnd): pass connectionState param
Patch Changes
-
#4550
41981970Thanks @moklick! - fix(fitView): only trigger for resize observer -
#4501
ec64b572Thanks @jeffgord! - fix(background): use offset prop correctly for dots variant -
#4548
692e6440Thanks @peterkogo! - Replaced algorithm used for searching close handles while connecting -
#4547
fdff601dThanks @moklick! - chore(react): re-export Handle type -
Updated dependencies [
b63a3734,24e87e39,692e6440,559d4926,4ecfd7e1,e7ef328f,99733c01]:- @xyflow/system@0.0.38
12.0.4
Patch Changes
-
#4480
aae526f4Thanks @peterkogo! - fix(dragging) nodeExtent breaks dragging nodes in subflows -
#4498
7a6e9e30Thanks @peterkogo! - fix(pane) only capture pointer after a valid selection has started, fixes #4492
12.0.3
Patch Changes
12.0.2
Patch Changes
-
#4446
80baf53bThanks @moklick! - fix(resizer): export types -
#4450
18a12661Thanks @moklick! - fix(selection): dont trigger onSelectionEnd on click -
Updated dependencies [
80baf53b,4cccd06a]:- @xyflow/system@0.0.36
12.0.1
Patch Changes
-
#4434
1bda2451Thanks @moklick! - fix(selection): handle pointer capture for selectionOnDrag -
#4432
d2da5765Thanks @moklick! - refactor(useConnection): return internal node, add node generic -
Updated dependencies [
d2da5765]:- @xyflow/system@0.0.35
12.0.0
React Flow 12 is finally out! With a new package name @xyflow/react!
Main features
- SSR / SSG: you can define
width,heightandhandlesfor the nodes. This makes it possible to render a flow on the server and hydrate on the client: SSR guide- Details: In v11,
widthandheightwere set by the library as soon as the nodes got measured. This still happens, but we are now usingmeasured.widthandmeasured.heightto store this information. In the previous versions there was always a lot of confusion aboutwidthandheight. It’s hard to understand, that you can’t use it for passing an actual width or height. It’s also not obvious that those attributes get added by the library. We think that the new implementation solves both of the problems:widthandheightare optional attributes that can be used to define dimensions and the measured dimensions are stored inmeasured.
- Details: In v11,
- Reactive Flows: The new hooks
useHandleConnectionsanduseNodesDataand the newupdateNodeandupdateNodeDatafunctions can be used for managing the data flow between your nodes: computing flows guide- Details: Working with reactive flows is super common. You update node A and want to react on those changes in the connected node B. Until now everyone had to come up with a custom solution. With this version we want to change this and give you performant helpers to handle this. If you are excited about this, you can check out this example:
- Dark mode and css variables: React Flow now comes with a built-in dark mode, that can be toggled by using the new
colorModeprop (”light”, “dark” or “system”): dark mode example- Details: With this version we want to make it easier to switch between dark and light modes and give you a better starting point for dark flows. If you pass colorMode=”dark”, we add the class name “dark” to the wrapper and use it to adjust the styling. To make the implementation for this new feature easier on our ends, we switched to CSS variables for most of the styles. These variables can also be used in user land to customize a flow.
More features and updates
There is more! Besides the new main features, we added some minor things that were on our list for a long time. We also started to use TS docs for better docs. We already started to add some docs for some types and hooks which should improve the developer experience.
useConnectionhook: With this hook you can access the ongoing connection. For example, you can use it for colorizing handles styling a custom connection line based on the current start / end handles.- Controlled
viewport: This is an advanced feature. Possible use cases are to animate the viewport or round the transform for lower res screens for example. This features brings two new props:viewportandonViewportChange. ViewportPortalcomponent: This makes it possible to render elements in the viewport without the need to implement a custom node.onDeletehandler: We added a combined handler foronDeleteNodesandonDeleteEdgesto make it easier to react to deletions.onBeforeDeletehandler: With this handler you can prevent/ manage deletions.isValidConnectionprop: This makes it possible to implement one validation function for all connections. It also gets called for programmatically added edges.autoPanSpeedprop: For controlling the speed while auto panning.- Background component: add
patternClassNameprop to be able to style the background pattern by using a class name. This is useful if you want to style the background pattern with Tailwind for example. onMovecallback gets triggered for library-invoked viewport updates (like fitView or zoom-in)deleteElementsnow returns deleted nodes and deleted edges- add
originattribute for nodes - add
selectableattribute for edges - Node Resizer: child nodes don't move when the group is resized, extent and expand is recognized correctly
- Correct types for
BezierEdge,StepEdge,SmoothStepEdgeandStraightEdgecomponents - New edges created by the library only have
sourceHandleandtargetHandleattributes when those attributes are set. (We used to passsourceHandle: nullandtargetHandle: null) - Edges do not mount/unmount when their z-index change
- connection line knows about the target handle position so that the path is drawn correctly
nodeDragThresholdis 1 by default instead of 0- a better selection box usability (capture while dragging out of the flow)
- add
selectable,deletable,draggableandparentIdtoNodeProps - add a warning when styles not loaded
12.0.0-next.28
- add
paneDistanceClickprop (max distance between mousedown/up that will trigger a click) - returned nodes in
onNodeDragStopare set todragging=false
12.0.0-next.27
- return Promises for
setViewport,fitView,fitBoundsandzoomToto be able to await viewport update
12.0.0-next.26
- add
autoPanSpeedprop
12.0.0-next.25
useConnectionreturnsConnectionStatewithtoNodeandtoHandle- add
toNodeandtoHandleto custom connection line props - node origin is part of position absolute
- refactor connection handling
12.0.0-next.24
- fix
windowbug for SSR for real
12.0.0-next.23
- fix
windowbug for SSR
12.0.0-next.22
- ⚠️ rename
updateEdgetoreconnectEdgeand realted APIs #4373 - revise selection usability (capture while dragging out of the flow)
- use correct end handle position when drawing a connection lines
- determine correct end positions for connection lines
12.0.0-next.21
- fix node origin bug
12.0.0-next.20
- add
updateEdgeandupdateEdgeDatahelpers touseReactFlow - enable dynamic edge label updates
- prevent zooming on mobile if zoomOnPinch is false
- add straight edge to path built-in-types
- abort drag when multiple touches are detected
12.0.0-next.19
- update internals on node resizer updates
- re-observe node when
node.hiddenis toggled - update
updateNodeDataargument type - thanks @ogroppo - add
selectable,deletableanddraggableto node and edge props - add
parentIdto node props - fix parent node lookup in
evaluateAbsolutePosition- thanks @lcsfort
12.0.0-next.18
- don't show nodeTypes warning if not necessary you've created a new nodeTypes or edgeTypes
- add node resizer styles to base.css
- remove
HandleComponentPropstype, only exportHandlePropstype - add warning when styles not loaded
12.0.0-next.17
- fix broken
defaultNodes - add string array to
UpdateNodeInternalsthanks @DenizUgur - pinch zoom on windows
- drag for touch devices
- return user node in node event handlers
- cleanup
useReactFlow - export
KeyCodeandAligntype - remove
Instancein favour ofReactFlowInstancetype
12.0.0-next.16
Patch changes
- fix batching for
setNodes,updateNode,updateNodeDataetc. - fix
useNodesInitialized
12.0.0-next.15
Patch changes
- re-observe nodes when using
onlyRenderVisibleElements={true} - use correct positions for intersection helpers
- fix minimap interaction for touch devices
- pass user nodes to
onSelectionChangeinstead of internal ones to work with Redux - call
onEndin XYResizer thanks @tonyf - cleanup
getPositionWithOriginusage - use
setAttributesflag for dimension change whenwidth/heightshould be set - use
replace: falseas the default forupdateNodefunction
12.0.0-next.14
Patch changes
- fix hidden nodes
- use
direction=ltrfor outer wrapper to support rtl sites - allow pinch zoom even if
preventScrolling=false - export node and edge change related types
- only trigger dimensions updates when changes detected
12.0.0-next.13
⚠️ Breaking changes
- rename
node.parentNodetonode.parentId - rename node.computed to node.measured
- remove positionAbsolute from
node.computed
Minor Changes
- new helpers:
useInternalNodehook,getInternalNodefunction
Patch changes
- remove
internalsSymbol(now called internals and only available for internal nodes) - handle parentExpand on library side instead of applyChanges
- new type
InternalNode
12.0.0-next.12
Patch changes
- fix useNodesData: handle invalid node id thanks @saswatax
- fix forwardRef: use custom fixForwardRef function
- refactor intersection helpers to use passed node value
12.0.0-next.11
Patch changes
- fix
refprop forReactFlowandHandlecomponent - unify
EdgeandNodetype handling - fix safari: prevent selection of viewport
- fix
useNodesDatahook to prevent re-renderings - fix edges: allow start at 0,0
12.0.0-next.10
⚠️ Breaking changes
useNodesDatanot only returns data objects but also the type and the id of the node- status class names for Handle components are slightly different. It's now "connectingfrom" and "connectingto" instead of "connecting"
Patch changes
- better cursor defaults for the pane, nodes and edges
disableKeyboardA11ynow also disables Enter and Escape for selecting/deselecting nodes and edges- fix bug where users couldn't drag a node after toggle nodes
hiddenattribute - add
initialWidthandinitialHeightnode attributes for specifying initial dimensions for ssr - fix
NodeResizerwhen used in combination withnodeOrigin
12.0.0-next.9
Patch changes
- a better
NodeResizerthat works with subflows. Child nodes do not move when parent node gets resized and parent extent is taken into account - refactor
setNodesbatching - re-measure nodes when necessary
- don't trigger drag start / end when node is not draggable
12.0.0-next.8
Patch changes
- selection box is not interrupted by selectionKey being let go
- fix
OnNodeDragtype - do not use fallback handle if a specific id is being used
- fix
defaultEdgeOptionsmarkers not being applied - fix
getNodesBoundsand add second param for passing options - fix
expandParentfor child nodes
12.0.0-next.7
Minor changes
- add second option param to
screenToFlowPositionfor configuring ifsnapToGridshould be used
Patch changes
- pass
Node/Edgetypes to changes thanks @FelipeEmos - use position instead of positionAbsolute for
getNodesBounds - infer types for
getIncomers,getOutgoers,updateEdge,addEdgeandgetConnectedEdgesthanks @joeyballentine - refactor handles: prefix with flow id for handling nested flows
- add comments for types like
ReactFlowPropsorNodefor a better developer experience
12.0.0-next.6
Patch changes
- fix
deleteElements - refactor internal
applyChanges - batch
setNodesandsetEdgesfromuseReactFlow - add
aria-labelprop for<Controls />
12.0.0-next.5
Minor changes
- fix applyChanges: handle multi changes for one node, deletions and expandParent
- use
XYResizerfrom @xyflow/system - add unit tests for
applyNodeChangesandapplyEdgeChanges
12.0.0-next.4
Minor changes
- fix applyChanges: handle empty flows + addNodes/addEdges closes
- cleanup exports
12.0.0-next.3
Minor changes
- fix edges styles when using base.css
12.0.0-next.2
Minor changes
- fix connection line rendering
- fix multi handle
12.0.0-next.1
Minor changes
- fix edge rendering
12.0.0-next.0
React Flow v12 is coming soon! We worked hard over the past months and tried to make as few breaking changes as possible (there are some). We are in no rush to release v12, so we’d be happy to hear any early feedback so we can adjust the API or redefine new features before launching stable v12. 🚀 The big topics for this version are:
- Support for SSG/ SSR: you can now render flows on the server
- Reactive flows: new hooks and helper functions to simplify data flows
- Dark mode: a new base style and easy way to switch between built in color modes
Svelte Flow had a big impact on this release as well. While combing through each line of React Flow, we created framework agnostic helpers, found bugs, and made some under the hood improvements. All of these changes are baked into the v12 release as a welcome side-effect of that launch. 🙌🏻 We also improved the performance for larger flows with the help of Ivan.
Migrate from 11 to 12
Before you can try out the new features, you need to do some minor updates:
- A new npm package name: Our name changed from
reactflowto@xyflow/reactand the main component is no longer a default, but a named import:- v11:
import ReactFlow from 'reactflow'; - v12:
import { ReactFlow } from '@xyflow/react';
- v11:
- Node attribute “computed”: All computed node values are now stored in
node.computed- v11:
node.width,node.height,node.positionAbsolute - v12:
node.computed.width,node.computed.heightandnode.computed.positionAbsolute. (node.width/node.heightcan now be used for SSG)
- v11:
- Updating nodes: We are not supporting node updates with object mutations anymore. If you want to update a certain attribute, you need to create a new node.
- v11:
setNodes((nds) => nds.map((node) => { node.hidden = true; return node; }) ); - v12:
setNodes((nds) => nds.map((node) => ({ ...node, hidden: true, })) );
- v11:
- NodeProps:
posX/posYis now calledpositionAbsoluteX/positionAbsoluteY - Typescript only: We simplified types and fixed issues about functions where users could pass a
NodeDatageneric. The new way is to define your own node type for the whole app and then only use that one. The big advantage of this is, that you can have multiple node types with different data structures and always be able to distinguish by checking thenode.typeattribute.- v11:
applyNodeChange<NodeData, NodeType> - v12:
type MyNodeType = Node<{ value: number }, ‘number’> | Node<{ value: string }, ‘text’>; applyNodeChange<MyNodeType> - affected functions:
useNodes,useNodesState,useEdgesState,applyNodeChange,onInit,applyEdgeChanges,MiniMapProps
- v11:
- Removal of deprecated functions:
getTransformForBounds(new name:getViewportForBounds),getRectOfNodes(new name:getNodesBounds)project(new name:screenToFlowPosition)getMarkerEndId
Main features
Now that you successfully migrated to v12, you can use all the fancy features. As mentioned above, the biggest updates for v12 are:
- SSR / SSG: you can define
width,heightandhandlesfor the nodes. This makes it possible to render a flow on the server and hydrate on the client: codesandbox- Details: In v11,
widthandheightwere set by the library as soon as the nodes got measured. This still happens, but we are now usingcomputed.widthandcomputed.heightto store this information. ThepositionAbsoluteattribute also gets stored incomputed. In the previous versions there was always a lot of confusion aboutwidthandheight. It’s hard to understand, that you can’t use it for passing an actual width or height. It’s also not obvious that those attributes get added by the library. We think that the new implementation solves both of the problems:widthandheightare optional attributes that can be used to define dimensions and everything that is set by the library, is stored incomputed.
- Details: In v11,
- Reactive Flows: The new hooks
useHandleConnectionsanduseNodesDataand the newupdateNodeandupdateNodeDatafunctions can be used for managing the data flow between your nodes: codesandbox- Details: Working with reactive flows is super common. You update node A and want to react on those changes in the connected node B. Until now everyone had to come up with a custom solution. With this version we want to change this and give you performant helpers to handle this. If you are excited about this, you can check out this example:
- Dark mode and css variables: React Flow now comes with a built-in dark mode, that can be toggled by using the new
colorModeprop (”light”, “dark” or “system”): codesandbox- Details: With this version we want to make it easier to switch between dark and light modes and give you a better starting point for dark flows. If you pass colorMode=”dark”, we add the class name “dark” to the wrapper and use it to adjust the styling. To make the implementation for this new feature easier on our ends, we switched to CSS variables for most of the styles. These variables can also be used in user land to customize a flow.
More features and updates
There is more! Besides the new main features, we added some minor things that were on our list for a long time. We also started to use TS docs for better docs. We already started to add some docs for some types and hooks which should improve the developer experience.
useConnectionhook: This hook makes it possible to handle an ongoing connection. For example, you can use it for colorizing handles.onDeletehandler: We added a combined handler foronDeleteNodesandonDeleteEdgesto make it easier to react to deletions.isValidConnectionprop: This makes it possible to implement one validation function for all connections. It also gets called for programatically added edges.- Controlled
viewport: This is definitely an advanced feature. Possible use cases are to animate the viewport or round the transform for lower res screens for example. This features brings two new props:viewportandonViewportChange. ViewportPortalcomponent: This makes it possible to render elements in the viewport without the need to implement a custom node.- Background component: add
patternClassNameto be able to style the background pattern by using a class name. This is useful if you want to style the background pattern with Tailwind for example. onMovecallback gets triggered for library-invoked viewport updates (like fitView or zoom-in)deleteElementsnow returns deleted nodes and deleted edges- add
originattribute for nodes - add
selectableattribute for edges - Correct types for
BezierEdge,StepEdge,SmoothStepEdgeandStraightEdgecomponents - New edges created by the library only have
sourceHandleandtargetHandleattributes when those attributes are set. (We used to passsourceHandle: nullandtargetHandle: null) - Edges do not mount/unmount when their z-index change
Internal changes
These changes are not really user-facing, but it could be important for folks who are working with the React Flow store:
- The biggest internal change is that we created a new package @xyflow/system with framework agnostic helpers that can be used be React Flow and Svelte Flow
- XYDrag for handling dragging node(s) and selection
- XYPanZoom for controlling the viewport panning and zooming
- XYHandle for managing new connections
- We replaced the
nodeInternalsmap with anodesarray. We added a newnodeLookupmap that serves as a lookup, but we are not creating a new map object on any change so it’s really only useful as a lookup. - We removed
connectionNodeId,connectionHandleId,connectionHandleTypefrom the store and addedconnectionStartHandle.nodeId,connectionStartHandle.handleId, … - add
data-idto edges
With v12 the reactflow package was renamed to @xyflow/react - you can find the v11 source and the reactflow changelog on the v11 branch.