From 6b9b0f8c5fbfcc0a123e6063773304ad2245b46c Mon Sep 17 00:00:00 2001 From: Kristjan ESPERANTO <35647502+KristjanESPERANTO@users.noreply.github.com> Date: Wed, 6 May 2026 19:39:32 +0200 Subject: [PATCH] perf(calendar): use async ICS parsing to avoid blocking event loop Replace synchronous ical.parseICS() with ical.async.parseICS(), which processes data in batches via setImmediate(). Prevents the Node.js event loop from freezing on large calendars (1000+ events) on low-end hardware. Ref #4103 --- defaultmodules/calendar/calendarfetcher.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/defaultmodules/calendar/calendarfetcher.js b/defaultmodules/calendar/calendarfetcher.js index 809b924cf1..e746628512 100644 --- a/defaultmodules/calendar/calendarfetcher.js +++ b/defaultmodules/calendar/calendarfetcher.js @@ -52,7 +52,7 @@ class CalendarFetcher { async #handleResponse (response) { try { const responseData = await response.text(); - const parsed = ical.parseICS(responseData); + const parsed = await ical.async.parseICS(responseData); Log.debug(`Parsed iCal data from ${this.url} with ${Object.keys(parsed).length} entries.`);