{"record":{"id":"0cff9d2f6e0a8d39","repo":"Foundry376/Mailspring","slug":"no-exception-vevent-found-with-recurrence-id-match","errorCode":null,"errorMessage":"No exception VEVENT found with RECURRENCE-ID matching ${recurrenceId}","messagePattern":"No exception VEVENT found with RECURRENCE-ID matching (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"app/src/ics-event-helpers.ts","lineNumber":697,"sourceCode":"    if (rid) {\n      const ridStr =\n        typeof rid === 'string'\n          ? rid\n          : typeof (rid as any).toString === 'function'\n            ? (rid as any).toString()\n            : String(rid);\n      if (\n        ridStr === recurrenceId ||\n        ridStr.replace(/[^0-9TZ]/g, '') === recurrenceId.replace(/[^0-9TZ]/g, '')\n      ) {\n        exceptionVevent = vevent;\n        break;\n      }\n    }\n  }\n\n  if (!exceptionVevent) {\n    throw new Error(`No exception VEVENT found with RECURRENCE-ID matching ${recurrenceId}`);\n  }\n\n  const exceptionICALEvent = new ical.Event(exceptionVevent);\n\n  if (edits.summary !== undefined) {\n    exceptionICALEvent.summary = edits.summary;\n  }\n  if (edits.description !== undefined) {\n    exceptionICALEvent.description = edits.description;\n  }\n  if (edits.location !== undefined) {\n    exceptionICALEvent.location = edits.location;\n  }\n  if (edits.attendees !== undefined) {\n    exceptionVevent.removeAllProperties('attendee');\n    for (const attendee of edits.attendees) {\n      const prop = exceptionVevent.addProperty('attendee' as any);\n      prop.setValue(`mailto:${attendee.email}`);","sourceCodeStart":679,"sourceCodeEnd":715,"githubUrl":"https://github.com/Foundry376/Mailspring/blob/648c685d602ece6bb00c22534b8734de6ac644b3/app/src/ics-event-helpers.ts#L679-L715","documentation":"Guard in applyEditsToException: no sub-event in the master ICS carries a RECURRENCE-ID equal (or equal after stripping non-alphanumerics/TZ) to the requested recurrenceId, so the exception instance to edit cannot be located. Typically a mismatch between the stored recurrence id (timezone formatting) and the one derived from the calendar UI.","triggerScenarios":"Thrown at app/src/ics-event-helpers.ts:697 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Use the RECURRENCE-ID exactly as it appears in the master ICS when identifying the occurrence","If the exception hasn't been created yet, create it (STATUS/SUMMARY edit on the occurrence) before applying edits","Normalize timezone designators on both sides when comparing recurrence ids"],"exampleFix":null,"handlingStrategy":"validation","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"}