Release date: October 9, 2026
Features
- The Scheduler
onAfterEventRenderevent provides access to the rendered event element and its event data [tutorial]
Improvements
Scheduler
- Speed up hourly time-header preparation by skipping redundant date calculations. (883)
- Reduce floating event label rendering work outside the visible viewport. (884)
General
- Speed up plain-text HTML escaping across components. (883)
- Reduce
DayPilot.Datetimestamp access and allocation overhead. (883)
Fixes
Scheduler
- Fixed an error when calling
scrollToResource()(core). (873) - Fixed errors when dispose() is called while deferred
setScrollX()orsetScrollY()requests are pending (Angular). (873) - Fixed an error when dispose() is called while a
scrollToResource()request is pending (core). (873) - Fixed zero values of
scrollXandscrollYbeing ignored when passed to update() (core). (874) - Fixed pending
setScrollX()andsetScrollY()requests being lost during an unrelated update of a plain config object (Angular). (874) - Report non-array event and resource loading responses as errors and include the original request with parsing errors. (876)
- Prevent completed Angular scroll-position requests from overriding subsequent scrolling. (877)
- Prevent delayed row-header scrolling from overwriting a newer grid scroll position. (877)
- Cancel pending touch callbacks on disposal and preserve other instances' touch interactions. (877)
- Preserve time-header label vertical alignment when entering and leaving floating mode, including custom border widths. (879)
- Preserve event padding and vertical alignment in floating labels, including zero padding overrides. (879)
- Preserve interactive HTML content and input state when event labels enter and leave floating mode. (879)
- Preserve custom time-header content, component state and input focus when scrolling, and release floating content correctly during updates and disposal. (879)
- Honor
scrollDelayFloatswhen refreshing existing event labels while initializing newly rendered labels immediately. (879) - Persist replacement row data passed to rows.update() across full refreshes and keep row lookups current. (880)
- Correct the TypeScript rows.each() callback signature to receive a Row and return void. (880)
- Refresh viewport geometry and event rendering when the container width changes immediately after initialization. (881)
Calendar
- Report non-array event and column loading responses as errors and include the original request with parsing errors. (876)
Month
- Report non-array event loading responses as errors and include the original request with parsing errors. (876)
General
- Fix
DayPilot.Dateaccepting invalid strings that match inherited property names, such as constructor and __proto__. (875) - Fix incorrect
DayPilot.Dateresults when parsing the same ISO string with differentreadLocalsettings. (875) - Route malformed JSON responses through DayPilot.ajax() error callbacks and reject
DayPilot.Httppromises. (876) - Fix DatePicker input handling before the first opening and keep typed dates synchronized when the popup is open. (881)
- Reject malformed date and time fields that would create invalid
DayPilot.Dateobjects. (881) - Fix Angular ESM packages throwing "DayPilot is not defined" when bundled with esbuild. (882)
DayPilot