You can use the rrule property on your event model to define its repeating pattern using the RFC 5545 RRULE string format:
const event = {
// ...other properties
rrule: 'FREQ=WEEKLY;INTERVAL=2;BYDAY=TH',
};
The EventCalendarPremium and the EventTimelinePremium expand recurring events only for the visible range, keeps the original duration and handles all-day and multi-day spans.
Out of office
Alice's Birthday
Running
Team Retrospective
Evening Gym Class
Running
Remote work
Daily Standup
Dental Checkup
Daily Standup
1-on-1 with Abigail
Client Call
Evening Gym Class
Daily Standup
Weekly planning
Dinner with Friends
Frequency and interval
The RRULE string is composed of semicolon-separated KEY=VALUE pairs.
The two fundamental properties are:
FREQ— the base frequency of the rule:DAILY,WEEKLY,MONTHLY, orYEARLY.INTERVAL(optional, defaults to1) — at which intervals the recurrence repeats. For example, within aDAILYrule, a value of8means every eight days.
Daily frequency
No extra property is required:
// Every day
rrule: 'FREQ=DAILY';
// Every two days
rrule: 'FREQ=DAILY;INTERVAL=2';
Weekly frequency
Use the BYDAY property with plain weekday codes (no ordinal) to define the day(s) of the week on which the event should be applied:
// Every week on Monday
rrule: 'FREQ=WEEKLY;BYDAY=MO';
// Every two weeks on Monday, Wednesday and Friday
rrule: 'FREQ=WEEKLY;INTERVAL=2;BYDAY=MO,WE,FR';
Monthly frequency
Use either the BYMONTHDAY or the BYDAY property (both can't be defined together):
Use the
BYMONTHDAYproperty with a single day number to define the day of the month on which the event should be applied:// Every month on the 15th rrule: 'FREQ=MONTHLY;BYMONTHDAY=15'; // Every two months on the 15th rrule: 'FREQ=MONTHLY;INTERVAL=2;BYMONTHDAY=15';Use the
BYDAYproperty with a single ordinal entry (2TUrepresents 2nd Tuesday,-1FRrepresents last Friday, etc):// Second Tuesday of every month rrule: 'FREQ=MONTHLY;BYDAY=2TU'; // Last Friday of every month rrule: 'FREQ=MONTHLY;BYDAY=-1FR'; // First Monday of every two months rrule: 'FREQ=MONTHLY;INTERVAL=2;BYDAY=1MO';
Yearly frequency
No extra property is required:
// Every year on the event's start date (same month and day)
rrule: 'FREQ=YEARLY';
// Every two years on the event's start date (same month and day)
rrule: 'FREQ=YEARLY;INTERVAL=2';
End boundary
By default, the event keeps recurring without ever ending.
Use either the COUNT or the UNTIL property if you want to put an end boundary to your event (both can't be defined together):
Use the
COUNTproperty if you want your event to stop after a given amount of occurrences:// Stop after 5 occurrences rrule: 'FREQ=DAILY;COUNT=5';Use the
UNTILproperty if you want your event to stop at a given date. The date must be in UTC and formatted asYYYYMMDDTHHmmssZ(no dashes or colons):// Until December 31, 2025 at 23:59:59 UTC (inclusive) rrule: 'FREQ=WEEKLY;BYDAY=TU;UNTIL=20251231T235959Z';