Release date: October 9, 2026
Improvements
Scheduler
- Render Scheduler and Gantt time headers progressively by default to reduce DOM usage on long timelines. Set
progressiveTimeHeaderRendering=false for eager client rendering. (8617) - 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). (8617)
- Curved StartToFinish links now use top/bottom target attachment when the source start matches the target finish, mirroring the corresponding FinishToStart behavior. (8617)
- Speed up cached time-to-pixel lookups using numeric cache keys. (8617)
- Improve automatic event-rendering and scroll-delay selection, including disabling progressive event rendering when server-side dynamic loading is enabled. (8617)
- Curved FinishToFinish links now mirror StartToStart geometry. The loop proportions and attachment angles are more consistent. (8617)
- Optimization of Scheduler event loading: Automatic fast placement for rows with many non-overlapping events, speeding up loading of large datasets. (8617)
- Improve resource-tree expand/collapse animation with smoother motion and improved performance. (8617)
- Speed up time-header lookup and floating-label updates. (8617)
- Optimization of long Scheduler timelines: Reduce timeline initialization overhead by avoiding redundant date-to-string conversions and hourly boundary calculations. (8617)
- Add read-only
args.invalidto the client-sideonEventMovingcallback to report an invalid primary or multi-event move. (8617) - Improve floating event-label rendering by reusing content and limiting updates to visible rows. (8617)
General
- Improve rendering of right-angled event links using SVG in Scheduler and Gantt. (8617)
- Improve HTML escaping performance by avoiding DOM allocation for strings that need no escaping. (8617)
- Optimization of large grids: Reduce
DayPilot.Dateallocation overhead and accelerate timestamp access across all components. (8617)
Fixes
Calendar
- Fix an exception when calling
selectTimeRange()before the first pointer interaction. (8617)
Gantt
- Fixed errors when dispose() is called while
scrollToRow()orscrollToTask()requests are pending (core). (8617)
Month
- Fixed events.remove() deleting an unrelated event when called with an event that is no longer in events.list (Month). (8617)
Navigator
- Preserve Navigator freehand selection ranges and avoid an extra client selection callback during update(). (8617)
Scheduler
- Fix incorrect ranges and exceptions during touch selection on timelines with variable cell widths. (8617)
- Fix automatic column widths remaining stale when the container width changes before the first resize notification. (8617)
- Fix stale event range queries and link endpoints after
rows.update(). (8617) - Fix replacement data passed to
rows.update()being lost on refresh and subsequent row lookups returning outdated data. (8617) - Fixed an error when dispose() is called while a
scrollToResource()request is pending (core). (8617) - Fix
events.forRange()returning incorrect events after event removal. (8617) - Fix client-side resources with numeric ID 0 in rows.find(), rows.remove() and event rendering. (8617)
- Fix a one-pixel vertical row-header misalignment with time headers at the top. (8617)
- Fixed an error when dispose() is called while row-header scroll synchronization is pending (core). (8617)
- Fixed errors when dispose() is called during animated
scrollTo()scrolling (core). (8617) - Fix automatic column widths after expanding or collapsing resource groups when the vertical scrollbar appears or disappears. (8617)
- Prevent delayed row-header synchronization from overwriting a newer grid scroll position. (8617)
- Reject business-time moves with zero source business duration or no usable target business cells, displaying a forbidden shadow without adding an explanation label. (8617)
- Fixed zero values of
scrollXandscrollYbeing ignored when passed to update() (core). (8617) - Fix client-side events.remove() failing to remove an event with numeric ID 0. (8617)
- Apply the resolved contrasting font color to floating event text. (8617)
- Preserve event grab offsets and partial-cell start offsets when
eventMoveSkipNonBusinessis enabled and the event is in the first row. (8617) - Preserve event-relative positions and interaction for non-floating active areas while event text floats. (8617)
- Cancel pending touch actions when the Scheduler is disposed and preserve gestures in other instances. (8617)
- Keep time header text vertically aligned when floating starts or ends. (8617)
- Cancel stale event-rendering timers after disposal, scrolling, or a full update. (8617)
- Honor
scrollDelayFloatsfor existing labels while initializing newly rendered event and header labels immediately. (8617) - Reject business-time moves when the target cannot preserve the original business duration within its row and timeline bounds. (8617)
- Preserve event padding and vertical alignment in floating labels. (8617)
General
- Fix
DayPilot.DatePickerthrowing when a valid date is typed before the popup is opened for the first time. (8617) - Route malformed JSON responses through DayPilot.ajax() error callbacks and reject
DayPilot.Httppromises instead of leaving them pending. (8617) - Fix
DayPilot.Dateaccepting invalid strings such as constructor and __proto__ instead of reporting a parsing error. (8617) - Fix
DayPilot.Datereturning incorrect results when the same timezone-bearing string is parsed in both local and UTC modes. (8617)
API Changes
Scheduler
- Scheduler default settings changed:
dynamicEventRendering="Auto",dynamicEventRenderingMargin=200,dynamicEventRenderingCacheSweeping=true,scrollDelayDynamic=150 andscrollDelayEvents="Auto". (8617)
General
- Scheduler and Gantt links use unified *_link_svg_* CSS classes. Custom link themes using previous div-based or *_link_curved_* selectors need compatible SVG styles. (8617)
DayPilot