ICS Is 25 Years Old. Here’s Why I Built Synara to Replace It for Developers
If you’ve ever tried to send calendar invites or event updates from your app, you’ve probably discovered the same thing I did: ICS is really old, inconsistent, and every provider interprets it differently.
Google, Microsoft, and Apple all parse ICS with their own quirks.
That means:
Updates get ignored or duplicated
Recurring rules behave differently
RSVPs are unreliable across clients
Debugging is basically trial and error
And even small changes can break user trust
After dealing with this long enough, I realised the real issue isn’t how we send events. It’s the format underneath everything.
So I built ACE, a modern JSON event envelope for JSCalendar, designed to remove ICS ambiguity entirely. And Synara is the service layer on top of it: a clean, predictable event and invite API that keeps Google and Outlook in sync without hacks.
Synara handles:
Event creation
Invites
Updates
ICS fallback for legacy clients
Webhooks for attendee changes
Your app makes one API call, and Synara keeps calendars in sync reliably.
I decided to share this on PH because I'm genuinely interested in how other developers have handled calendar invites and event updates:
Have you run into ICS inconsistencies?
Did you end up writing your own parsing or syncing logic?
What was the worst bug or behaviour you hit?
If you could redesign this layer today, what would you want?
I built Synara out of personal frustration, but I want to know what problems you've encountered or still encounter. If you’ve got experience with ICS, scheduling tools, or calendar APIs, I’d love to hear your thoughts and/or feedback.

Replies
Synara
Looking forward to hearing from you all and getting some feedback!