Foblex Flow is the most widely adopted node editor library for Angular — Angular-native, for building interactive node-based editors and diagram UIs with custom nodes, smooth connections, and production-grade interaction helpers.
It’s designed for real products where users edit graphs manually: dragging nodes, connecting ports, selecting multiple items, aligning layouts, and navigating large canvases.
The core path is intentionally small: f-flow, f-canvas, nodes, connectors, and connections. Advanced helpers such as selection area, minimap, alignment guides, caching, and virtualization are optional add-ons you introduce later if the editor grows.
What you get
f-flow, f-canvas, nodes, connectors, and connections.Most diagram editors fail not on rendering, but on interaction details: hit-testing, pointer edge cases, snapping, selection UX, and consistent connection behavior.
Foblex Flow exists for teams that want these building blocks in Angular without implementing low-level drag logic, hit-testing, and SVG path rendering from scratch.
Typical use cases:
Explore live demos built with Foblex Flow:
You can also browse the source code for all demos in libs/f-examples/**.
You compose a flow from primitives: one f-flow root, one f-canvas, nodes with connectors, and connection components.
In the default classic mode, Foblex Flow focuses on rendering and interaction while your application owns the graph model (nodes, connections, metadata) and decides how to update it. The library emits interaction events (drag, selection changes, connection create/reassign) so you can:
That is the default classic integration. If you want the library to keep typed graph records and apply supported gestures automatically, install the optional Managed Flow State plugin with provideFFlow(withFlowState()). It adds snapshots and undo/redo while the same public events remain available. In both modes your application defines domain fields and owns validation policy, permissions, persistence, and business meaning.
This page is an overview. Use these guides for exact contracts:
fNodeId, fConnectorId, fSourceId, fTargetId).[example.html] <<< https://raw.githubusercontent.com/Foblex/f-flow/main/libs/f-examples/nodes/custom-nodes/example.html [example.ts] <<< https://raw.githubusercontent.com/Foblex/f-flow/main/libs/f-examples/nodes/custom-nodes/example.ts [example.scss] <<< https://raw.githubusercontent.com/Foblex/f-flow/main/libs/f-examples/nodes/custom-nodes/example.scss
If this page helped you build something (or saved you from writing drag+drop and SVG connection logic from scratch), please ⭐ the repo on GitHub — it directly helps the project grow.