Each time range is represented by an instance of TimeSpan
And checking the TimeSpan model here https://www.bryntum.com/docs/scheduler/api/Scheduler/model/TimeSpan
You will check that you need to have a startDate set, to achieve what you want, you can set a startDate earlier than today, and with that, you will have the recurrent time range for earlier periods.
let resourceTimeRange = {
id: id,
resourceId: resourceId,
// set the startDate from a year than the "day" object
startDate: new Date((day.getFullYear() - 1), day.getMonth(), day.getDate(), startHour, startMinute),
duration: 15,
durationUnit: "minutes",
style: 'background: rgba(239, 83, 80, .5)',
recurrenceRule : 'FREQ=WEEKLY'
};