Release date: October 8, 2026
Features
Infinite scrolling supports
Automode: It automatically sizes the timeline, shift distance, and edge margin for the current viewport and time scale. [demo]New resource tree expand/collapse animation implementation: Smoother motion, improved performance, configurable timing, and optional detection of the reduced-motion system preference for improved accessibility. [demo]
Gantt progressive time-header rendering: Enabled by default, with configurable rendering margin, offscreen cache size and scroll delay.
Scheduler progressive time-header rendering: Enabled by default, to reduce initialization time and DOM usage on long timelines, including headers with custom React or Vue content. In most cases, this allows replacing infinite scrolling mode with a pre-loaded long timeline, in combination with dynamic event loading. [demo]
Floating event labels support custom React, Vue, and DOM elements: The framework components defined for events are displayed in floating event labels automatically.
Improvements
Scheduler
Infinite-scrolling demo: Updated with a configuration toolbar, API links, and scroll actions below the Scheduler. (2026.4.7072)
DayPilot.Scheduler.infiniteScrollingEnabled:"Auto"value supported. (2026.4.7072)Add
treeAnimationDuration, accepting milliseconds or"Auto"(default). Automatic duration adjusts to content height within 240–550 ms. (2026.4.7077)Resource tree animation demo: Test live animation, duration, and easing controls and resource groups of different sizes. (2026.4.7077)
Add
treeAnimationEasing, supporting"standard"(default), CSS easing keywords, and customcubic-bezier()values. (2026.4.7077)Add
"Auto"totreeAnimationto respect the system reduced-motion preference. The default remainstrue. (2026.4.7077)Optimization of Scheduler event loading: Automatic fast placement for rows with many non-overlapping events, speeding up loading of large datasets. (2026.4.7078)
Optimization of Scheduler row header width auto-fit: Improved rendering performance of row header auto-fit (especially for a large number of rows and row header columns). (2026.4.7079)
Add
progressiveTimeHeaderRendering,progressiveTimeHeaderRenderingMargin,progressiveTimeHeaderRenderingCacheSizeandscrollDelayTimeHeadersconfiguration properties. (2026.4.7080)Speed up time-header lookup and floating-label updates. (2026.4.7080)
Optimization of long Scheduler timelines: Reduce timeline initialization overhead by avoiding redundant date-to-string conversions and hourly boundary calculations. (2026.4.7080)
Keep date labels visible while React time-header components mount during scrolling. (2026.4.7080)
Progressive Time Headers demo: Timeline presets up to ten years, plain/rich/interactive header content, animated navigation and an initialization-time readout. (2026.4.7080)
Speed up cached time-to-pixel lookups using numeric cache keys. (2026.4.7080)
Add read-only
args.invalidtoonEventMovingto report an invalid move for the primary event or any event in a multi-move operation. (2026.4.7083)Optimization of Scheduler scrolling: Reuse floating event content and limit floating labels to visible rows, preserving content state during scrolling. (2026.4.7086)
Gantt
Add
treeAnimationEasing, supporting"standard"(default), CSS easing keywords, and customcubic-bezier()values. (2026.4.7077)Add
"Auto"totreeAnimationto respect the system’s reduced-motion preference. The default remainstrue. (2026.4.7077)Add
treeAnimationDuration, accepting milliseconds or"Auto"(default). Automatic duration adjusts to content height within 240–550 ms. (2026.4.7077)Add
progressiveTimeHeaderRendering,progressiveTimeHeaderRenderingMargin,progressiveTimeHeaderRenderingCacheSizeandscrollDelayTimeHeaders. Progressive rendering invokesonBeforeTimeHeaderRenderon demand; setprogressiveTimeHeaderRenderingtofalsefor eager behavior. (2026.4.7080)
General
Optimization of large grids: Reduce
DayPilot.Dateallocation overhead and accelerate timestamp access across all components. (2026.4.7080)Improve HTML escaping performance by avoiding DOM allocation for strings that need no escaping. (2026.4.7080)
Fixes
Scheduler
Fixed
update()throwing an error when called without options afterscrollTo()(Angular). (2026.4.7069)Fixed an error when
dispose()is called while row-header scroll synchronization is pending (core). (2026.4.7070)Fixed errors when
dispose()is called while deferredsetScrollX()orsetScrollY()requests are pending (Angular). (2026.4.7070)Fixed an error when
dispose()is called while ascrollToResource()request is pending (core). (2026.4.7070)Fixed errors when
dispose()is called during animatedscrollTo()scrolling (core). (2026.4.7070)Fixed zero values of
scrollXandscrollYbeing ignored when passed toupdate()(core). (2026.4.7071)Fixed pending
setScrollX()andsetScrollY()requests being lost during an unrelated update of a plain config object (Angular). (2026.4.7071)Validate
days,infiniteScrollingStepDays, andinfiniteScrollingMarginto prevent repeated infinite-scrolling timeline shifts without progress. (2026.4.7072)Fix an error when event resizing triggers autoscroll and an infinite-scrolling timeline shift. (2026.4.7072)
Preserve the alignment requested by
scrollTo()when navigating outside the current infinite-scrolling timeline. (2026.4.7072)Preserve the visible date when an infinite-scrolling timeline shifts with
scale:"Week"and partial cells. (2026.4.7072)Ignore pending
onScrollandonScrollEnddynamic-loading completions (args.loaded()) afterdispose(). (2026.4.7072)Prevent older dynamic-loading responses from overwriting newer accepted responses in
onScrollandonScrollEndwhenargs.clearEventsistrue, for both finite and infinite timelines. (2026.4.7072)Fix automatic column widths remaining stale when the container width changes before the first resize notification. [demo] (2026.4.7077)
Fix automatic column widths after expanding or collapsing resource groups when the vertical scrollbar appears or disappears. (2026.4.7077)
Fix an exception when dropping an external row onto an empty Scheduler or one containing only the new row placeholder. [demo] (2026.4.7079)
Fix incorrect ranges and exceptions during touch selection on timelines with variable cell widths. (2026.4.7079)
Preserve custom DOM, React and Vue time-header content and component state while labels float, and correctly clean up React roots. (2026.4.7080)
Fix replacement data passed to
rows.update()being lost on refresh and subsequent row lookups returning outdated data. (2026.4.7082)Fix
events.forRange()returning incorrect events after event removal. (2026.4.7082)Fix stale event range queries and link endpoints after
rows.update(). (2026.4.7082)Prevent completed Angular scroll requests from overriding later scrolling commands. (2026.4.7083)
Prevent delayed row-header synchronization from overwriting a newer grid scroll position. (2026.4.7083)
Preserve row-relative dates and business duration when moving events between rows with different start dates or custom end dates. (2026.4.7083)
Apply
onBeforeCellRenderbusiness flags consistently when reading cells outside the viewport, including business-time moving androw.cells.forRange(). (2026.4.7083)Reject business-time moves with zero source business duration or no usable target business cells, displaying a forbidden shadow without adding an explanation label. (2026.4.7083)
Preserve event grab offsets and partial-cell start offsets when
eventMoveSkipNonBusinessis enabled and the event is in the first row. [demo] (2026.4.7083)Cancel stale event-rendering timers after disposal, scrolling, or a full update. (2026.4.7083)
Cancel pending touch actions when the Scheduler is disposed and preserve gestures in other instances. (2026.4.7083)
Use the correct business calendar and shadow layer when moving events in or between frozen and regular rows, including multi-move operations. (2026.4.7083)
Reject business-time moves when the target cannot preserve the original business duration within its row and timeline bounds. (2026.4.7083)
Keep time header text vertically aligned when floating starts or ends. (2026.4.7086)
Preserve event padding and vertical alignment in floating labels, with an 8px minimum leading inset for the arrow. (2026.4.7086)
Apply the resolved contrasting font color to floating event text. (2026.4.7086)
Preserve event-relative positions and interaction for non-floating active areas while event text floats. (2026.4.7086)
Update bundled Scheduler themes from the current Theme Designer template, including RTL floating labels. (2026.4.7086)
Honor
scrollDelayFloatsfor existing labels while initializing newly rendered event and header labels immediately. (2026.4.7086)
Gantt
Fixed errors when
dispose()is called whilescrollToRow()orscrollToTask()requests are pending (core). (2026.4.7070)
Calendar
Fix an exception when calling
selectTimeRange()before the first pointer interaction. (2026.4.7079)
Queue
Fix event list corruption when tapping the Queue after reordering events using touch. (2026.4.7079)
Fix
events.remove()ignoring numeric event ID0and throwing when the requested ID does not exist. (2026.4.7081)Fix
multiselect.get()returningundefinedinstead of the selectedDayPilot.Event. (2026.4.7086)
Kanban
Fix omitted card text rendering as
undefinedinstead of empty content. (2026.4.7081)
General
Fix
DayPilot.DatePickerthrowing when a valid date is typed before the popup is opened for the first time. (2026.4.7081)Include the original request in Calendar, Month, Scheduler and Gantt loading error callbacks for empty responses. (2026.4.7086)
Fix Calendar, Month, Scheduler and Gantt collection loaders silently ignoring non-array JSON responses. (2026.4.7086)
Fix
DayPilot.Datereturning incorrect results when the same timezone-bearing string is parsed in both local and UTC modes. (2026.4.7086)Route malformed JSON responses through
DayPilot.ajax()error callbacks and rejectDayPilot.Httppromises instead of leaving them pending. (2026.4.7086)Fix
DayPilot.Dateaccepting invalid strings such asconstructorand__proto__instead of reporting a parsing error. (2026.4.7086)
API Changes
Scheduler
With progressive rendering enabled, prepare header content and invoke
onBeforeTimeHeaderRenderwhen a header is first needed for rendering or export. SetprogressiveTimeHeaderRenderingtofalseto restore eager rendering and callback timing. (2026.4.7080)
DayPilot