Release date: October 1, 2026
Features
Multiline event containers
Keep the phases of a job or booking together within a resource row, even when they overlap. Event containers now let overlapping members occupy separate lines while reserving the group's full time span. Unrelated events are placed outside that block.
Assign the same container ID to related events, then enable eventContainersMultiLineEnabled. You can also show the group boundaries using eventContainersVisible. Both options default to false.
scheduler.update({
eventContainersMultiLineEnabled: true,
eventContainersVisible: true
});

Use eventContainersLayer to draw outlines above or below events. Try the event containers demo to compare multiline placement, outlines, and layers.
Rounded corners for right-angled links
Give dependency lines rounded corners while keeping their right-angled routes. Set linkShape to "RightAngled" and choose a radius in pixels using linkCornerRadius:
scheduler.update({
linkShape: "RightAngled",
linkCornerRadius: 6
});

The default radius in this release is 0, keeping sharp corners unless you enable rounding. This setting does not affect curved links. See the link shape guide or compare shapes and radii in the event links demo.
Adaptive sticky parent rows
Sticky parent rows keep group names visible while users scroll through a resource tree. The Scheduler now automatically hides the sticky stack when a short viewport cannot show the parents and leave room for a resource row. It restores the parents when space becomes available, helping compact layouts keep ordinary rows accessible.

