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