Technical Documentation

Connector/Anchor UX Benchmark — Miro, Visio, Lucidchart, draw.io, FigJam

Connector/Anchor UX Benchmark — Miro, Visio, Lucidchart, draw.io, FigJam

Scope: how each tool surfaces connection anchors, routes lines, and handles drag-to-empty-space and reroute-on-move, for grounding Falcon Flowmira's connector UX decisions.

1. Miro

DimensionBehavior
Anchor visibilityHover-triggered: blue dots appear around a shape only on hover/select; not always-on.
Anchors per shape4 side-midpoint anchors (N/E/S/W); no corner anchors; connector tool (hotkey L).
Drag-to-empty-spaceDraws a standalone dangling line — no shape auto-created.
RoutingStraight / orthogonal (elbow) / curved — user picks, no obstacle avoidance.
Reroute on moveLines stay glued and re-route automatically.
ShortcutsL line tool, Shift = 45° constrain, Cmd/Ctrl = disable snap.

Source: https://help.miro.com/hc/en-us/articles/360017730733-Connection-lines

2. Microsoft Visio

DimensionBehavior
Anchor visibilityBlue AutoConnect arrows on hover; green X points when connector tool active or shape selected.
Anchors per shape4 side points by default, extensible per stencil via ShapeSheet.
Drag-to-empty-spaceAuto-drops a shape (last-used / same stencil) and connects it.
RoutingOrthogonal dynamic + straight + curved; reflows around intervening shapes.
Reroute on moveDynamic connectors recompute route and endpoint side on move.
ShortcutsNo single-key hotkey; ribbon / Ctrl+3 (classic) for connector tool.

Sources: https://support.microsoft.com/en-us/office/add-connectors-between-visio-shapes-eaa045c8-5ce9-4d4b-bd30-bb87dc8ac65a · https://learn.microsoft.com/en-us/office/client-developer/visio/connection-points-row-connection-points-section

3. Lucidchart

DimensionBehavior
Anchor visibilityBlue anchors (plain connect) + red quick-add anchors, hover-triggered.
Anchors per shape4 side blue nodes + red side/corner quick-add nodes.
Drag-to-empty-spaceOpens auto-prompt shape picker; quick-add branches a same-type shape. Configurable.
RoutingStraight / angled / curved.
Reroute on moveGlued, auto re-route; togglable.
ShortcutsShift for 45° constrain; primary flow is hover+drag.

Source: https://help.lucid.co/hc/en-us/articles/16157138194836-Add-and-style-lines-in-Lucidchart

4. draw.io (diagrams.net)

DimensionBehavior
Anchor visibilityGreen directional arrows + X fixed connection points on hover; blue perimeter halo.
Anchors per shapeFixed X points AND floating anywhere-on-perimeter connect.
Drag-to-empty-spaceDirectional arrows drop a copy of source shape and auto-connect; free connectors leave dangling end.
RoutingStraight / orthogonal / curved / entity-relation with obstacle-aware line jumps.
Reroute on moveFloating recomputes attachment; fixed keeps point, segment reroutes.
ShortcutsNo dedicated hotkey; double-click edge for waypoints.

Sources: https://www.drawio.com/docs/manual/connectors/connector-fixed-vs-floating/ · https://www.drawio.com/docs/manual/styles/connector-styles/

5. FigJam

DimensionBehavior
Anchor visibilityImplicit — lines snap onto shapes; no persistent dots.
Anchors per shapeFloating/perimeter-snap.
Drag-to-empty-spaceLeaves unattached endpoint.
RoutingStraight / curved / bent (orthogonal).
Reroute on moveGlued, auto-updates on move.
ShortcutsShift+C connector tool, then click source → target.

Sources: https://help.figma.com/hc/en-us/articles/1500004414542-Create-diagrams-and-flows-with-connectors-in-FigJam · https://developers.figma.com/docs/plugins/api/properties/figma-createconnector/


Falcon Flowmira: Gap → Fix Table

#GapFix
1Always-on anchors add clutter✅ Already hover-gated in FlowNode (opacity 0 → 100 on hover; selected boosts corners).
2Only fixed side/corner anchors — no floating perimeter connectAdd floating-connect mode with nearest-point-on-perimeter hit-test. Ship as an "Any-point connect" toggle.
3Dragging to empty canvas silently succeeds with a plain nodeShippedonConnectEnd now creates a node + auto-connects at the drop point. Next: replace with a shape-picker mini toolbar (rect / diamond / circle / same-as-source) matching Lucid/Visio.
4Orthogonal edges don't avoid obstaclesAdd A*/manhattan router with node-bbox avoidance; fallback to smoothstep when routing fails. Store per-edge routing: 'auto' | 'manual'.
5Reroute-on-move verified via React Flow — endpoints already reference nodeId/handleId, so paths auto-recompute.No action; regression-test with Playwright.
6No keyboard connect flowAdd Shift+C to arm connector tool → click source → click target; Esc cancels.
7No "quick-add branch" affordanceAdd outer-ring + buttons on hover that spawn a duplicate shape offset in that direction with an auto-drawn edge.
8No user setting to disable auto-createAdd document-level toggle: "Auto-create shape on drag to empty canvas: On/Off".