Getting Started with React Diagram Component
6 Jul 20266 minutes to read
This section explains how to create a React application from scratch and build a simple diagram using the Syncfusion® Diagram component.
Ready to streamline your Syncfusion® React development? Discover the full potential of Syncfusion® React components with Syncfusion® AI Coding Assistant. Effortlessly integrate, configure, and enhance your projects with intelligent, context-aware code suggestions, streamlined setups, and real-time insights—all seamlessly integrated into your preferred AI-powered IDEs like VS Code, Cursor, Syncfusion® CodeStudio and more. Explore Syncfusion® AI Coding Assistant
Prerequisites
Before getting started, ensure that your development environment meets the system requirements for Syncfusion® React UI components
NOTE
To use Vite with a React application, make sure you have Node.js version 20.19.0 or higher installed. Older versions may not support Vite’s modern build features. For detailed setup instructions, refer to the Vite guide.
Before You Begin
This guide uses the React application structure generated by Vite with the TypeScript template.
The main files used in this guide are:
-
src/App.tsx— Defines the root React component. -
src/App.css— Contains Syncfusion® theme references. -
src/main.tsx— Application entry point. -
index.html— Root HTML file.
NOTE
In a Vite React TypeScript application, the root component is commonly generated as src/App.tsx. If your application uses JavaScript, the equivalent file is typically src/App.jsx.
NOTE
This guide uses the TypeScript template for better type checking with Diagram models such as
NodeModel,ConnectorModel, andFlowShapeModel.
Step 1: Set up the React environment
Use Vite to create and manage React applications. Vite provides a fast development environment and optimized builds for modern React applications. Syncfusion® React documentation also recommends Vite for setting up React applications.
Step 2: Create a React application
Create a new React application using the below command.
npm create vite@latest my-diagram-app -- --template react-ts
If Vite prompts you to install dependencies and start the project immediately, choose No. The Syncfusion package is installed in a later step.
Navigate to the project folder:
cd my-diagram-app
NOTE
If you prefer JavaScript instead of TypeScript, create the application using
npm create vite@latest my-diagram-app -- --template react.
Step 3: Install the Syncfusion® React Diagram package
All Syncfusion Essential® JS 2 packages are available in the npmjs.com registry.
Install the React Diagram package using the following command:
npm install @syncfusion/ej2-react-diagrams
NOTE
Installing
@syncfusion/ej2-react-diagramsautomatically installs the required dependency packages.
Step 4: Add the required CSS references
Add the required Syncfusion® styles to the src/App.css file by replacing the existing content with the following CSS imports:
@import '../node_modules/@syncfusion/ej2-base/styles/tailwind3.css';
@import '../node_modules/@syncfusion/ej2-popups/styles/tailwind3.css';
@import '../node_modules/@syncfusion/ej2-navigations/styles/tailwind3.css';
@import '../node_modules/@syncfusion/ej2-react-diagrams/styles/tailwind3.css';
NOTE
Syncfusion® provides multiple built-in themes. If your application uses a different theme, replace the tailwind3.css references with the corresponding theme file, such as material3.css.
NOTE
Ensure that App.css is imported in the src/App.tsx file so that the theme styles are applied to the Diagram component.
Step 5: Add the Diagram component
Import DiagramComponent from @syncfusion/ej2-react-diagrams and add it to the React component.
Update the src/App.tsx file as follows:
import { DiagramComponent } from '@syncfusion/ej2-react-diagrams';
import './App.css';
function App() {
return (
<DiagramComponent
id="diagram"
width="100%"
height="580px"
/>
);
}
export default App;
At this stage, the Diagram component renders an empty canvas.
NOTE
The Diagram component must have a valid height. If the height is not set, the Diagram canvas may not be visible.
NOTE
In a Vite React application, the root element is defined in index.html as
<div id="root"></div>, and the application is rendered from src/main.tsx.
Step 6: Create your first Diagram with nodes and connectors
This section explains how to create a simple flowchart by adding nodes, customizing their appearance, and connecting them using connectors.
The following example creates a flowchart with four nodes: Start, Process, Decision, and End. It also applies common node and connector settings using the getNodeDefaults and getConnectorDefaults properties.
Update the src/App.tsx file as follows:
import {
DiagramComponent,
type ConnectorModel,
type FlowShapeModel,
type NodeModel
} from '@syncfusion/ej2-react-diagrams';
import './App.css';
const terminator: FlowShapeModel = {
type: 'Flow',
shape: 'Terminator'
};
const process: FlowShapeModel = {
type: 'Flow',
shape: 'Process'
};
const decision: FlowShapeModel = {
type: 'Flow',
shape: 'Decision'
};
const nodes: NodeModel[] = [
{
id: 'node1',
offsetX: 300,
offsetY: 100,
shape: terminator,
annotations: [
{
content: 'Start'
}
]
},
{
id: 'node2',
offsetX: 300,
offsetY: 200,
shape: process,
annotations: [
{
content: 'Process'
}
]
},
{
id: 'node3',
offsetX: 300,
offsetY: 300,
shape: decision,
annotations: [
{
content: 'Decision?'
}
]
},
{
id: 'node4',
offsetX: 300,
offsetY: 400,
shape: terminator,
annotations: [
{
content: 'End'
}
]
}
];
const connectors: ConnectorModel[] = [
{
id: 'connector1',
sourceID: 'node1',
targetID: 'node2'
},
{
id: 'connector2',
sourceID: 'node2',
targetID: 'node3'
},
{
id: 'connector3',
sourceID: 'node3',
targetID: 'node4'
}
];
function nodeDefaults(node: NodeModel): NodeModel {
node.width = 140;
node.height = 50;
node.style = {
fill: '#E8F4FF',
strokeColor: '#357BD2'
};
return node;
}
function connectorDefaults(connector: ConnectorModel): ConnectorModel {
connector.type = 'Orthogonal';
connector.targetDecorator = {
shape: 'Arrow',
width: 10,
height: 10
};
return connector;
}
function App() {
return (
<DiagramComponent
id="diagram"
width="100%"
height="580px"
nodes={nodes}
connectors={connectors}
getNodeDefaults={nodeDefaults}
getConnectorDefaults={connectorDefaults}
/>
);
}
export default App;
In this example:
-
offsetXandoffsetYdefine the position of each node. -
shapedefines the node shape configuration, andFlowShapeModel.shapespecifies flowchart shapes such asTerminator,Process, orDecision. - The
annotationsproperty adds text inside each node using thecontentfield. -
sourceIDandtargetIDdefine the connection between nodes. -
getNodeDefaultsapplies common width, height, fill color, and stroke color to all nodes. -
getConnectorDefaultsapplies common connector settings, such as orthogonal routing and target arrows.
Step 7: Run the application
Run the application using the following command:
npm run dev
Open the generated local URL in the browser. The application displays the diagram as shown below:
