Skip to main content
net8.0net9.0net10.0

This package contains the Syncfusion® Blazor Gantt component.

Published
Oct 6, 2026
14d ago
Total Downloads
482.3K
482,272

Install

dotnet add package Syncfusion.Blazor.Gantt --version 35.1.39
ProductVersions
.NET
net10.0net8.0net9.0

README

Syncfusion Blazor Gantt Chart

The Blazor Gantt Chart component is a professional project planning and scheduling component for Blazor applications. Display and manage hierarchical tasks with timelines, resource allocation, dependencies, and Gantt chart visualizations.

Blazor Gantt Chart

Using this package with an AI coding agent

Before generating Syncfusion code, ask your AI coding agent to run the Syncfusion setup using the following prompt:

Set up this project for Syncfusion before generating code. Fetch and follow the official instructions at https://ai.syncfusion.com, then report the detected platform, installed skill pack, MCP status, and any required licensing action.

The setup detects your project's platform and loads the appropriate Syncfusion skill pack. No Syncfusion account or MCP key is required to install or read Syncfusion agent skills.

Platform reference: https://ai.syncfusion.com/blazor/llms.txt

Key features

  • Task management: Create, edit, and delete tasks with hierarchical (parent/child) structure.
  • Timeline view: Interactive Gantt chart with customizable timeline scales (hour/day/week/month) and zoom levels.
  • Resource allocation: Assign resources to tasks, view allocations, and support basic resource leveling.
  • Dependencies: Define and visualize task dependencies and relationships (FS/SS/FF/SF).
  • Scheduling: Automatic date calculation and recalculation based on durations, dependencies, and project constraints.
  • Milestone tracking: Mark and track important project milestones.
  • Drag and drop: Reschedule and reorder tasks via drag-and-drop with touch and keyboard-friendly alternatives.
  • Filtering and Sorting: Filter and sort tasks by status, resource, date range, or custom criteria.
  • Export: Export project data to Excel, CSV, and PDF formats with configurable export options.
  • Timezone: Configure task scheduling and date-time display using a specified timezone, with automatic conversion and daylight saving time (DST) adjustments.

System requirements

  • .NET 8.0 or later (Blazor Server App, Blazor Web App, Blazor WebAssembly App, Blazor Hybrid App)
  • See full requirements: System requirements

Installation

Install the Gantt package and the themes package, which provides the stylesheets referenced below:

dotnet add package Syncfusion.Blazor.Gantt
dotnet add package Syncfusion.Blazor.Themes

Add stylesheet and script references

For Blazor Web App / Blazor Server App, add these to Components/App.razor or App.razor. For Blazor WebAssembly App, add these to wwwroot/index.html:

<link href="_content/Syncfusion.Blazor.Themes/fluent2.css" rel="stylesheet" />
<script src="_content/Syncfusion.Blazor.Core/scripts/syncfusion-blazor.min.js" type="text/javascript"></script>

Quick start

  1. Register the Syncfusion Blazor service in Program.cs:
using Syncfusion.Blazor;

builder.Services.AddSyncfusionBlazor();
  1. Add Blazor Gantt Chart component to your razor page:
@using Syncfusion.Blazor.Gantt

<div class="control-section e-gantt-eventmarkers-sample">
    <SfGantt DataSource="@TaskCollection" Height="450px" Width="1200px" ProjectStartDate="@(new DateTime(2026, 3, 27))" ProjectEndDate="@(new DateTime(2026, 7, 6))" TreeColumnIndex="1" ScrollToTaskbarOnClick="true">
        <GanttTaskFields Id="TaskId" Name="TaskName" StartDate="StartDate" EndDate="EndDate" Progress="Progress" ParentID="ParentId" Indicators="Indicators" Dependency="Predecessor">
        </GanttTaskFields>
        <GanttColumns>
            <GanttColumn Field="TaskId" HeaderText="Task Id"></GanttColumn>
            <GanttColumn Field="TaskName" HeaderText="Task Name" ClipMode="Syncfusion.Blazor.Grids.ClipMode.EllipsisWithTooltip" Width="280px"></GanttColumn>
            <GanttColumn Field="StartDate" HeaderText="Start Date"></GanttColumn>
            <GanttColumn Field="EndDate" HeaderText="End Date"></GanttColumn>
            <GanttColumn Field="Predecessor" HeaderText="Dependency"></GanttColumn>
            <GanttColumn Field="Progress" HeaderText="Progress"></GanttColumn>
        </GanttColumns>
        <GanttEventMarkers>
            <GanttEventMarker Day="@ResearchPhaseDate" Label="Research phase" CssClass="e-custom-event-marker"></GanttEventMarker>
        </GanttEventMarkers>
        <GanttSplitterSettings Position="28%"></GanttSplitterSettings>
        <GanttLabelSettings LeftLabel="TaskName" TValue="EventData.TaskData"></GanttLabelSettings>
    </SfGantt>
