{"record":{"id":"098915ca4c403444","repo":"Foundry376/Mailspring","slug":"eventheader-could-not-parse-ics-data-from-calenda","errorCode":null,"errorMessage":"EventHeader: Could not parse ICS data from calendar event: ${e.message}","messagePattern":"EventHeader: Could not parse ICS data from calendar event: (.+?)","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"app/internal_packages/events/lib/event-header.tsx","lineNumber":108,"sourceCode":"        icsEvent: event,\n        icsMethod: normalizedMethod as 'reply' | 'request' | 'cancel',\n        icsOriginalData: data.toString(),\n      });\n\n      this._subscription = Rx.Observable.fromQuery(\n        DatabaseStore.findBy<Event>(Event, {\n          icsuid: event.uid,\n          accountId: message.accountId,\n        })\n      ).subscribe((calEvent) => {\n        if (!this._mounted || !calEvent) return;\n        try {\n          this.setState({\n            icsEvent: CalendarUtils.parseICSString(calEvent.ics).event,\n            icsOriginalData: calEvent.ics,\n          });\n        } catch (e) {\n          console.warn(`EventHeader: Could not parse ICS data from calendar event: ${e.message}`);\n        }\n      });\n    });\n  }\n\n  componentDidUpdate(prevProps: EventHeaderProps, prevState: EventHeaderState) {\n    if (prevState.inflight) {\n      this.setState({ inflight: undefined });\n    }\n  }\n\n  render() {\n    const { icsEvent, icsMethod } = this.state;\n    if (!icsEvent || !icsEvent.startDate) {\n      return null;\n    }\n\n    // Workaround to convert calendar invites sent out from Microsoft calendars to IANA timezones","sourceCodeStart":90,"sourceCodeEnd":126,"githubUrl":"https://github.com/Foundry376/Mailspring/blob/648c685d602ece6bb00c22534b8734de6ac644b3/app/internal_packages/events/lib/event-header.tsx#L90-L126","documentation":"Warning in EventHeader's query subscription: a matching Event row was found in the database and its stored ics re-parsed, but parsing threw — the synced calendar event's ICS is corrupt or in a format the parser rejects. The component keeps the last good icsEvent state instead of crashing.","triggerScenarios":"Thrown at app/internal_packages/events/lib/event-header.tsx:108 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Re-sync the calendar account so a fresh ICS is stored for the event","If persistent, the event was created with a non-standard ICS flavor; delete and recreate it"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"648c685d602ece6bb00c22534b8734de6ac644b3","analyzedAt":"2026-09-03T02:00:24.311Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-10T07:17:11.731Z"}