@Ethsim2 This would be a huge feature, and I’ve been digging into how feasible it is now that Discourse is switching to FullCalendar.
@sam linked directly to fullcalendar.io recently, and it turns out FullCalendar now has first-class support for .ics
feeds via their official plugin system — so the heavy lifting is already done by the library.
Proposal: Enable .ics
Feed Sync Using FullCalendar’s Native Support
With the upcoming FullCalendar v6 integration into Discourse, the groundwork is in place to support this feature natively.
FullCalendar’s @fullcalendar/icalendar
plugin (with ical.js
under the hood) allows you to load public .ics
feeds like so:
new Calendar(calendarEl, {
plugins: [dayGridPlugin, iCalendarPlugin],
events: {
url: 'https://example.com/my-calendar.ics',
format: 'ics'
}
});
That’s all it takes to render a remote iCal feed into the calendar UI — no custom parsing, just plug-and-play.
Suggested Implementation Steps for Discourse
- Add
@fullcalendar/icalendar
andical.js
to the plugin (once FullCalendar v6 is fully landed). - Add an admin/plugin setting (or per-category option) for inputting one or more
.ics
URLs. - On the client side, render the feed into the calendar view.
- (Optional) Implement server-side syncing that:
- Periodically fetches the feed
- Parses new/updated events
- Creates or updates associated Discourse topics
Sync Frequency
It’s important to note that FullCalendar’s default .ics
handling only fetches the feed on initial calendar load in the browser. That means:
- There’s no daily or automatic refresh.
- Users will see a stale copy unless they reload or manually trigger a refresh.
- There is no persistence — if a user navigates away, the feed data is gone.
To make this truly useful, Discourse would ideally:
- Run a daily (or scheduled) Sidekiq job that fetches the feed server-side.
- Cache the parsed events for consistent rendering across users.
- Optionally link events to topics or create new ones for full integration.
This would allow proper sync behavior and revive a key feature previously handled by Angus’s plugin — but using a clean and maintainable foundation.
Benefits
- Seamlessly integrates
.ics
feeds from Google Calendar, Outlook, iCal, etc. - Makes Discourse a calendar consumer, not just an exporter.
- Great for community forums, student groups, civic events, etc.
- Built entirely on supported FullCalendar features — minimal custom JS needed.
Would love to see this land now that the calendar plugin is getting attention again. Happy to help test it or contribute to a proof-of-concept.