Syncfusion React Gantt Chart
The Syncfusion React Gantt Chart (GanttComponent) is a powerful project management component for visualizing, scheduling, and managing tasks over a timeline. It supports auto/manual scheduling, task dependencies, resource planning, interactive editing, Excel/PDF export, and rich customization.
When to Use This Skill
- Implementing a Gantt chart or project timeline in a React app
- Configuring task scheduling (auto, manual, custom modes)
- Setting up task dependencies (FS, SS, FF, SF) and constraints (ASAP, MSO, FNET, etc.)
- Configuring project calendars, task calendars, holidays, working time, and hours-per-day rules
- Binding local or remote data to the Gantt (local array, DataManager, UrlAdaptor, Ajax)
- Customizing taskbars, labels, milestones, and baselines
- Configuring resources and resource views (including multi-taskbar)
- Enabling editing (dialog, cell, taskbar drag) with validation rules
- Setting up column resize, reorder, freeze, or column menu
- Configuring WBS codes, tree column icons, or serial number columns
- Setting up filtering, sorting, or selection, including hierarchy checkbox selection
- Scrolling to specific dates or controlling scroll position programmatically
- Exporting Gantt to Excel or PDF
- Handling Gantt events and enabling advanced features (undo/redo, virtual scroll, critical path, etc.)
- Globalization, localization, and RTL support
Documentation and Navigation Guide
Getting Started
📄 Read: references/getting-started.md [blocked]
- Installation and package dependencies
- Vite / CRA project setup
- Theme package installation and CSS import via npm theme packages
- Basic
GanttComponentwithtaskFieldsmapping - Module injection guide (all available services)
gridLinesprop ('Both'/'Horizontal'/'Vertical'/'None')- First render walkthrough with minimal example, output summary, and common gotchas
Data Binding
📄 Read: references/data-binding.md [blocked]
- Local array data binding
- Remote / AJAX data binding with
DataManager - Self-referential flat data
taskFieldsconfiguration (id, name, startDate, endDate, duration, progress, child)- Custom field mapping
- UrlAdaptor for server-side CRUD (
url+batchUrl) - RemoteSaveAdaptor for local rendering with server persistence
- Sending additional parameters to server via
Query.addParams()inloadevent - Binding with
Ajaxclass (manual fetch) - Load child on demand (
loadChildOnDemand={false},hasChildMapping) - Handling HTTP errors with
actionFailureevent
Task Scheduling
📄 Read: references/task-scheduling.md [blocked]
- Auto, Manual, and Custom scheduling modes (
taskMode) - Duration unit support:
Day,Hour,Minute,Week, andMonth - Mapping per-task duration units with
taskFields.durationUnit - Duration values with embedded units (for example,
5 days,2 weeks,1 month) daysPerWeekanddaysPerMonthconversion controls for week/month scheduling- How week/month durations interact with working time, weekends, holidays, and task calendars
- Unscheduled tasks (duration-only, date-only, none)
- Project start date and end date configuration
- How scheduling mode affects parent task calculation
- Switching between modes dynamically
Taskbar Draw
📄 Read: references/taskbar-draw.md [blocked]
allowTaskbarDrawAPI and required editing setup- Drawing a taskbar to create or schedule an unscheduled task
- How the drawn range resolves
StartDate,EndDate, andDuration - Behavior for fully unscheduled, partially scheduled, parent, child, milestone, and manual tasks
- Interaction with taskbar editing, dialog editing, cell editing, validation, calendars, holidays, dependencies, resources, and task calendars
- Practical examples, limitations, and best practices
Task Dependency
📄 Read: references/task-dependency.md [blocked]
- Dependency types: Finish-to-Start (FS), Start-to-Start (SS), Finish-to-Finish (FF), Start-to-Finish (SF)
- Mapping
taskFields.dependencyin data source (string format:"2FS","2FS+3d","2SS+2h") - Multiple predecessors per task (comma-separated:
"2FS,3FS") - Offset values with units: day, hour, minute (e.g.,
"2FS+3h","2FS-1d") - Drawing dependencies via UI (drag from taskbar connection points)
- Programmatic dependency management (
addPredecessor,removePredecessor,updatePredecessor) - Connector line customization (
connectorLineWidth,connectorLineBackground) - Predecessor Offset Synchronization
autoUpdatePredecessorOffset={true}— recalculate offsets on load to account for calendar rules (weekends, holidays)autoUpdatePredecessorOffset={false}— display original offsets even if not matching rendered lines (visual inconsistency possible)
- Offset Updates During Editing
updateOffsetOnTaskbarEdit={true}— auto-recalculate offsets when dragging taskbars (default)updateOffsetOnTaskbarEdit={false}— preserve offsets; manual update required via dependency dialog
- Dependency Validation Modes (in
actionBeginevent withrequestType === 'validateLinkedTask')respectLink={true}— revert invalid edits to maintain dependency integrityremoveLink={true}— remove conflicting dependencies to allow editspreserveLinkWithEditing={true}— update offsets to maintain links (default mode)
- Validation Dialog — disable all modes to show user-choice dialog (cancel edit, remove link, adjust offset)
- Parent Dependencies —
allowParentDependency={true}allows cross-parent dependencies;falserestricts to siblings only - Allowed Dependency Types —
allowedDependencyTypes={['FS', 'SF']}restricts which dependency types can be loaded, created, and edited - Show/Hide Dependencies Dynamically — toggle
.e-gantt-dependency-view-containerCSS visibility - Disable Validation —
enablePredecessorValidation={false}disables auto-date validation based on predecessor links
Task Constraints
📄 Read: references/task-constraints.md [blocked]
- Eight constraint types: ASAP, ALAP, MSO, MFO, SNET, SNLT, FNET, FNLT
- Mapping
taskFields.constraintTypeandtaskFields.constraintDate - How constraints interact with dependencies and
taskMode - Editing constraints via dialog
- Validation and conflict handling
Timeline and Zooming
📄 Read: references/timeline.md [blocked]
timelineViewModequick presets (Hour,Day,Week,Month,Year)- Top tier and bottom tier independent configuration (
unit,format,count,formatter) - Combining timeline cells using
count(merge multiple units per cell) - Custom timeline cell formatting using
formatter(tier + mode aware) - Timeline view dates with
viewStartDate/viewEndDate(lock visible range) weekStartDay— controls which day starts a week column (0=Sun, 1=Mon…)- Automatic timescale updates using
updateTimescaleView - Dynamic timeline mode change at runtime (update
timelineViewMode+refresh()) - Timeline cell tooltip visibility using
showTooltip - Timeline template customization using
timelineTemplate({ date, value, tier }) - Infinite timeline scrolling using
enableInfiniteTimelineScroll(extends the visible range while navigating with horizontal scrollbar or scroll arrows) - Timeline navigation using
previousTimeSpan()/nextTimeSpan() - Zooming with toolbar (
ZoomIn,ZoomOut,ZoomToFit) - Customizing zoom steps with
zoomingLevels(ZoomTimelineSettings) - Programmatic zoom methods:
zoomIn(),zoomOut(),fitToProject() - Timeline cell width using
timelineUnitSize - Weekend handling:
- Highlight weekends with
highlightWeekends={true} - Hide weekends using
timelineSettings.showWeekend(with noted limitations)
- Highlight weekends with
Columns
📄 Read: references/columns.md [blocked]
- Column types overview (tree column, WBS, custom columns)
- Auto-generated columns (omit
ColumnsDirective) - Column rendering with
valueAccessor(custom display values, concatenation) - Expression columns (calculated values via
valueAccessor) - Serial Number column configuration (
enableSerialNumber+field: 'SerialNumber') - Serial number behavior during sort, filter, search, expand/collapse, add/edit/delete, drag-and-drop, refresh, and virtualization
- Tree column configuration (
treeColumnIndex)- Customize expand/collapse icons (CSS override)
- Customize indentation via
queryCellInfo collapseAllParentTasks— collapse all on loadtaskFields.expandState— per-row initial expand/collapse- Persist expand/collapse state in
localStorage
- WBS (Work Breakdown Structure) column
enableWBS+enableAutoWbsUpdateAPIs- Manual WBS with
taskFields.wbsPredecessor
- Column headers, format, and alignment
headerTemplatefor custom header rendering- Header text wrapping (
treeGrid.textWrapSettings.wrapMode) - Dynamic header text update (
getColumnByField+refreshHeader)
- Column templates (custom cell rendering) and
editTemplate - Column spanning and frozen columns (
frozenColumns, injectFreeze)
Column Interactions
📄 Read: references/column-interactions.md [blocked]
- Column resizing (
allowResizing, injectResize)- Restrict with
minWidth/maxWidthper column - Prevent resize per column (
allowResizing={false}) - Resize modes: Normal vs Auto (
resizeSettings.mode) - Programmatic resize (
reorderColumns,refreshColumns) - Resize events:
resizeStart,resizing,resizeStop
- Restrict with
- Column reorder (
allowReordering, injectReorder)- Disable reorder per column (
allowReordering={false}) - Programmatic reorder:
reorderColumns,reorderColumnByIndex,reorderColumnByTargetIndex - Reorder drag events:
columnDragStart,columnDrag,columnDrop
- Disable reorder per column (
- Column menu (
showColumnMenu, injectColumnMenu)- Built-in items: SortAscending, SortDescending, AutoFit, AutoFitAll, ColumnChooser, Filter
- Custom column menu items +
columnMenuClickevent - Disable per column (
showColumnMenu={false})
- Toggling column visibility (show/hide columns)
Rows
📄 Read: references/rows.md [blocked]
- Row drag-and-drop (reorder and reparent tasks)
- Indent and outdent (change task hierarchy)
- Row spanning via
queryCellInfoeventQueryCellInfoEventArgswithrowSpan,colSpan,cell,data,column- Horizontal spanning (
colSpan) and vertical spanning (rowSpan)
- Row height configuration
- Row styling via
rowDataBound - Expand and collapse rows programmatically
Managing Tasks
📄 Read: references/managing-tasks.md [blocked]
- Adding new tasks (toolbar, context menu, programmatic
addRecord()) - Editing tasks — dialog edit (
mode: 'Dialog'), cell edit (mode: 'Auto'), taskbar drag - Taskbar draw creation for unscheduled tasks (
allowTaskbarDraw) - How drawn taskbars generate or update
StartDate,EndDate, andDuration - Behavior for fully unscheduled, partially scheduled, parent, child, milestone, and manual tasks
- Interactions with taskbar editing, dialog editing, cell editing, validation, calendars, holidays, dependencies, and resources
- Deleting tasks (toolbar,
deleteRecord(),showDeleteConfirmDialog) - Taskbar drag editing: move, resize right edge, progress handle, dependency drawing
- Splitting and merging tasks (
taskFields.segments,splitTask(),mergeTask()) - Cell edit types (
editType):stringedit,numericedit,datepickeredit,datetimepickeredit,dropdownedit,booleaneditedit.paramsfor min/max/step/format/dataSource per column
- Customizing add/edit dialog fields (
addDialogFields,editDialogFields) - Server-side CRUD with
UrlAdaptor(url+batchUrl)- Server receives
added,changed,deletedarrays in the batch request body
- Server receives
- Column-level validation rules (
validationRulesonColumnDirective)- Built-in rules:
required,min,max,minLength,date,regex - Custom validator functions (
[fn, 'message']callback pattern)
- Built-in rules:
Filtering and Searching
📄 Read: references/filtering-searching.md [blocked]
- Basic column filtering (
allowFiltering={true}, injectFilter) - Filter hierarchy modes:
Parent,Child,Both,None - Filter menu (string, number, date operators) and Excel-like checklist filter
- Toolbar search box (
searchSettings:fields,operator,ignoreCase) - Initial filter state on load (
filterSettings.columnsarray) - Programmatic filter API:
filterByColumn(),clearFiltering() - Custom multi-column filter predicates
Sorting
📄 Read: references/sorting.md [blocked]
- Single-column and multi-column sorting
- Initial sort state (
sortSettings) - Custom sort comparers
- Programmatic sorting API
Selection
📄 Read: references/selection.md [blocked]
- Row selection modes (single, multiple)
- Cell selection
- Checkbox selection with hierarchy propagation modes (
Self,Hierarchy,FilteredHierarchy) - Keyboard-based selection
- Programmatic selection API (
selectRow,selectCell)
Taskbar, Labels, and Markers
📄 Read: references/taskbar-labels-markers.md [blocked]
- Taskbar template (custom rendering)
- Parent taskbar and milestone customization
- Tooltip settings and templates (
tooltipSettingsfor taskbar, connector line, baseline, timeline) - Disable/hide tooltips for specific UI targets using
beforeTooltipRender - Left, right, and task label configuration
- Data markers / indicators
- Event markers (deadlines, holidays on timeline)
- Baseline rendering
- Baseline template customization using
baselineTemplate - Critical path highlighting
Resources
📄 Read: references/resources.md [blocked]
- Defining resource collection (
resourcesproperty) - Assigning resources to tasks (
taskFields.resourceInfo) — single or multiple with custom units - Resource view layout (
viewType='ResourceView', resource groups) - Multi-taskbar (
enableMultiTaskbar={true}) — multiple taskbars per collapsed resource row - Over-allocation highlighting (
showOverAllocatedTasks={true}) - Resource unit and work fields (
resourceFields.unit,resourceFields.group) - Custom resource taskbar styling via
queryTaskbarInfo
Toolbar
📄 Read: references/toolbar-context-menu.md [blocked]
- Built-in toolbar items:
Add,Edit,Delete,Update,Cancel,Search,ExpandAll,CollapseAll,Indent,Outdent,PrevTimeSpan,NextTimeSpan,ZoomIn,ZoomOut,ZoomToFit,CriticalPath,ExcelExport,CsvExport,PdfExport,ColumnChooser,Undo,Redo,SplitTask,MergeTask - Required services:
Undo/Redo→UndoRedo;SplitTask/MergeTask→Edit;CriticalPath→CriticalPath;ExcelExport/CsvExport→ExcelExport;PdfExport→PdfExport;ColumnChooser→ColumnMenu - Custom toolbar buttons using
ItemModel; handle clicks viatoolbarClickevent (args.item.id) - Enable/disable toolbar items programmatically via
enableItems()
Context Menu
📄 Read: references/toolbar-context-menu.md [blocked]
- Enable with
enableContextMenu={true}; injectContextMenuservice - Default context menu items:
AutoFit,AutoFitAll,SortAscending,SortDescending,TaskInformation,Add,Indent,Outdent,DeleteTask,Save,Cancel,DeleteDependency,Convert,SplitTask,MergeTask - Custom context menu items using
contextMenuItemsarray withtarget(.e-contentor.e-gridheader) - Handle clicks via
contextMenuClickevent; control visibility viacontextMenuOpen(args.hideItems)
Excel Export
📄 Read: references/excel-export.md [blocked]
- Basic Excel export
- Export properties and customization
- Exporting multiple Gantt charts to a single Excel workbook
- Custom data source export
PDF Export
📄 Read: references/pdf-export.md [blocked]
- Basic PDF export
- Customizing PDF (fonts, columns, styles)
- Header and footer configuration
- Page settings (orientation, size)
Holidays, Working Time & Timezone
📄 Read: references/holidays-working-time.md [blocked]
- Defining holidays (
holidaysprop,HolidayModel,DayMarkersservice) - Work week configuration (
workWeek,includeWeekend) - Daily working time (
dayWorkingTime) - Effort-based scheduling (
taskFields.work,workUnit, task types: FixedWork / FixedDuration / FixedUnit) - Timezone support (
timezoneprop, IANA timezone strings)
Calendar Settings
📄 Read: references/calendar-settings.md [blocked]
- Project calendar configuration through
calendarSettings.projectCalendar - Task calendar configuration through
calendarSettings.taskCalendar - Assigning task-specific calendars with
taskFields.calendarId - Calendar exceptions for special working days, holidays, and split shifts
hoursPerDayconversion and day-based duration recalculation- Task calendar precedence over project calendars for assigned tasks
- Calendar interactions with dependencies, weekends, holidays, and working time
Splitter
📄 Read: references/splitter.md [blocked]
- Position-based split (
splitterSettings.position— percentage or pixels) - Column-based split (
splitterSettings.columnIndex) - View mode (
splitterSettings.view— Default / Grid / Chart) - Programmatic resize (
setSplitterPosition()) - Splitter events (
splitterResizeStart,splitterResizing,splitterResized)
Scrolling
📄 Read: references/scrolling.md [blocked]
- Setting
widthandheightfor scrollbar control - Responsive container (
width='100%',height='100%'with CSS parent height) - Scroll to a date (
scrollToDate('MM/dd/yyyy')) - Set vertical scroll position (
ganttChartModule.scrollObject.setScrollTop(px))
Virtual Scroll
📄 Read: references/virtual-scroll.md [blocked]
- Row virtualization (
enableVirtualization={true},VirtualScrollservice) - Timeline virtualization (
enableTimelineVirtualization={true}, requiresprojectStartDate/projectEndDate) - Combining row + timeline virtualization
- Accessing filtered record count with virtual scroll (
treeGrid.filterModule.filteredResult) - Virtual scroll limitations (browser memory, cell selection, pixel height, expand state)
Undo / Redo
📄 Read: references/undo-redo.md [blocked]
- Enable undo/redo (
enableUndoRedo,UndoRedoservice) undoRedoActions— full list of trackable actions and required servicesundoRedoStepsCount— history stack size- Toolbar
'Undo'/'Redo'buttons andCtrl+Z/Ctrl+Ykeyboard shortcuts - Programmatic
undo()/redo()via component ref
State Persistence, Immutable Mode & Loading
📄 Read: references/state-persistence.md [blocked]
- State persistence (
enablePersistence={true}, uniqueidprop, localStorage) - Resetting persisted state (change
idor clear localStorage entry) - Immutable mode (
enableImmutableMode={true}, requiresisPrimaryKey={true}) - Loading animation (
loadingIndicator.indicatorType:'Spinner'or'Shimmer') - Manual spinner control (
showSpinner()/hideSpinner())
Localization and RTL
📄 Read: references/localization-rtl.md [blocked]
- Setting locale (
localeprop) - Loading custom translations (
L10n.load()with'gantt'namespace keys) - Gantt locale key reference (all translatable UI strings)
- RTL support (
enableRtl={true}) - Column date formatting (
format='yMd',format='dd/MM/yyyy') - Column number formatting (
format='C2',format='N2',format='P0')
Programmatic Methods
📄 Read: references/gantt-methods.md [blocked]
- Column utilities:
autoFitColumns() - Edit control:
cancelEdit(),openAddDialog(),openEditDialog() - Task management:
deleteRecord(),convertToMilestone(),changeTaskMode(),updateRecordByID(),updateRecordByIndex(),updateTaskId(),updateDataSource(),updateProjectDates() - Toolbar control:
enableItems() - Expand/Collapse:
expandByID(),expandByIndex(),collapseByID(),collapseByIndex() - Undo/Redo stacks:
clearUndoCollection(),clearRedoCollection(),getUndoActions(),getRedoActions() - Data retrieval:
getCurrentViewData(),getRecordByID(),getTaskByUniqueID(),getTaskInfo(),getTaskbarHeight(),getExpandedRecords(),getGanttColumns(),getGridColumns() - Formatting helpers:
getDurationString(),getWorkString() - DOM access:
getRowByID(),getRowByIndex() - Sorting:
removeSortColumn() - Selection:
selectCells() - Row reorder:
reorderRows() - Scrolling:
scrollToTask(),updateChartScrollOffset()
Calendar and Scheduling Methods
📄 Read: references/calendar-settings.md [blocked]
hoursPerDayfor converting working hours to day-based duration valuescalendarSettings.projectCalendarfor project-wide working rulescalendarSettings.taskCalendarfor task-specific working rulestaskFields.calendarIdfor binding a task to a named calendar- Fallback behavior when a task calendar is not assigned
Events
📄 Read: references/events.md [blocked]
- Lifecycle events (
load,created,dataBound) - Task editing events (
actionBegin,actionComplete) withrequestTypereference table - Taskbar events:
taskbarEditing,taskbarEdited,taskbarClick - Row expand/collapse events:
expanding,collapsing,expanded,collapsed - Selection events:
rowSelected,rowDeselected,cellSelected,cellDeselected - Export events:
excelExportComplete,pdfExportComplete - Column interaction events:
resizeStart,resizing,resizeStop,columnDragStart,columnDrag,columnDrop - Event cancellation patterns (
args.cancel = true) - Complete all-events quick reference table (30+ events)
Quick Start Example
Common Patterns
Enable Editing with Dialog
Enable Cell Editing
Programmatically Add a Task
Export to Excel
Export to PDF
Column-Level Validation Rules
Scroll to Date Programmatically
Column Resize with Min/Max Width
Reorder Columns Programmatically
Persist Tree Expand/Collapse State
Key Module Injections
Usage pattern:


