I just had an issue with the calendar on MacOS (Mojave) not responding right after opening the window. The calendars are synced over iCloud to an iPhone and an iPad. I had no issues on the iPad, the iPhone however would freeze occasionally while adding new events in the calendar.
I saw other symptons on MacOS in the activity monitor: the processes CalNCService, suggestd, AppleSpell and CalendarAgent were at 100% CPU (on a core each).
I deleted the cache files, calendar plists, etc and nothing helped. When I disabled the iCloud calendar sync, the issue stopped and the calendar app worked! So the issue was clearly related to some data in the iCloud calendar.
I installed Mozilla Thunderbird with the Lightning Calendar Add-on and connected it with iCal/ICS to iCloud to see what’s going on. To get access to an iCloud calendar with iCal/ICS it has to be enabled on the specific calendar. The easiest way to do this is on icloud.com: click the sharing icon on the calendar, select ‘public calendar’ and copy the displayed URL.
Open the calendar in Thunderbird and add a new one, select ‘network’, then iCalendar (ICS) and paste the iCloud URL. Now you can search for corrupted event entries and delete them. In my case I had an event with a corrupted date, so it displayed it from 1974 to 2050! But I couldn’t delete it, as iCloud had an issue with that entry, too.
The solution was to export the whole calendar to an ICS file in Thunderbird (make sure you export to an ICS file and not a html), then import it again into a local calendar (still in Thunderbird). Locally I was able to delete the event. I then re-exported it again to have a good version of the calendar.
Now I deleted the calendar on icloud.com and waited until it was gone on all my devices (about 10 minutes). As the last step I imported the cleaned ICS file into the MacOS calendar and let it sync with iCloud and all devices.