</div>
@code {
    internal List<EventData.TaskData> TaskCollection { get; set; } = new List<EventData.TaskData>();
    public DateTime ResearchPhaseDate { get; set; } = new DateTime(2026, 04, 09);
    /// <summary>
    /// Initializes the sample by loading task data for the Gantt chart.
    /// </summary>
    protected override async Task OnInitializedAsync()
    {
        TaskCollection = EventData.GetTaskCollection();
        await Task.CompletedTask.ConfigureAwait(true);
    }

    public static class EventData
    {
        internal sealed class TaskData
        {
            public int TaskId { get; set; }
            public string TaskName { get; set; } = string.Empty;
            public DateTime StartDate { get; set; }
            public DateTime EndDate { get; set; }
            public int Progress { get; set; }
            public int? ParentId { get; set; }
            public string Predecessor { get; set; } = string.Empty;
            public List<GanttIndicator>? Indicators { get; set; }
        }
        /// <summary>
        /// Generates and returns a collection of Gantt task data.
        /// </summary>
        internal static List<TaskData> GetTaskCollection()
        {
            List<TaskData> Tasks = new List<TaskData>() {
                new TaskData() { TaskId = 1, TaskName = "Product concept", StartDate = new DateTime(2026, 04, 02), EndDate = new DateTime(2026, 04, 08) },
                new TaskData() { TaskId = 2, TaskName = "Defining the product usage", StartDate = new DateTime(2026, 04, 02), EndDate = new DateTime(2026, 04, 08), Progress = 30, ParentId = 1 },
                new TaskData() { TaskId = 3, TaskName = "Defining the target audience", StartDate = new DateTime(2026, 04, 02), EndDate = new DateTime(2026, 04, 04), Progress = 40, ParentId = 1 },
                new TaskData() { TaskId = 4, TaskName = "Prepare product sketch and notes", StartDate = new DateTime(2026, 04, 05), EndDate = new DateTime(2026, 04, 08), Progress = 30, ParentId = 1, Predecessor = "2" },
                new TaskData() { TaskId = 5, TaskName = "Concept approval", StartDate = new DateTime(2026, 04, 08), EndDate = new DateTime(2026, 04, 08), Predecessor = "3,4", Indicators = new List<GanttIndicator>() { new GanttIndicator() { Name = "Design phase", IconClass = "e-btn-icon e-notes-info e-icons e-icon-left e-gantt e-notes-info::after", Date = new DateTime(2026, 04, 10), Tooltip = "Design phase" }, } },
                new TaskData() { TaskId = 6, TaskName = "Market research", StartDate = new DateTime(2026, 04, 09), EndDate = new DateTime(2026, 04, 18), Progress = 30 },
                new TaskData() { TaskId = 7, TaskName = "Demand analysis", StartDate = new DateTime(2026, 04, 09), EndDate = new DateTime(2026, 04, 12), Progress = 40, ParentId = 6 },
                new TaskData() { TaskId = 8, TaskName = "Customer strength", StartDate = new DateTime(2026, 04, 09), EndDate = new DateTime(2026, 04, 12), Progress = 30, ParentId = 7, Predecessor = "5" },
                new TaskData() { TaskId = 9, TaskName = "Market opportunity analysis", StartDate = new DateTime(2026, 04, 09), EndDate = new DateTime(2026, 04, 12), ParentId = 7, Predecessor = "5" },
                new TaskData() { TaskId = 10, TaskName = "Competitor analysis", StartDate = new DateTime(2026, 04, 15), EndDate = new DateTime(2026, 04, 18), Progress = 30, ParentId = 6, Predecessor = "7,8" },
                new TaskData() { TaskId = 11, TaskName = "Product strength analysis", StartDate = new DateTime(2026, 04, 15), EndDate = new DateTime(2026, 04, 18), Progress = 40, ParentId = 6, Predecessor = "9" },
                new TaskData() { TaskId = 12, TaskName = "Research completed", StartDate = new DateTime(2026, 04, 22), EndDate = new DateTime(2026, 04, 22), Progress = 30, ParentId = 6, Predecessor = "10", Indicators = new List<GanttIndicator>() { new GanttIndicator() { Name = "Research completed", IconClass = "e-btn-icon e-notes-info e-icons e-icon-left e-gantt e-notes-info::after", Date = new DateTime(2026, 04, 23), Tooltip = "Research completed" }, } },
                new TaskData() { TaskId = 13, TaskName = "Product design and development", StartDate = new DateTime(2026, 04, 19), EndDate = new DateTime(2026, 05, 16) },
                new TaskData() { TaskId = 14, TaskName = "Functionality design", StartDate = new DateTime(2026, 04, 19), EndDate = new DateTime(2026, 04, 23), Progress = 30, ParentId = 13, Predecessor = "12" },
                new TaskData() { TaskId = 15, TaskName = "Quality design", StartDate = new DateTime(2026, 04, 19), EndDate = new DateTime(2026, 04, 23), Progress = 40, ParentId = 13, Predecessor = "12" },
                new TaskData() { TaskId = 16, TaskName = "Define reliability", StartDate = new DateTime(2026, 04, 24), EndDate = new DateTime(2026, 04, 25), Progress = 30, ParentId = 13, Predecessor = "15" },
                new TaskData() { TaskId = 17, TaskName = "Identifying raw materials", StartDate = new DateTime(2026, 04, 24), EndDate = new DateTime(2026, 04, 25), ParentId = 13, Predecessor = "15" },
                new TaskData() { TaskId = 18, TaskName = "Define cost plan", StartDate = new DateTime(2026, 04, 26), EndDate = new DateTime(2026, 04, 29), Progress = 30, ParentId = 13, Predecessor = "17" },
                new TaskData() { TaskId = 19, TaskName = "Define manufacturing cost", StartDate = new DateTime(2026, 04, 26), EndDate = new DateTime(2026, 04, 29), Progress = 40, ParentId = 18, Predecessor = "17" },
                new TaskData() { TaskId = 20, TaskName = "Define selling cost", StartDate = new DateTime(2026, 04, 26), EndDate = new DateTime(2026, 04, 29), Progress = 30, ParentId = 18, Predecessor = "17" },
                new TaskData() { TaskId = 21, TaskName = "Development of final design", StartDate = new DateTime(2026, 04, 30), EndDate = new DateTime(2026, 05, 08), ParentId = 13 },
                new TaskData() { TaskId = 22, TaskName = "Develop dimensions and design", StartDate = new DateTime(2026, 04, 30), EndDate = new DateTime(2026, 05, 01), Progress = 30, ParentId = 21, Predecessor = "19,20" },
                new TaskData() { TaskId = 23, TaskName = "Develop designs to meet industry standard", StartDate = new DateTime(2026, 05, 02), EndDate = new DateTime(2026, 05, 03), Progress = 40, ParentId = 21, Predecessor = "22" },
                new TaskData() { TaskId = 24, TaskName = "Include all the details", StartDate = new DateTime(2026, 05, 06), EndDate = new DateTime(2026, 05, 08), Progress = 30, ParentId = 21, Predecessor = "23" },
                new TaskData() { TaskId = 25, TaskName = "CAD - Computer Aided Design", StartDate = new DateTime(2026, 05, 09), EndDate = new DateTime(2026, 05, 13), Predecessor = "24" },
                new TaskData() { TaskId = 26, TaskName = "CAM - Computer Aided Manufacturing", StartDate = new DateTime(2026, 05, 14), EndDate = new DateTime(2026, 05, 16), Progress = 30, Predecessor = "25" },
                new TaskData() { TaskId = 27, TaskName = "Finalize the design", StartDate = new DateTime(2026, 04, 16), EndDate = new DateTime(2026, 04, 16), Progress = 40, Predecessor = "26" },
                new TaskData() { TaskId = 28, TaskName = "Prototype testing", StartDate = new DateTime(2026, 05, 17), EndDate = new DateTime(2026, 05, 22), Progress = 30, Predecessor = "27" },
                new TaskData() { TaskId = 29, TaskName = "Include feedback", StartDate = new DateTime(2026, 05, 17), EndDate = new DateTime(2026, 05, 22), Predecessor = "28ss", Indicators = new List<GanttIndicator>() { new GanttIndicator() { Name = "Production phase", IconClass = "e-btn-icon e-notes-info e-icons e-icon-left e-gantt e-notes-info::after", Date = new DateTime(2026, 05, 26), Tooltip = "Production phase" }, } },
                new TaskData() { TaskId = 30, TaskName = "Manufacturing", StartDate = new DateTime(2026, 05, 23), EndDate = new DateTime(2026, 05, 29), Progress = 30, Predecessor = "28,29" },
                new TaskData() { TaskId = 31, TaskName = "Assembling material into finished goods", StartDate = new DateTime(2026, 05, 30), EndDate = new DateTime(2026, 06, 05), Progress = 40, Predecessor = "30" },
                new TaskData() { TaskId = 32, TaskName = "Final product development", StartDate = new DateTime(2026, 06, 06), EndDate = new DateTime(2026, 06, 13), Progress = 30 },
                new TaskData() { TaskId = 33, TaskName = "Important improvement", StartDate = new DateTime(2026, 06, 06), EndDate = new DateTime(2026, 06, 10), ParentId = 32, Predecessor = "31" },
                new TaskData() { TaskId = 34, TaskName = "Customer testing and feedback", StartDate = new DateTime(2026, 06, 11), EndDate = new DateTime(2026, 06, 13), Progress = 30, ParentId = 32, Predecessor = "33" },
                new TaskData() { TaskId = 35, TaskName = "Final product development", StartDate = new DateTime(2026, 06, 14), EndDate = new DateTime(2026, 06, 19), Progress = 40 },
                new TaskData() { TaskId = 36, TaskName = "Important improvement", StartDate = new DateTime(2026, 06, 14), EndDate = new DateTime(2026, 06, 19), Progress = 30, ParentId = 35, Predecessor = "34" },
                new TaskData() { TaskId = 37, TaskName = "Address any unforeseen issues", StartDate = new DateTime(2026, 06, 14), EndDate = new DateTime(2026, 06, 19), Progress = 30, Predecessor = "36ss", ParentId = 35, Indicators = new List<GanttIndicator>() { new GanttIndicator() { Name = "Sales and Marketing", IconClass = "e-btn-icon e-notes-info e-icons e-icon-left e-gantt e-notes-info::after", Date = new DateTime(2026, 06, 23), Tooltip = "Sales and Marketing" }, } },
                new TaskData() { TaskId = 38, TaskName = "Finalize the product ", StartDate = new DateTime(2026, 06, 20), EndDate = new DateTime(2026, 07, 01), Progress = 40 },
                new TaskData() { TaskId = 39, TaskName = "Branding the product", StartDate = new DateTime(2026, 06, 20), EndDate = new DateTime(2026, 06, 25), Progress = 30, ParentId = 38, Predecessor = "37" },
                new TaskData() { TaskId = 40, TaskName = "Marketing and presales", StartDate = new DateTime(2026, 06, 26), EndDate = new DateTime(2026, 07, 01), ParentId = 38, Predecessor = "39" }
            };
            return Tasks;
        }
    }
}

