Migrating from FullCalendar
z-cal is not a drop-in FullCalendar replacement. Keep a translation layer if your application already exposes its own calendar API. Check the installed version's declarations rather than forwarding all existing options or callback assumptions unchanged.
Check units and data ownership first
Numeric z-cal durations are seconds. Numeric date inputs are epoch milliseconds. These are
different input types. Convert duration values coming from a millisecond-based API: 30 minutes is
1800 seconds, not 1800000. Prefer explicit duration strings or objects at the integration boundary:
Callback event dates are Temporal values; all-day ranges have exclusive ends. updateEvent replaces
the event input and requires id and start. Choose whether React state, the calendar instance, or
remote source results own event data. See event semantics and React data ownership.
Integration checklist
Current public API gaps
These capabilities are not provided by the current public API; do not pass similarly named options and assume they work. This list describes compatibility limits, not committed future features.
Recurring events
EventInput.recurrence.rrule accepts the RRULE text that rrule.js, FullCalendar's rrule plugin, and
most backends store, including DTSTART and EXDATE lines. Add the Recurrence plugin. The
event start and end replace dtstart and duration; see recurring events.
Avoid treating lower-level state access as a stable substitute for an absent application-facing
option. Report concrete integration requirements with a minimal reproduction so they can be evaluated
against the public API.