Foundry376/Mailspring · error

No exception VEVENT found with RECURRENCE-ID matching ${recu

Error message

No exception VEVENT found with RECURRENCE-ID matching ${recurrenceId}

What it means

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.

Source

Thrown at app/src/ics-event-helpers.ts:697

    if (rid) {
      const ridStr =
        typeof rid === 'string'
          ? rid
          : typeof (rid as any).toString === 'function'
            ? (rid as any).toString()
            : String(rid);
      if (
        ridStr === recurrenceId ||
        ridStr.replace(/[^0-9TZ]/g, '') === recurrenceId.replace(/[^0-9TZ]/g, '')
      ) {
        exceptionVevent = vevent;
        break;
      }
    }
  }

  if (!exceptionVevent) {
    throw new Error(`No exception VEVENT found with RECURRENCE-ID matching ${recurrenceId}`);
  }

  const exceptionICALEvent = new ical.Event(exceptionVevent);

  if (edits.summary !== undefined) {
    exceptionICALEvent.summary = edits.summary;
  }
  if (edits.description !== undefined) {
    exceptionICALEvent.description = edits.description;
  }
  if (edits.location !== undefined) {
    exceptionICALEvent.location = edits.location;
  }
  if (edits.attendees !== undefined) {
    exceptionVevent.removeAllProperties('attendee');
    for (const attendee of edits.attendees) {
      const prop = exceptionVevent.addProperty('attendee' as any);
      prop.setValue(`mailto:${attendee.email}`);

View on GitHub (pinned to 648c685d60)

Solutions

  1. Use the RECURRENCE-ID exactly as it appears in the master ICS when identifying the occurrence
  2. If the exception hasn't been created yet, create it (STATUS/SUMMARY edit on the occurrence) before applying edits
  3. Normalize timezone designators on both sides when comparing recurrence ids
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at app/src/ics-event-helpers.ts:697 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of Foundry376/Mailspring@648c685d60 (2026-09-03). Data as JSON: /api/errors/0cff9d2f6e0a8d39. Report an issue: GitHub.