HelpBot Assistant

How can I help you?

Getting started with the React Timeline component

6 Feb 20267 minutes to read

This section explains how to create and configure a simple Timeline in a React application using Syncfusion Essential JS 2.

Dependencies

The following list of dependencies is required to use the Timeline component in the application.

|-- @syncfusion/ej2-react-layouts
    |-- @syncfusion/ej2-base
    |-- @syncfusion/ej2-layouts
    |-- @syncfusion/ej2-react-base

Installation and Configuration

To quickly set up a React application, use create-vite-app, which provides a faster development environment, smaller bundle sizes, and optimized builds compared to traditional tools like create-react-app. For detailed steps, refer to the Vite installation instructions. Vite configures the development environment using modern tooling and optimizes the application for production.

Note: To create a React application using create-react-app, refer to this documentation for more details.

To create a new React application, run the following command.

npm create vite@latest my-app

To set-up a React application in TypeScript environment, run the following command.

npm create vite@latest my-app -- --template react-ts
cd my-app
npm run dev

To set-up a React application in JavaScript environment, run the following command.

npm create vite@latest my-app -- --template react
cd my-app
npm run dev

Adding Syncfusion® packages

All the available Essential® JS 2 packages are published in npmjs.com public registry.

To install Timeline component, use the following command

npm install @syncfusion/ej2-react-layouts --save

Adding CSS Reference

Import the required CSS references for the Timeline component in src/App.css as shown below.

@import "../node_modules/@syncfusion/ej2-base/styles/tailwind3.css";
@import "../node_modules/@syncfusion/ej2-layouts/styles/tailwind3.css";

Adding Timeline component to the application

To include the Timeline component in the application, import the TimelineComponent from the ej2-react-layouts package into the App.tsx file.

Each Timeline item is defined using the ItemDirective, which must be placed inside the ItemsDirective. The ItemsDirective acts as a container for managing multiple Timeline items, and each ItemDirective represents an individual entry in the Timeline.

import { TimelineComponent, ItemsDirective, ItemDirective } from '@syncfusion/ej2-react-layouts';
import * as React from "react";
import * as ReactDOM from "react-dom";
import "./App.css";

function App() {
  return (
    <div id='timeline' style={{ height: "350px" }}>
      <TimelineComponent>
          <ItemsDirective>
              <ItemDirective />
              <ItemDirective />
              <ItemDirective />
              <ItemDirective />
          </ItemsDirective>
      </TimelineComponent>
    </div>
  );
}

const root = ReactDOM.createRoot(document.getElementById("element"));
root.render(<App />);

Running the application

Run the npm run dev command in the console to start the development server. This command compiles the application and serves it locally, making it available in the browser.

npm run dev

The following example shows a basic Timeline component.

import * as React from "react";
import * as ReactDom from "react-dom";
import { TimelineComponent, ItemsDirective, ItemDirective } from '@syncfusion/ej2-react-layouts';

function App() {
    return (
        <div id='timeline' style={{ height: "350px" }}>
            <TimelineComponent>
                <ItemsDirective>
                    <ItemDirective />
                    <ItemDirective />
                    <ItemDirective />
                    <ItemDirective />
                </ItemsDirective>
            </TimelineComponent>
        </div>
    );
}
export default App;
ReactDom.render(<App />, document.getElementById("element"));
import * as React from "react";
import * as ReactDom from "react-dom";
import { TimelineComponent, ItemsDirective, ItemDirective } from '@syncfusion/ej2-react-layouts';

function App() {
    return (
        <div id='timeline' style={{ height: "320px" }}>
            <TimelineComponent>
                <ItemsDirective>
                    <ItemDirective />
                    <ItemDirective />
                    <ItemDirective />
                    <ItemDirective />
                </ItemsDirective>
            </TimelineComponent>
        </div>
    );
}
export default App;
ReactDom.render(<App />, document.getElementById("element"));
<!DOCTYPE html>
<html lang="en">

<head>
    <title>Syncfusion EJ2 React Timeline Sample</title>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta name="description" content="Essential JS 2 for React Components" />
    <meta name="author" content="Syncfusion" />
    <link href="https://cdn.syncfusion.com/ej2/32.2.3/ej2-base/styles/tailwind3.css" rel="stylesheet" />
    <link href="https://cdn.syncfusion.com/ej2/32.2.3/ej2-layouts/styles/tailwind3.css" rel="stylesheet" />
    <link href="index.css" rel="stylesheet" />
    <script src="https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.19.38/system.js"></script>
    <script src="systemjs.config.js"></script>
<script src="https://cdn.syncfusion.com/ej2/syncfusion-helper.js" type ="text/javascript"></script>
</head>

<body>
    <div id='element' style="margin-top: 30px;">
        <div id='loader'>Loading....</div>
    </div>
</body>

</html>