Comparison
How Time compares with FullCalendar and react-big-calendar, as of October 2026.
This page compares Time with two React calendars that many teams already use:
FullCalendar 7.1, through @fullcalendar/react and its premium
plugins, and react-big-calendar 1.20. It's
accurate as of October 2026. Claims about Time come from these docs and the code on main.
Claims about the other two link their sources in the notes at the end of the page; a ✗ without a
note means we found no such feature in their docs or code. If something here is wrong or out of
date, open an issue.
Time is new, and on npm as a release candidate
Time started in August 2026 and has one maintainer. Its packages are on npm as a release candidate for 1.0.0, its first release, and its API can still change before 1.0.0 if the release candidate turns up problems. FullCalendar has been developed since 2009 and react-big-calendar since 2015. Both are downloaded more than a million times a week and run in production in many apps. Read the rows below with that in mind.
✓ means built in. Partial means it's there, with the limit the note gives. ✗ means it isn't built in: you'd write it yourself or add another library.
License and pricing
| Time | FullCalendar | react-big-calendar | |
|---|---|---|---|
| License | ✓ MIT. @moltenship/ics adds Unicode-3.0 for its CLDR data | Partial. The standard views are MIT. The premium plugins have a commercial license1 | ✓ MIT2 |
| Resource and timeline views | Free, MIT | Premium. $480 for one developer, less per seat for more, down to $240 a seat for ten. A one-time payment for perpetual use, with a year of upgrades and email support. Free for registered non-profits (CC BY-NC-ND) and for projects that are open source under the AGPLv31 | Resource columns are free. No timeline3 |
Views
| Time | FullCalendar | react-big-calendar | |
|---|---|---|---|
| Month | ✓ Month | ✓ dayGridMonth4 | ✓ month5 |
| Week and day | ✓ Week and day | ✓ timeGridWeek, timeGridDay4 | ✓ week, work_week, day5 |
| Agenda or list | ✓ Agenda, also as a scrolling list | ✓ list views, from a day to a year4 | ✓ agenda5 |
| Year | ✓ Year. Read-only: a day's events open in a popover | ✓ multiMonthYear4 | ✗ Not built in6 |
| 3-day and other spans | ✓ createThreeDayView. Other spans as a custom view | ✓ Any day count, set with duration7 | ✓ As a custom view. The docs' example is a 3-day view8 |
| Scrolling without end | ✓ Week, 3-day, day, month and agenda, as Apple's Calendar does on iPad | ✗ An open request since 20159 | ✗ Not among its views5 |
| Resource columns | ✓ Resource columns, with groups that collapse | ✓ Premium: resourceTimeGrid and resourceDayGrid10 | Partial. In the day and week time grids only, not month or agenda3 |
| Resource timeline | ✓ Resource timeline for a day, a week or a month | ✓ Premium, also as a timeline without resources10 | ✗ Not built in11 |
| Custom views | ✓ A strategy and a Renderer | Partial. New spans for the built-in types, or a view from scratch as a function or a React component. Its props aren't documented, and dragging is left to you7 | ✓ A component with range, navigate and title8 |
Interaction
| Time | FullCalendar | react-big-calendar | |
|---|---|---|---|
| Drag to move | ✓ In the month, time grid and resource views (Interactions) | ✓ With the interaction plugin12 | ✓ With the withDragAndDrop addon13 |
| Resize | Partial. Timed events in the time grids and resource columns, and bars in the timeline. All-day events, the month's included, from the keyboard only | ✓12 | ✓13 |
| Create | ✓ Drag across empty time or days, or press Space on a slot or a day. A click doesn't create | ✓ Select a range, or handle a date click12 | ✓ Select slots with a click or a drag13 |
| Touch | ✓ Press and hold for 450 ms to drag | ✓ Press and hold, 1 second by default, configurable12 | Partial. Press and hold to select slots, 250 ms by default. Dragging an event by touch takes a tap first, and has reported bugs14 |
| Keyboard move and resize | ✓ Space picks an event up and Shift+Space its edge, the arrow keys move or resize it, Enter saves it (keyboard) | ✗ An open request since 201515 | ✗ The addon handles no keys16 |
| Drops from outside | Partial. With dnd-kit, the dnd-kit adapter turns your items dragged in into events and sends events dragged out to your drop zones. Other libraries call startCalendarDrop and monitorCalendarDrags through a binding you write. No HTML drag and drop | ✓ Draggable, or any drag library through ThirdPartyDraggable17 | ✓ onDropFromOutside, with HTML drag and drop18 |
| Undo and redo | ✓ An opt-in history with keyboard shortcuts and an undo toast | ✗ Each change has a revert(), but there's no history19 | ✗ |
Accessibility
| Time | FullCalendar | react-big-calendar | |
|---|---|---|---|
| Keyboard navigation | ✓ Each view is one tab stop. Arrow, Home, End and Page keys move between days, slots and events (Accessibility) | Partial. Tab reaches every interactive element. Events are focusable when they have a URL or an eventClick handler, or with eventInteractive. No arrow keys20 | Partial. Time grid events are focusable; month events aren't. No arrow-key navigation21 |
| Screen reader announcements | ✓ A live region announces moves, resizes and creates, from the keyboard and the pointer. Events are named in full | Partial. ARIA attributes, and labels you can change. No announcements of changes found20 | ✗ No live region. Open issues about the month view's roles and "+N more"21 |
| Automated checks | ✓ axe-core over every built-in view but the 3-day ones, in Chromium on every PR and in Firefox and WebKit before each release. Serious and critical issues fail. Contrast and target-size tests too. No WCAG conformance claim or third-party audit | Partial. The 7.0 notes say every view passes axe. We found no automated accessibility run in its public CI20 | ✗ No axe tests21 |
| Right-to-left | ✓ Month, week, day and agenda mirror, and so do the arrow keys (right-to-left) | ✓ direction: "rtl"22 | ✓ rtl23 |
Time
| Time | FullCalendar | react-big-calendar | |
|---|---|---|---|
| Date values | Native Temporal: Instant, PlainDate and PlainDateTime. No Date (Time) | Date in its API. Temporal inside, through the functions of temporal-polyfill, a peer dependency you install24 | Date, with a localizer for moment, Luxon, Globalize, date-fns or Day.js25 |
| Temporal required | A global Temporal. In browsers without it, load a polyfill (Installation), which adds 20.5 kB gzipped | No global Temporal, but the temporal-polyfill package as a peer dependency24 | No25 |
| Named time zones | ✓ Any IANA zone, changeable at runtime | ✓ Without a plugin since 7.0. The Dates it hands you are in local time or UTC, so its docs convert them with Temporal24 | Partial. Through the localizer's default zone with moment-timezone, Luxon or Day.js. Not with date-fns25 |
| Daylight saving | ✓ 23- and 25-hour days, and skipped and repeated hours (DST) | No docs page. 7.1.0 fixed timeline slots across a change26 | Partial. The localizers adjust time slots for DST, but a bug remains open27 |
| Secondary time zone | ✓ Extra hour columns, which account for either zone's clock changes | ✗ An open request since 201728 | ✗ A request closed by a bot29 |
| Localization | Partial. Dates and times follow any locale through Intl. The views' own words are English in source you edit, and announcements take messages you pass | ✓ 79 locales for its words, screen reader labels, date formats and the first day of the week30 | ✓ culture from the localizer, and messages for its words31 |
Data
| Time | FullCalendar | react-big-calendar | |
|---|---|---|---|
| Recurring events | ✓ @moltenship/calendar-recurrence: RRULE, EXDATE and RDATE, overrides, and cancelled occurrences (Recurring events) | ✓ Simple daily or weekly recurrence built in. RRULE with exdate and exrule through the rrule plugin32 | ✗ Declined by its creator in 201733 |
| Edit this, following or all | ✓ A scope dialog, and resolveRecurrenceEdit works out what to save (guide) | ✗ Not in the docs. groupId moves occurrences together32 | ✗ |
| ICS import | ✓ @moltenship/ics parses RFC 5545 into Temporal values, with Windows zone names and line-numbered issues (ICS) | ✓ The icalendar plugin loads a feed URL when the calendar loads, and again on refetchEvents34 | ✗ |
| ICS export | Partial. stringifyIcsComponents writes a syntax tree you build. No writer from typed events yet | ✗ Not in the docs34 | ✗ |
| Working hours | ✓ For the calendar and per resource, each in its own time zone, with closed days and holidays (Availability) | ✓ businessHours. Per resource in premium35 | Partial. No working hours setting. Shade time with backgroundEvents or slotPropGetter, per resource, and limit the hours shown with min and max36 |
| Busy status | ✓ Busy and unavailable kept apart, with busyAt, resourceStatusAt and a busy badge | ✗ | ✗ |
| Conflict rules | ✓ Policies block, warn about or allow double-booking per resource, and keep changes inside working hours. Previews show the verdict while you drag | ✓ eventOverlap, eventConstraint, eventAllow and their select twins35 | ✗ no-overlap only changes the layout36 |
| Pending changes, optimistic updates | ✓ An async onEventChange keeps the change on screen as pending and rolls it back if saving fails. Of racing changes, the newest shows; the docs show how to apply saves in order (pending changes) | Partial. Callbacks get revert() to undo a failed save. No pending state19 | ✗ You update your state in onEventDrop37 |
Architecture and integration
| Time | FullCalendar | react-big-calendar | |
|---|---|---|---|
| Headless core | ✓ The event engine and Temporal helpers use no React or DOM. The React parts render plain elements (How it works) | Partial. @full-ui/headless-calendar, MIT, is its internal core; its readme calls it a beta38 | ✗ |
| Frameworks | React only | ✓ React, Vue 3, Angular, Preact, plain JavaScript and a web component39 | React only40 |
| React versions | 19 | 17 to 1939 | 16.14 to 1940 |
| Server rendering, Next.js | ✓ Renders the same markup on the server and in the browser. Calendars are Client Components. A full App Router example with Server Actions | ✓ The React package is written in React since 7.0, with server rendering and StrictMode. A Next.js example project41 | Partial. Its docs don't cover server rendering or Next.js. App Router users put it in a Client Component42 |
| Own the code | ✓ Every view's components, the toolbar and the theme are source files you add with the shadcn CLI (UI source). Date math, layout, and the drag and keyboard logic stay in @moltenship/calendar | Partial. A shadcn registry adds a wrapper, a toolbar and Tailwind classes for each part. The views' markup and behaviour stay in @fullcalendar/react43 | ✗ |
| Theming | ✓ CSS tokens for light and dark, an event palette, and a theme builder | ✓ Five themes with dark mode, CSS variables, class names for Tailwind, and MUI and Bootstrap 5 themes44 | Partial. One stylesheet, with Sass variables to override45 |
| TypeScript | ✓ Written in strict TypeScript. Your event and ID types carry through | ✓ Written in TypeScript, types included39 | Partial. Written in JavaScript. @types/react-big-calendar is at 1.1646 |
Performance and size
| Time | FullCalendar | react-big-calendar | |
|---|---|---|---|
| Virtualization and large data | ✓ Resource columns, the resource timeline, the agenda and the scrolling views render only what's in view. Month and time grids render the visible range. Events sit in an interval index, so each view reads only its range (Performance) | Partial. Opt-in and premium, for the resource timeline only. Other views are planned47 | ✗ No virtualization. Reports about large data were closed by a bot, and a fix isn't merged48 |
| Bundle size, gzipped | 143 kB. 67 kB if your app already ships Base UI's select, popover and tooltip, cn and lucide-react | 84 kB. 118 kB with the premium resource views | 99 kB with Luxon and a time zone. 85 kB with date-fns, without time zones |
How the sizes were measured
Each library rendered the same calendar from one entry file: month, week, day and agenda (or list)
views, the library's toolbar, and dragging, resizing and creating turned on, in the Europe/Berlin
time zone. For Time, that's the Quick start's calendar with onEventChange and
the Announcer added, built from the registry source that shadcn add copies, at commit
ed3f9a1b. FullCalendar used its classic theme. react-big-calendar used its Luxon localizer, since
its date-fns localizer can't take a time zone, and its drag-and-drop addon, imported from
react-big-calendar/lib/addons/dragAndDrop as its docs show; that path is CommonJS and brings a
second copy of some modules. Each entry was bundled with esbuild 0.28.2
(--bundle --minify --format=esm --target=es2022), with React and React DOM left out and CSS not
counted, then compressed with gzip -9. A kB is 1,000 bytes.
| Bundle | Minified | Minified and gzipped |
|---|---|---|
| Time: week, day, month and agenda, with the toolbar and the shadcn components they use | 430 kB | 142.6 kB |
The same, without the shadcn stack: Base UI, Floating UI, cn, lucide-react and helpers | 218 kB | 67.3 kB |
| Time with resource columns and the resource timeline added | 481 kB | 157.6 kB |
The same, without the shadcn stack: Base UI, Floating UI, cn, lucide-react and helpers | 269 kB | 82.1 kB |
temporal-polyfill/global 1.0.6, for browsers without Temporal | 59 kB | 20.5 kB |
| FullCalendar 7.1.2: month, week, day and list, with interaction | 301 kB | 84.3 kB |
| FullCalendar 7.1.2 with premium resource timeline and resource time grid | 429 kB | 118.0 kB |
| react-big-calendar 1.20.0 with drag and drop and Luxon 3.7 | 323 kB | 98.6 kB |
| react-big-calendar 1.20.0 with drag and drop and date-fns 4.4, without time zones | 288 kB | 84.9 kB |
Time's views are the largest of the three. About half of their minified size is the shadcn
components they're built on: Base UI's select, popover and tooltip, with Floating UI. An app that
already uses those through shadcn/ui ships that code already, which is what the "without" rows show.
FullCalendar's numbers include the parts of temporal-polyfill it imports. Time's don't include a
polyfill, which only browsers without Temporal need.
Maturity
| Time | FullCalendar | react-big-calendar | |
|---|---|---|---|
| Since | August 2026 | 200949 | 201550 |
| Latest release | 1.0.0-rc.1, a release candidate, October 2026 | 7.1.2, October 12, 202649 | 1.20.0, June 1, 202650 |
| Releases in the last 12 months | 1, a release candidate | 849 | 250 |
| Weekly npm downloads | None yet, first published in October 2026 | 1.8 million for @fullcalendar/react51 | 1.17 million52 |
| GitHub | 1 contributor | 20.7k stars, about 130 contributors49 | 8.8k stars, about 240 contributors50 |
| Support | GitHub issues | Community support, and email support with a premium license1 | GitHub issues50 |
FullCalendar and react-big-calendar have years of bug reports behind them, answers on Stack Overflow, example projects and people who know them. Time has none of that yet.
When to choose which
FullCalendar if you need a calendar you can rely on in production today, if your app uses Vue, Angular or no framework, if you need many locales out of the box, or if you want a vendor with paid support. Its premium views cost money, but less than building a scheduler. Its React package has been written in React since 7.0, renders on the server, handles named time zones through Temporal and has shadcn themes, so none of those set Time apart.
react-big-calendar if you want a free MIT calendar with month, week, day and agenda views and drag and drop, and you don't need a year view, a timeline, keyboard editing, recurring events or time zones beyond a localizer's default. It had two releases in the last twelve months, so expect fixes to come slowly.
Time if you're on React 19 and can start on a release candidate, and you want Temporal from end to end, view components you own as source, editing by keyboard with screen reader announcements, edits to recurring series, availability and conflict rules, or resource views under the MIT license. Don't choose it yet if you need a stable release with a track record, or a framework other than React.
Footnotes
-
FullCalendar's pricing, purchase and license pages, its premium docs, and the plugin index, which marks the premium plugins. ↩ ↩2 ↩3
-
Only the time grid reads
resources:src/TimeGrid.js. See the resource scheduling example. ↩ ↩2 -
FullCalendar's month, time grid, list and multi-month views. ↩ ↩2 ↩3 ↩4
-
react-big-calendar's
src/Views.js. ↩ ↩2 ↩3 ↩4 -
FullCalendar's custom view with settings and custom view with JS. ↩ ↩2
-
react-big-calendar's Creating custom views and its 3-day example. ↩ ↩2
-
fullcalendar#2276, "Continuous scrolling of months". ↩
-
FullCalendar's vertical resource view and timeline view, both premium. ↩ ↩2
-
#1844, "Resource Timeline component", closed by a bot in May 2026. ↩
-
FullCalendar's dragging and resizing,
selectable, touch andeventLongPressDelay. ↩ ↩2 ↩3 ↩4 -
react-big-calendar's
withDragAndDrop,selectableandonSelectSlot. ↩ ↩2 ↩3 -
react-big-calendar's
longPressThreshold, the addon'sEventWrapper.js, and #2413, "Drag and drop on touch". ↩ -
fullcalendar#2535, "Event drag-n-drop / resize with keyboard", open since 2015. ↩
-
The addon's
withDragAndDrop.jshas no key handling, andsrc/Selection.jsuses Escape only to cancel. ↩ -
FullCalendar's external dragging and third-party dragging. ↩
-
react-big-calendar's drag from outside example. ↩
-
FullCalendar's
eventDrop, whoserevert()is "useful if an ajax call should fail". ↩ ↩2 -
FullCalendar's accessibility,
eventInteractiveand hints docs, fullcalendar#6527, "ARIA grid, roving tabindex", the upgrade notes for 7.0, and its CI workflows. ↩ ↩2 ↩3 -
react-big-calendar's
TimeGridEvent.jsgives time grid events atabIndex, andEventCell.jsdoesn't. Open issues #2538 and #2045. Itspackage.jsonhas no axe. ↩ ↩2 ↩3 -
FullCalendar's date library, temporal-polyfill and
timeZonedocs. ↩ ↩2 ↩3 -
react-big-calendar's dates guide, its localizers, its time zones guide, and the date-fns localizer. ↩ ↩2 ↩3
-
FullCalendar's 7.1.0 release notes: "Timeline view, account for DST in timeslots". ↩
-
react-big-calendar's
localizer.jsandTimeGutter.js, and #2534, a date missing from the month view in March 2024. ↩ -
fullcalendar#3964, "multiple timeGrid/timeline axis, each with different time zone". ↩
-
#2306, "Support for Displaying Multiple Timezones", closed by a bot in May 2026. ↩
-
FullCalendar's
locale.@fullcalendar/react7.1.2 ships 79 locale files. ↩ -
FullCalendar's recurring events and RRule plugin. ↩ ↩2
-
#355: "I don't want to provide such functionality in the library". ↩
-
FullCalendar's iCalendar plugin. ↩ ↩2
-
FullCalendar's
businessHours, business hours per resource,eventConstraint,eventOverlapandselectAllow. ↩ ↩2 -
react-big-calendar's
backgroundEvents,slotPropGetter,minandmax, its time grid, anddayLayoutAlgorithm. ↩ ↩2 -
react-big-calendar's drag and drop example. ↩
-
@full-ui/headless-calendaron npm. ↩ -
FullCalendar's React, Vue, Angular and web component docs, and the upgrade notes for 7.0. ↩ ↩2 ↩3
-
react-big-calendar's
package.json. ↩ ↩2 -
FullCalendar's React docs: "server-side rendering and StrictMode work". ↩
-
FullCalendar's shadcn/ui docs and its registry item
monarch-event-calendar. ↩ -
FullCalendar's stock themes and custom themes. ↩
-
@types/react-big-calendaron npm. ↩ -
FullCalendar's virtual rendering and
virtualization. ↩ -
#2752 and #2068, closed by a bot in May 2026, and the open fix #2753. ↩
-
FullCalendar's GitHub repository, contributors and releases. ↩ ↩2 ↩3 ↩4
-
react-big-calendar's GitHub repository, contributors, releases and npm versions. ↩ ↩2 ↩3 ↩4 ↩5
-
npm's download counts for October 6 to 12, 2026. ↩
-
npm's download counts for October 6 to 12, 2026. ↩
Last updated on