| name | react-flow-node-ts |
| description | Create React Flow node components with TypeScript types, handles, and Zustand integration. Use when building custom nodes for React Flow canvas, creating visual workflow editors, or implementing node-based UI components. |
| license | MIT |
| metadata | {"author":"Microsoft","version":"1.0.0"} |
React Flow Node
Create React Flow node components following established patterns with proper TypeScript types and store integration.
Website: https://reactflow.dev/
References
This skill includes a local mirror of the React Flow official documentation under references/. Use it when you need detailed API signatures, guides, or UI component references without relying on network access:
Prefer the local references over the website when exact API behavior or TypeScript types matter, because the mirrored docs are pinned to the same version this skill targets.
Quick Start
Copy templates from assets/ and replace placeholders:
{{NodeName}} → PascalCase component name (e.g., VideoNode)
{{nodeType}} → kebab-case type identifier (e.g., video-node)
{{NodeData}} → Data interface name (e.g., VideoNodeData)
Templates
Node Component Pattern
export const MyNode = memo(function MyNode({
id,
data,
selected,
width,
height,
}: MyNodeProps) {
const updateNode = useAppStore((state) => state.updateNode);
const canvasMode = useAppStore((state) => state.canvasMode);
return (
<>
<NodeResizer isVisible={selected && canvasMode === "editing"} />
<div className="node-container">
<Handle type="target" position={Position.Top} />
{/* Node content */}
<Handle type="source" position={Position.Bottom} />
</div>
</>
);
});
Type Definition Pattern
export interface MyNodeData extends Record<string, unknown> {
title: string;
description?: string;
}
export type MyNode = Node<MyNodeData, "my-node">;
Integration Steps
- Add type to
src/frontend/src/types/index.ts
- Create component in
src/frontend/src/components/nodes/
- Export from
src/frontend/src/components/nodes/index.ts
- Add defaults in
src/frontend/src/store/app-store.ts
- Register in canvas
nodeTypes
- Add to AddBlockMenu and ConnectMenu