Enable stickyParents with the resource tree:
{
treeEnabled: true,
stickyParents: true
}
Applications already using sticky parents receive the adaptive behavior automatically. The original parent rows remain available by scrolling, and date separators now also appear in sticky parent rows. Explore the sticky parents demo.
Improvements
Scheduler
- DayPilot.Scheduler.eventContainersMultiLineEnabled property added (default value:
false) (2026.3.7041) - DayPilot.Scheduler.eventContainersVisible property added (default value:
false). (2026.3.7042) - DayPilot.Scheduler.eventContainersLayer property added (
"Above"|"Below"); default value:"Above"(2026.3.7042) - Event containers demo shows advanced options. (2026.3.7042)
- DayPilot.Scheduler.eventSortStrictEnabled property added (default value:
false). (2026.3.7044) - Added
"Auto"to supported DayPilot.Scheduler.dynamicEventRendering values in TypeScript definitions. (2026.3.7049) - DayPilot.Scheduler.linkCornerRadius property added (default value:
0) (2026.3.7051) - Event links demo allows configuring corner radius for right-angled links. (2026.3.7052)
- Curved links of type
FinishToFinishnow mirrorStartToStartgeometry. The loop proportions and attachment angles are more consistent. (2026.3.7054) - Curved links of type
StartToFinishnow use top/bottom target attachment when the source start matches the target finish, mirroring the correspondingFinishToStartbehavior. (2026.3.7054) - Separators in sticky parents supported. (2026.3.7055)
General
- The
eventsattribute (Calendar, Month, Queue),tasksandlinksattributes (Gantt), andcards,columnsandswimlanesattributes (Kanban) now take precedence over the correspondingconfigvalues in Angular. (2026.3.7058)
Fixes
Scheduler
- The linkArrowSize and linkHitAreaMinWidth properties are now optional. (2026.3.7045)
- Scheduler TypeScript definitions fixed: events.find() can return
null; rows.find(id) can returnnull; getCoords(), itsevent, and itseventOffsetcan benull. (2026.3.7047) - DayPilot.Scheduler.rows.find(f) TypeScript definition fixed. (2026.3.7048)
- Switching Scheduler to RTL mode using the update() method fixed. (2026.3.7050)
- Fixed: Sticky-grid and divider alignment with RTL scrollbars. (2026.3.7053)
- Fixed: Firefox issue where partially hidden sticky events and cells jumped horizontally. (2026.3.7053)
- Fixed event link hit areas blocking access to event resize handles when links are displayed above events. (2026.3.7054)
- Fixed a 1 px vertical row-header misalignment with time headers at the top, visible as an extra line below the last row header. Regression introduced in 2026.2.6919. (2026.3.7054)
- Sticky parent row rendering and interaction fixes (RTL, partially visible rows, auto cell width mode, event versions, event labels - left/right, crosshair) (2026.3.7055)
- Corrected
DayPilotSchedulerComponent.viewChangeto useSchedulerViewChangeArgs, containingvisibleRangeChanged: boolean(Angular). (2026.3.7056) - Fixed rendering of the corner template, including templates that produce empty content (Vue). (2026.3.7056)
- Fixed corner cleanup during update() and dispose() after
onBeforeCornerDomAddis removed, including unmounting React components and invokingonBeforeCornerDomRemove. (2026.3.7056) - Fixed handling of resources with
id: 0in rows.find(), rows.remove(), and event rendering. (2026.3.7061) - Fixed changes to the Angular
configinput (including startDate) being ignored after event moving/resizing or calls to events.add(), events.update() or events.remove(). (2026.3.7062) - Fixed
onBeforeCellDomRemovenot being called during redraw or disposal afteronBeforeCellDomAddhas been removed. (2026.3.7064) - Fixed DayPilot.Scheduler.events.remove() failing to remove events with numeric ID
0. (2026.4.7067)
Gantt
- The linkArrowSize and linkHitAreaMinWidth properties are now optional. (2026.3.7045)
- DayPilot.Gantt.taskMovingStartEndFormat and taskResizingStartEndFormat TypeScript definitions fixed. (2026.3.7049)
Calendar
- Fixed incomplete
args.headerdata inonBeforeHeaderDomAddwhen onBeforeHeaderRender is not defined. (2026.3.7056) - Removed the unsupported
args.cell.events()method from theonBeforeCellDomAddandonBeforeCellDomRemoveargument TypeScript declarations. (2026.3.7056) - Corrected
DayPilotCalendarComponent.viewChangeto useCalendarViewChangeArgs, matching the emitted empty object (Angular). (2026.3.7056) - Fixed cleanup of components supplied through
onBeforeCellDomAddduring update() and dispose(), including Calendar viewport changes. (2026.3.7056) - Fixed React components rendered using
onBeforeCornerDomAdddisappearing or throwing errors during redraw, and failing to unmount after the handler was removed (Calendar). (2026.3.7065)
Month
- Fixed events.remove() deleting an unrelated event when called with an event that is no longer in events.list (Month). (2026.3.7060)
Navigator
- Fixed
onBeforeCellDomRemovenot being called when cells are removed during redraw or disposal. (2026.3.7056) - Fixed loading events through
config.events. Theeventsattribute now takes precedence overconfig.events, including empty arrays. (Angular) (2026.3.7059) - Fixed DayPilot.Navigator.update() and framework-triggered redraws resetting freehand ranges when freeHandSelectionEnabled is enabled, causing an extra onTimeRangeSelected callback. Also applies to ranges set using select(start, end). (2026.3.7063)
General
- Fixed EventData.sort type to
(string | number)[]in TypeScript definitions. (2026.3.7046) - Fixed templates failing to refresh when reactive parent data changes. Affects
event,cell,rowHeader,timeHeader,corner,columnHeader, andtasktemplates in components that support them. Callingcontrol.update()is no longer required to refresh template content (Vue). (2026.3.7056) - Fixed Vue TypeScript declarations for Scheduler, Calendar, Month, Gantt, Kanban, Navigator and Queue. Supports Vue
extendsandmixinsoptions. (2026.3.7057) - React: Fixed
controlRefTypeScript declarations for Scheduler, Calendar, Month, Gantt, Kanban, Navigator, Queue and Bubble. (2026.3.7057) - Fixed cleanup of React components during redraw and disposal after the corresponding DOM-add handler is removed. Affects
onBeforeEventDomAdd(Calendar, Month, Scheduler),onBeforeCellDomAdd(Month, Scheduler),onBeforeHeaderDomAdd(Calendar),onBeforeRowHeaderDomAdd(Scheduler), andonBeforeTimeHeaderDomAdd(Calendar, Scheduler). (2026.3.7064) - TypeScript: Fixed numeric ID support in Calendar.events.find(), Month.events.find(), Gantt.tasks.find(), Gantt.links.find(),
Gantt.links.findByFromTo(), and Kanban.cards.find(). (2026.3.7066)
DayPilot