Release date: October 9, 2026

Features

  • The Scheduler onAfterEventRender event 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.Date timestamp access and allocation overhead. (883)

Fixes

Scheduler

  • Fixed an error when calling scrollToResource() (core). (873)
  • Fixed errors when dispose() is called while deferred setScrollX() or setScrollY() requests are pending (Angular). (873)
  • Fixed an error when dispose() is called while a scrollToResource() request is pending (core). (873)
  • Fixed zero values of scrollX and scrollY being ignored when passed to update() (core). (874)
  • Fixed pending setScrollX() and setScrollY() 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 scrollDelayFloats when 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.Date accepting invalid strings that match inherited property names, such as constructor and __proto__. (875)
  • Fix incorrect DayPilot.Date results when parsing the same ISO string with different readLocal settings. (875)
  • Route malformed JSON responses through DayPilot.ajax() error callbacks and reject DayPilot.Http promises. (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.Date objects. (881)
  • Fix Angular ESM packages throwing "DayPilot is not defined" when bundled with esbuild. (882)