New in v9: TypeScript, no antd, a brand-new Calendar.Read the upgrade guide →

Crafting the Future of Calendars & Scheduling

12Views built in
3Themes, your tokens
0UI library dependencies

A free, open-source React calendar and resource timeline: month, week, day, list and year views, drag and drop, themes and TypeScript, with nothing to unlearn.

terminal
bun add react-big-schedule
—
npm downloads / month
—
GitHub stars
—
latest on npm
MIT
open-source licence

Live demo

Drag it, theme it, make it yours

Everything on this page is the real library. Pick a theme and palette in the navbar, and change the corner radius.

October 2026

Drag, resize, click or select something

Build with it

From install to calendar in minutes

Each feature is a prop or a function. Here is the code for all of them.

Every calendar view

Month, week, day, list and three year layouts from one component. Switch with the built-in toolbar or drive it yourself.

tsx
import { Calendar } from 'react-big-schedule';
import 'react-big-schedule/dist/css/style.css';

<Calendar
  events={events}
  initialView="dayGridMonth"
  views={['dayGridMonth', 'timeGridWeek', 'listWeek', 'multiMonthYear']}
  editable
  selectable
  onEventDrop={({ event }) => save(event)}
/>

Free resource timeline

Rows are people, rooms or machines. Drag to move across resources, resize, and group. A paid feature elsewhere.

tsx
import { Scheduler, SchedulerData, ViewType, wrapperFun } from 'react-big-schedule';

const DndScheduler = wrapperFun(Scheduler);
const data = new SchedulerData(new Date(), ViewType.Week);
data.setResources(resources);
data.setEvents(events);

<DndScheduler schedulerData={data} prevClick={prev} nextClick={next}
  onViewChange={change} onSelectDate={select} />

Event sources

Pass an array, an async function or a JSON feed. Requests carry start and end, and stale ones are cancelled as you navigate.

tsx
<Calendar
  events={async ({ start, end }, signal) => {
    const res = await fetch(`/api/events?start=${start.format()}&end=${end.format()}`, { signal });
    return res.json();
  }}
  eventSources={[{ url: '/holidays.json', color: '#6fa088' }]}
  onLoading={setLoading}
/>

Recurring events

RFC 5545 RRULE strings or a simple weekly form, expanded only for the visible range, with exceptions.

tsx
const events = [
  { id: 1, title: 'Standup', rrule: 'DTSTART:20261012T090000\nRRULE:FREQ=WEEKLY;BYDAY=MO,WE,FR',
    exceptions: ['2026-10-14'] },
  { id: 2, title: 'Office hours', recurrence: { daysOfWeek: [2, 4], startTime: '14:00', endTime: '15:00' } },
];

Time zones

Show everything in local time, UTC or any IANA zone. Callbacks, the today highlight and the now line follow the zone.

tsx
<Calendar events={events} timeZone="Asia/Kolkata" nowIndicator businessHours />

Themes in CSS variables

Default (transparent, follows your page), dark and light out of the box. Re-skin by overriding a few variables, no UI library, no build step.

tsx
<Calendar theme="dark" events={events} />

.my-app {
  --rbs-accent: #e8814f;
  --rbs-radius: 10px;
  --rbs-surface: #101010;
}

The details

The things you (or your LLM) would have missed

We are honest about what ships today and what is coming.

Built in · audit planned

Screen reader ready

ARIA grids, roving focus and full keyboard navigation are built in. A manual NVDA, JAWS and VoiceOver audit is next.

Planned

Heavy loads, odd shapes

Events are normalised once and bucketed per day, with memoised cells. Virtual rendering for 10,000 events on one day is on the roadmap.

Built in · free

Print (on paper)

Yes, people still print calendars. A media-aware print stylesheet ships in the free core: no toolbar, no ink-wasting backgrounds, no clipped rows.

Planned

The finishing touch

Pointer-based drag and drop works on touch screens today. Long-press tuning and competing scroll panes get a dedicated pass next.

Compare

How it stacks up

What other libraries offer, what we ship today, and what is still coming.

FeatureReact Big ScheduleFullCalendarreact-big-calendarBryntum Scheduler
Month, week and day views✓ Free✓ Free✓ FreePaid
List / agenda view✓ Free✓ Free✓ Free—
Year views (grid, stack, continuous)✓ Free✓ Free——
Resource timeline✓ FreePaid—Paid
Vertical resource view✓ FreePaidPartialPaid
Drag, resize and select✓ Free✓ Free✓ FreePaid
Recurring events (RRULE)✓ Free✓ Free—Paid
Time zones✓ Free✓ Free—Paid
Event feeds (JSON / function)✓ Free✓ Free—Paid
Themes, dark mode, CSS variables✓ Free✓ FreePartialPaid
Print styles✓ FreePaid—Paid
Strict TypeScript source✓ Free✓ Free—Paid
iCal / CSV exportPro add-onPartial—Paid
Undo / redo historyPro add-on——Paid
Conflict / availability enginePro add-on——Paid
Virtual rendering (10k+ events)Planned✓ Free—Paid
Touch long-press tuningPlanned✓ FreePartialPaid
Screen-reader audit (NVDA / JAWS / VoiceOver)Planned✓ FreePartialPaid
Gantt dependenciesPlanned——Paid

“Paid” means the feature needs a commercial licence or tier; “Planned” is on our roadmap and not shipped yet. Competitor columns are summarised from each vendor’s public documentation and pricing pages and can change; please check them before you decide.

Roadmap

What we shipped and what is next

Shipped in v9

  • ›Calendar: month, week, day, list, year
  • ›Free resource timeline and vertical view
  • ›Event sources, recurrence, time zones
  • ›Themes, dark mode, print styles
  • ›TypeScript source, no UI library

Next

  • ›Virtual rendering for 10k+ events
  • ›Touch long-press and scroll-pane tuning
  • ›Screen-reader audit and fixes
  • ›“+N more” popover in time grid
  • ›Resource columns in <Calendar>

Pro (coming soon)

  • ›iCal and CSV export, PDF export
  • ›Undo / redo and conflict engine
  • ›Nested resource tree, Gantt dependencies
  • ›Google and Outlook sync
  • ›Priority support

Free forever at the core. Pro when you need more.

The MIT-licensed core includes the resource timeline. Pro adds export, undo and redo, a conflict engine and priority support.