Install
$ agentstack add skill-framara-react-flow-skill-react-flow-skill ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
React Flow
Overview
Use this skill to build, customize, debug, and optimize interactive node-based UIs with React Flow (@xyflow/react v12+). Covers everything from basic setup to advanced patterns like computed flows, sub-flows, and external layout integration.
Agent behavior contract (follow these rules)
- Always import from
@xyflow/react— never from legacyreactfloworreact-flow-rendererpackages. - Always import the stylesheet:
import '@xyflow/react/dist/style.css'(orbase.cssfor custom styling frameworks). - The `` parent container must have explicit width and height — this is the #1 cause of blank canvases.
- Define
nodeTypesandedgeTypesobjects outside component bodies or wrap inuseMemoto prevent re-renders. - Prefer custom nodes over built-in nodes — the React Flow team explicitly recommends this.
- Use the
nodragclass on interactive elements inside custom nodes (inputs, buttons, selects). - Use
nowheelclass on scrollable elements inside custom nodes to prevent zoom interference. - When hiding handles, use
visibility: hiddenoropacity: 0— neverdisplay: none(breaks dimension calculation). - When using multiple handles of the same type on a node, always assign unique
idprops. - After programmatically adding/removing handles, call
useUpdateNodeInternalsto refresh the node. - Always create new objects when updating node/edge state — mutations are not detected by React Flow.
- Prefer controlled flows (with
onNodesChange/onEdgesChange/onConnect) for any non-trivial application.
First 60 seconds (triage template)
- Clarify the goal: new flow setup, custom nodes/edges, state management, layout, performance, styling, E2E testing, advanced patterns (undo/redo, copy/paste, computed flows, collaboration), or debugging.
- Collect minimal facts:
- React Flow version (v12+ uses
@xyflow/react) - TypeScript or JavaScript
- State management approach (local state, Zustand, Redux)
- Number of nodes expected (affects performance strategy)
- Styling approach (CSS, Tailwind, styled-components)
- Branch quickly:
- migrating from legacy
reactfloworreact-flow-renderer-> package rename, import changes, API differences - blank canvas or missing nodes -> container dimensions or missing CSS import
- edges not rendering -> missing handles, missing CSS, or
display: noneon handles - re-renders or sluggish performance -> nodeTypes defined inside component, missing memoization
- connecting nodes not working -> missing
onConnecthandler or handle configuration - layout/positioning -> external layout library integration (dagre, elkjs)
- type errors -> TypeScript generic patterns for Node/Edge types
Routing map (read the right reference fast)
- Migrating from
reactfloworreact-flow-rendererto@xyflow/reactv12 ->references/migration.md - Installation, setup, first flow, node/edge objects ->
references/fundamentals.md - Custom node components, Handle, multiple handles, drag handles ->
references/custom-nodes.md - Custom edge components, path utilities, edge labels, markers ->
references/custom-edges.md - Event handlers, callbacks, connection validation, selection, keyboard ->
references/interactivity.md - Controlled vs uncontrolled, Zustand integration, state update patterns ->
references/state-management.md - Node/Edge types, generics, union types, type guards ->
references/typescript.md - External layout libraries (dagre, elkjs, d3), sub-flows, parent-child ->
references/layouting.md - Background, Controls, MiniMap, Panel, NodeToolbar, NodeResizer, hooks ->
references/components-and-hooks.md - Memoization, render optimization, theming, CSS variables, Tailwind ->
references/performance-and-styling.md - Common errors, debugging, edge display issues, Zustand warnings ->
references/troubleshooting.md - Playwright E2E tests, flow selectors, drag/viewport/connection testing ->
references/e2e-testing.md - Undo/redo, copy/paste, computed flows, dynamic handles, save/restore, collaboration ->
references/advanced-patterns.md - Context menu add node, drag-and-drop sidebar, detail panel, export as image ->
references/recipes.md
Common pitfalls -> next best move
- Blank canvas with no errors -> parent container has no height; set explicit
height: 100vhor equivalent. nodeTypes/edgeTypeswarning -> move object definition outside component body or wrap inuseMemo.- Edges render but in wrong position -> handles use
display: none; switch toopacity: 0. - Cannot interact with inputs inside nodes -> add
className="nodrag"to interactive elements. - Nodes snap back after drag ->
onNodesChangenot wired up or not applying changes correctly. - Connection line appears but edge never creates ->
onConnecthandler missing or not callingaddEdge. - Multiple handles on same side overlap -> position them with CSS (
topoffset) and assign uniqueids. - State updates don't reflect in nodes -> creating mutations instead of new objects; spread operator required.
- Zustand context warning -> two versions of
@xyflow/reactinstalled or missing ``. - Sub-flow child nodes render behind parent -> ensure parent nodes appear before children in the
nodesarray.
Verification checklist
- Confirm
@xyflow/react/dist/style.cssis imported (orbase.css+ custom styles). - Confirm parent container has explicit width and height.
- Confirm
nodeTypes/edgeTypesare stable references (defined outside component or memoized). - Confirm custom nodes use `
components with propertypeandposition`. - Confirm interactive elements inside nodes have
nodragclass. - Confirm controlled flows wire up all three handlers:
onNodesChange,onEdgesChange,onConnect. - Confirm state updates create new node/edge objects (no mutations).
- Confirm TypeScript generics are applied to hooks and callbacks for type safety.
- Confirm performance-sensitive flows memoize custom node/edge components with
React.memo.
References
references/migration.mdreferences/fundamentals.mdreferences/custom-nodes.mdreferences/custom-edges.mdreferences/interactivity.mdreferences/state-management.mdreferences/typescript.mdreferences/layouting.mdreferences/components-and-hooks.mdreferences/performance-and-styling.mdreferences/troubleshooting.mdreferences/e2e-testing.mdreferences/advanced-patterns.mdreferences/recipes.md
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: framara
- Source: framara/react-flow-skill
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.