It's important to understand the role of DAVx⁵: DAVx⁵ synchronizes the events between the CalDAV server and the Android Calendar Provider, which is then responsible for processing them internally. For instance, it calculates the instances of recurring events. Finally, a calendar app (like Google Calendar or Samsung S Planner) is used to display and edit the events.
Why doesn't it work?
The most important operations with recurring events and exceptions should work with Android and DAVx⁵, but there are many cases that are not handled by
- the Android Calendar Provider, most importantly:
- only dates between 1902 and 2037 are supported
- first instances are missing when using RDATE
- infinite RRULE + RDATE is not supported
- BYSETPOS is only supported for MONTHLY events, so for instance the rule "yearly, first Friday in August" won't work correctly and events will show up every Friday in August
- Android doesn't support non-tzdata timezones (including Outlook timezones), so there may be differences for such events
- your calendar app (for instance, most calendar apps create a new exception with status "cancelled" when you delete an instance of a recurring event instead of setting an EXDATE),
- the CalDAV server (we have found various conditions where CalDAV servers changed and "repaired" recurring events or rejected some variants of exceptions),
- Web GUIs (many CalDAV services provide Web GUIs, and if you play around, you will experience that many operations don't work correctly even if you don't synchronize with external clients),
- other clients (for instance, Gnome Evolution doesn't handle RDATE, and even with iOS there are problems),
- DAVx⁵ (because nothing is perfect and recurring events are really complicated).
If you experience problems with recurring events, please make sure that the iCalendar files on your CalDAV server are correct before reporting any bugs. Also, there are many cases that are not supported by reasons which are out of DAVx⁵'s scope (see above).
My recurring event is broken! How can I fix it?
If a recurring event or its instances "don't work" anymore, i.e. you can't edit it or its instances anymore, or if there are HTTP errors, try to
- delete the whole event on your Android device and force synchronization.
- Then create it again (if possible, on the server or Web GUI) and edit it as little as possible.
Changing the "master event" of recurring events with exceptions is generally error-prone. When in doubt, create a whole new event and/or change the file name and UID on the server side.