syncfusion-react-diagram — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited syncfusion-react-diagram (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
The Syncfusion React Diagram component enables building rich, interactive diagrams including flowcharts, organizational charts, BPMN process flows, UML diagrams, mind maps, and network diagrams. It renders using SVG and supports extensive customization through nodes, connectors, ports, annotations, layouts, and data binding.
Use this skill when users need to:
API Verification Required: Always verify API class names, properties, and signatures by reading reference files (references/*.md) BEFORE generating code examples. Do not assume or infer class names.
The Diagram component is built around:
Inject directive) to keep bundle size leanAll diagram elements are rendered using SVG for crisp, resolution-independent graphics.
📄 Read: references/getting-started.md
When to read:
DiagramComponentInject module systemCovers:
DiagramComponent with nodes and connectors<Inject services={[...]} />📄 Read: references/nodes.md
When to read:
getNodeDefaultsCovers:
nodes collectionoffsetX/offsetY, width/height positioningdiagram.add, diagram.remove)getNodeDefaults pattern for consistent stylingexpandIcon/collapseIcon📄 Read: references/connectors.md
When to read:
sourceID/targetID to link nodesgetConnectorDefaults for consistent stylingCovers:
Straight, Orthogonal, BeziersourcePoint/targetPoint for freestanding connectorssourceID/targetID for node-to-node connectionsgetConnectorDefaults pattern📄 Read: references/labels-and-annotations.md
When to read:
Covers:
annotations array on nodes and connectorscontent, style, offset, alignment📄 Read: references/ports.md
When to read:
Covers:
ports array on nodesoffset, alignment)sourcePortID/targetPortID📄 Read: references/shapes-and-styles.md
When to read:
Covers:
shape.type options: Flow, Basic, Path, Image, HTML, Nativefill, strokeColor, strokeWidth, strokeDashArray, opacity📄 Read: references/bpmn-diagrams.md
When to read:
Covers:
BpmnDiagrams module injectionshape.type = 'Bpmn'📄 Read: references/uml-diagrams.md
When to read:
Covers:
shape.type = 'UmlClassifier')shape.type = 'UmlActivity')📄 Read: references/layouts.md
When to read:
Covers:
HierarchicalTree — top-down/left-right tree layoutsOrganizationalChart — classic org chart with getNodeDefaults/getConnectorDefaultsMindMap — branching mind map layoutRadialTree — circular radial layoutFlowchart layout (automatic flow arrangement)ComplexHierarchicalTree for multi-parent hierarchieslayout property: type, orientation, margin, horizontalSpacing, verticalSpacingLayoutAnimation module📄 Read: references/swimlanes.md
When to read:
Covers:
shape.type = 'SwimLane'📄 Read: references/groups-and-containers.md
When to read:
Covers:
shape.type = 'Group' and children array📄 Read: references/symbol-palette.md
When to read:
symbolDragEnter/symbolDrop eventsCovers:
SymbolPaletteComponent setup alongside DiagramComponentpalettes with symbol arraysgetSymbolInfo for display customization📄 Read: references/data-binding.md
When to read:
id and parentId fields for hierarchyDataManager for remote or filtered datasetNodeTemplate)Covers:
dataSourceSettings propertyid, parentId field mappingDataManager with local arrays or remote URLsgetNodeDefaults and setNodeTemplate for data-driven styling📄 Read: references/interaction-and-tools.md
When to read:
Covers:
DiagramConstraints, NodeConstraints, ConnectorConstraintstool property: DiagramTools.Default, ZoomPan, DrawOncecommands for keyboard shortcutsUndoRedo module)DiagramContextMenu module)Snapping module and snap settings📄 Read: references/serialization-and-export.md
When to read:
Covers:
diagram.saveDiagram() and diagram.loadDiagram(json)PrintAndExport module injectionvisio.md)Ej1Serialization module)📄 Read: references/diagram-settings.md
When to read:
Covers:
Virtualization module for large diagramsscrollSettings: scrollLimit, minZoom, maxZoompageSettings: size, orientation, background, multiplePageOverviewComponent minimap setupimport { DiagramComponent, NodeModel, ConnectorModel, Inject, UndoRedo } from '@syncfusion/ej2-react-diagrams';
const nodes: NodeModel[] = [
{ id: 'start', offsetX: 300, offsetY: 80, width: 140, height: 50,
shape: { type: 'Flow', shape: 'Terminator' }, annotations: [{ content: 'Start' }] },
{ id: 'process', offsetX: 300, offsetY: 180, width: 140, height: 50,
shape: { type: 'Flow', shape: 'Process' }, annotations: [{ content: 'Process' }] },
{ id: 'end', offsetX: 300, offsetY: 290, width: 140, height: 50,
shape: { type: 'Flow', shape: 'Terminator' }, annotations: [{ content: 'End' }] },
];
const connectors: ConnectorModel[] = [
{ id: 'c1', sourceID: 'start', targetID: 'process' },
{ id: 'c2', sourceID: 'process', targetID: 'end' },
];
export default function App() {
return (
<DiagramComponent id="diagram" width={'100%'} height={'500px'}
nodes={nodes} connectors={connectors}
getConnectorDefaults={(obj) => { obj.type = 'Orthogonal'; return obj; }}>
<Inject services={[UndoRedo]} />
</DiagramComponent>
);
}CSS import: @import '@syncfusion/ej2-react-diagrams/styles/material.css'; and peer CSS for ej2-base, ej2-popups, ej2-splitbuttons, ej2-navigations.
import { DiagramComponent, HierarchicalTree, DataBinding, Inject } from '@syncfusion/ej2-react-diagrams';
import { DataManager } from '@syncfusion/ej2-data';
const data = [
{ Name: 'CEO' },
{ Name: 'CTO', ReportingPerson: 'CEO' },
{ Name: 'Dev Lead', ReportingPerson: 'CTO' },
];
export default function App() {
return (
<DiagramComponent id="diagram" width={'100%'} height={'500px'}
dataSourceSettings={{ id: 'Name', parentId: 'ReportingPerson', dataManager: new DataManager(data) }}
layout={{ type: 'OrganizationalChart' }}
getNodeDefaults={(node) => { node.width = 120; node.height = 40; return node; }}
getConnectorDefaults={(obj) => { obj.type = 'Orthogonal'; return obj; }}>
<Inject services={[DataBinding, HierarchicalTree]} />
</DiagramComponent>
);
}Use diagramInstance.saveDiagram() to serialize to JSON string; diagramInstance.loadDiagram(json) to restore. Inject UndoRedo for history support. For full examples see references/serialization-and-export.md.
Render SymbolPaletteComponent alongside DiagramComponent. Define palettes with shape arrays, set symbolHeight/symbolWidth, and users can drag shapes onto the canvas. For full examples see references/symbol-palette.md.
Inject only the modules your diagram uses: <Inject services={[HierarchicalTree, DataBinding, UndoRedo]} />
| Module | Purpose |
|---|---|
HierarchicalTree | Tree and org chart layouts |
MindMap | Mind map layout |
RadialTree | Radial/circular layout |
ComplexHierarchicalTree | Multi-parent hierarchies |
DataBinding | Data source integration |
UndoRedo | Undo/redo history |
Snapping | Grid snapping |
PrintAndExport | Export & print |
BpmnDiagrams | BPMN shapes |
LayoutAnimation | Animated layouts |
DiagramContextMenu | Right-click context menu |
ConnectorBridging | Bridge overlapping connectors |
ConnectorEditing | Edit connector segments |
Ej1Serialization | Load EJ1 diagram JSON |
| Prop | Type | Description |
|---|---|---|
nodes | NodeModel[] | Array of node definitions |
connectors | ConnectorModel[] | Array of connector definitions |
layout | LayoutModel | Automatic layout configuration |
dataSourceSettings | DataSourceModel | Data source for auto-generated diagrams |
getNodeDefaults | (node) => NodeModel | Default properties for all nodes |
getConnectorDefaults | (obj) => ConnectorModel | Default properties for all connectors |
setNodeTemplate | (node) => DiagramElement | Custom template rendering for nodes |
tool | DiagramTools | Active interaction tool mode |
snapSettings | SnapSettingsModel | Grid and snap configuration |
scrollSettings | ScrollSettingsModel | Scroll limits and zoom bounds |
pageSettings | PageSettingsModel | Page size, orientation, background |
constraints | DiagramConstraints | Enable/disable diagram-level interactions |
width | string | Diagram canvas width (e.g., '100%') |
height | string | Diagram canvas height (e.g., '600px') |
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.