Documentation

Support and feedback

Other popular Blazor components

Explore other popular Syncfusion Blazor components curated from UI components, standalone SDKs, and document solution suites.

UI components Standalone UI SDK's Document processing
Blazor DataGrid
Blazor Map
Blazor File Manager Blazor Kanban
Blazor Diagram
Blazor Scheduler
Blazor RichTextEditor Blazor DOCX Editor
Blazor PDF Viewer
Blazor Spreadsheet Editor

License

This is a commercial product and requires a paid license for possession or use. Syncfusion licensed software, including this component, is subject to the terms and conditions of the Syncfusion EULA. You can purchase a license here or start a free 30-day trial here.

About Syncfusion

Founded in 2001 and headquartered in Research Triangle Park, N.C., Syncfusion has more than 29,000 customers and more than 1 million users, including large financial institutions, Fortune 500 companies, and global IT consultancies.

Today, we provide 1800+ components and frameworks for web, mobile, and desktop development across multiple platforms:

Web: Blazor | ASP.NET Core | ASP.NET MVC | JavaScript | Angular | React | Vue

Mobile: Flutter | MAUI | UWP

Desktop: WinForms | WPF | WinUI

Learn more at www.syncfusion.com.

[email protected] | Toll Free: 1-888-9-DOTNET

Changes from Previous Version

No structural changes between v35.1.37 and v35.1.39.

Adoption Assessment

A verified publisher signal is available. Assess fit from the package's supported frameworks, license and dependency graph rather than popularity alone.

No SPDX license expression is published. Review the license text and your organisation's policy before redistribution.Compatibility metadata lists 3 target frameworks; confirm the exact target used by your application.The published metadata declares 45 direct dependency entries across framework groups. Inspect the resolved dependency graph for your target framework.

Related Guides & Workflows

Learn how to evaluate, integrate, or audit this package in your .NET project.