react-brain
Browse decisions
React & language foundations 3App architecture 11UI 13Platform & native 9Build, test, observe, secure 6AI in React apps 3stack composerdecision recordscensusstaleness benchnewsletterarchitecturechangelogmethodologyroadmap

entriesui · verified 2026-09-24 · react + react-native

Calendars, date pickers & event grids

reviewedconfidence: lowthis tier holds 64% on the public scorecard (7/14 graded · 0 overturned) →

related decisions: animation · lists

re-verified 4× — 2026-09-24 · 2026-07-16 · 2026-07-13 · 2026-07-07 · changelog

recommendation

Date picking / marked dates → react-native-calendars (the de-facto), or @marceloterreiro/flash-calendar when list performance and design-system theming matter. Native event grid with drag and pinch (day/week views) → @super-calendar/native — new in 2026, prototype on low-end devices first. Web event calendar → react-big-calendar; FullCalendar when you need its Premium timeline/resource views. Lightly vetted (confidence: low).

  • date picker / marked dates / agenda list → react-native-calendars
  • design-system theming + list-perf discipline → @marceloterreiro/flash-calendar (FlashList-windowed; 18kb min)
  • event grid with gestures (drag-to-create, resize, pinch-zoom day/week views) → @super-calendar/native (new — verify on-device perf; peers Reanimated 4.x + Gesture Handler + Legend List 3+)
  • event grid on web from the same core as native → @super-calendar/dom (same core as @super-calendar/native)
  • week-strip header UI → react-native-calendar-strip (unpublished since 2022 — pin and own it)
  • web scheduler/event calendar, MIT only → react-big-calendar
  • web scheduler needing timeline or resource views → FullCalendar (Premium tier, paid)

Low confidence — fast-moving or lightly-vetted domain: treat the pick as a vetted lead and prototype before committing.

Options & tradeoffs

the field considered — and why each one isn’t the default here

optiontradeoffevidence
react-native-calendars (Wix)The long-standing de-facto RN calendar/date-marking suite (Agenda, Calendar, CalendarList): huge adoption, older architecture. 1.1314.0 (2026-01-29, verified vs npm).628k/wk
@marceloterreiro/flash-calendar (2.x)Performance-first picker: windowed via a @shopify/flash-list >=2 peer dep, 18kb minified / 6kb gzip, theme-prop styling for design systems; picker/marking focus, not an event grid. 2.0.0 (2026-03-04, verified vs npm).
@super-calendar/native (2.x)Gesture-driven EVENT GRID (new in 2026): month/week/day/3-day/schedule, pinch-zoom time grid, drag-to-create/resize, recurring events, time zones; virtualized + paged; @super-calendar/dom renders the same core on web. 2.11.0 (2026-09-15, verified vs npm); see note: SUPER CALENDAR PEERS.
react-native-calendar-strip (2.x)Horizontal week-strip header pattern; narrow use case. 2.2.6 is also the last publish (2022-05-11, verified vs npm).43k/wk
web: FullCalendar / react-big-calendarEstablished web event-calendar components. react-big-calendar 1.20.0 (2026-06-01) is MIT; FullCalendar 7.1.0 (2026-09-05, both verified vs npm) is MIT for standard features, with timeline/resource views in a paid Premium tier; see note: FULLCALENDAR LICENSING.1.6M/wk

evidence: npm weekly downloads (signals snapshot) · “ships in n/D” = adoption across the production-app census, honest denominators

npm weekly downloads (from the corpus's last signals run): react-native-calendars 628k · @marceloterreiro/flash-calendar 91k · react-native-calendar-strip 43k · react-big-calendar 1.6M

Verified notes

The durable split is PICKER/MARKING calendars (react-native-calendars, flash-calendar) vs full EVENT GRIDS (Super Calendar; FullCalendar / react-big-calendar on web). Most apps need the first; calendar-app UX needs the second. A picker windows date cells and answers taps; an event grid windows a time grid and answers drags and pinches, so the grid drags in a gesture + list stack the picker does not need. Lightly vetted (confidence: low) — treat each lane as a shortlist and prototype gesture perf on low-end devices before committing. SUPER CALENDAR PEERS (2026-09-24, verified vs npm @super-calendar/native 2.11.0): peer deps are react-native-reanimated >=4.0.0 <5, react-native-worklets >=0.5, react-native-gesture-handler >=2.16, @legendapp/list >=3, date-fns >=3, react-native >=0.74 → a Reanimated 3 app cannot adopt it without the Reanimated 4 upgrade (RB-E-ANIMATION owns that thread). Views, recurring events, time zones and the react-dom renderer verified vs its docs. FLASH CALENDAR (2026-09-24, verified vs its docs + npm): peer @shopify/flash-list >=2.0.0, so it pulls FlashList v2 into the app (RB-E-LISTS owns FlashList). Bundle 18kb minified / 6kb gzip per its docs. FULLCALENDAR LICENSING (2026-09-24, verified vs fullcalendar.io/pricing): standard features are MIT; Premium (timeline and vertical resource views among them) is a commercial license starting at $480 → react-big-calendar is the MIT default; FullCalendar is the pick when those views are the requirement. CALENDAR STRIP (2026-09-24, verified vs npm): 2.2.6 is from 2022-05-11 with no later publish → fine for a week strip you are willing to own; not a dependency to expect fixes from. HISTORY: 2026-09-24 CORRECTED: flash-calendar "born at Shopify" is in neither its docs nor its repo (removed; it depends on Shopify's FlashList); FullCalendar "commercial-tier" made precise (MIT core, paid Premium); Super Calendar peer floors verified. 2026-07-07 GAP CLOSED: entry created from two independent signals in one week (Super Calendar in TWiR #288, then headlining RN Rewind ~#48).

Canonical reading

Editorial annotations on why each piece matters — the articles themselves are the originals; read them there.

Super Calendar — docs (views, gestures & architecture)Afonso Jorge Ramos

The reference for the new event-grid approach: a platform-free core with native (Reanimated 4 + Gesture Handler + Legend List) and DOM renderers, virtualized snap-paged views (month/week/day/3-day/schedule), and gesture semantics (pinch-to-zoom time grid, long-press drag, grip resize, drag-empty-space-to-create). Documents the stack a modern RN event grid actually requires — useful even if you pick something else.

Sources

Depth (in-domain rules) is owned by the react-native-best-practices skill — this entry is selection breadth.

The full explanation

The reviewed long-form essay behind this entry — the why, not a how-to. Also on GitHub.

About calendars, date pickers & event grids

Diataxis: Explanation. This page builds understanding of the calendar decision — why the landscape splits in two and what actually differentiates the candidates. It is not a month-rendering how-to and not a props reference. The candidate list, versions, and one-line tradeoffs live in the index entry RB-E-CALENDARS; performance depth is owned by the react-native-best-practices skill. The entry is lightly vetted (confidence: low) — carry that caveat into anything you conclude from this page. Read this for the why.

The one idea that organises everything: a virtualized list wearing a date grid

Strip the styling and a calendar is a scrolling window over a large, regular sequence — months of date cells, or days of hour rows. That is a list problem, and the entry's candidates say so in their own descriptions: flash-calendar is "windowed via a FlashList peer dep"; Super Calendar is "virtualized + paged", its views snap-paged over Legend List. Rendering a month is table stakes — every candidate does it — so the pick is decided by the two things underneath the grid:

  • Virtualization — what the window is made of, and how far it scrolls before it stutters.
  • Gestures — what the grid answers beyond a tap: the entry's event-grid row lists a pinch-to-zoom time grid and drag-to-create/resize; its reading adds long-press drag, grip resize, and drag-empty-space-to-create.

That axis is why the entry's durable split exists: PICKER/MARKING calendars (react-native-calendars, flash-calendar) versus full EVENT GRIDS (Super Calendar; web's FullCalendar / react-big-calendar). A picker windows date cells and answers taps; an event grid windows a time grid and answers drags and pinches. The entry's note is equally clear about demand: most apps need the first; calendar-app UX needs the second.

The default, and why

Date picking / marked dates → react-native-calendars (the de-facto), or @marceloterreiro/flash-calendar when list performance and design-system theming matter. Native event grid with drag and pinch (day/week views) → @super-calendar/native — new in 2026, prototype on low-end devices first. Web event calendar → react-big-calendar; FullCalendar when you need its Premium timeline/resource views. Lightly vetted (confidence: low).

The default is a router over the split, not a single winner. On the picker side it names two lanes: the de-facto suite when adoption and coverage matter, and the performance-first one when list-perf discipline and design-system theming matter. On the event-grid side it names one native candidate — with "new in 2026, prototype first" attached in the recommendation itself, which is rare and deliberate. The web lane keeps its own established pair. The when-clauses map need → lane mechanically: date picker / marked dates / agenda list; design-system theming + list-perf; event grid with gestures; week-strip header; web scheduler.

The landscape, facet by facet

react-native-calendars (Wix, v1.13xx) — the long-standing de-facto RN calendar and date-marking suite: Agenda, Calendar, CalendarList. Its tradeoff is stated as a pair — huge adoption, older architecture — and the entry leaves it at that; it is the default answer for picker/marking needs on adoption grounds.

@marceloterreiro/flash-calendar (2.x) — the performance-first picker: windowed via a FlashList (@shopify/flash-list >=2) peer dep, tiny (18kb minified, 6kb gzip), headless-ish theming aimed at design systems. The entry draws its boundary explicitly: picker/marking focus, not an event grid.

@super-calendar/native (2.x) — the new (2026) gesture-driven event grid: month/week/day/3-day/schedule views, pinch-to-zoom time grid, drag-to-create/resize, recurring events, time zones; virtualized and paged. It carries a real stack requirement — peer deps Reanimated >=4 <5, react-native-worklets >=0.5, Gesture Handler >=2.16 and @legendapp/list >=3, so a Reanimated 3 app upgrades first — and @super-calendar/dom renders the same core on web (the reading describes a platform-free core with native and DOM renderers). It earned its row through two independent signals in one week: TWiR #288, then headlining RN Rewind ~#48.

react-native-calendar-strip (2.x) — the horizontal week-strip header pattern; a narrow use case with its own when-clause. 2.2.6 (2022-05-11) is its last publish: adopt it only if you are willing to own it.

Web: FullCalendar / react-big-calendar (1.20) — the established web event-calendar components. react-big-calendar is MIT. FullCalendar is MIT for its standard features; timeline and resource views are in a paid Premium tier (from $480 per fullcalendar.io/pricing), so react-big-calendar is the MIT default and FullCalendar the pick when those views are required.

Version trust: the versions above are verified against npm (react-native-calendars 1.1314 · flash-calendar 2.0.0 · @super-calendar/native 2.11.0 · calendar-strip 2.2.6 · react-big-calendar 1.20 · FullCalendar 7.1.0; re-checked 2026-09-24), and Super Calendar's package names, views, and stack requirements against its docs.

Tradeoffs and failure modes to name out loud

  • Buying an event grid to build a picker. Super Calendar's gesture stack — Reanimated 4 + Gesture Handler + Legend List — is the price of drag and pinch. If the need is marked dates and a tap, the entry's picker lane (a ~18kb FlashList-windowed calendar, or the de-facto suite) answers it without that stack.
  • Building an event grid out of a picker. The boundary is the entry's own: flash-calendar is "picker/marking focus, not an event grid." Drag-to-create on top of a marking calendar is fighting the library's shape.
  • Committing to a 2026-new library sight unseen. The recommendation itself says prototype first; the when-clause says verify on-device perf; the note narrows it further — prototype gesture perf on low-end devices before committing.
  • Reading "de-facto" as "settled". react-native-calendars' row is a tension — huge adoption and older architecture — and the entry does not resolve it; flash-calendar's existence is the performance-and-theming counterweight.
  • Forgetting the confidence label. The whole entry is lightly vetted (confidence: low), dated 2026-07-07. Treat every lane as a shortlist, not a verdict.

How it interacts with the rest of the stack

  • Lists (RB-E-LISTS). The virtualization under the grid is a named dependency, twice: FlashList as flash-calendar's peer dep, Legend List in Super Calendar's required stack. Your calendar pick inherits a list engine — the organizing idea, made literal.
  • Animation & gestures (RB-E-ANIMATION). Reanimated 4 + Gesture Handler are Super Calendar's other requirement; an event grid is a gesture surface before it is a widget.
  • Performance depth (react-native-best-practices). The defer skill owns the discipline the when-clauses gesture at — list perf and on-device verification beyond this page's altitude.
  • Web. The split holds across platforms: Super Calendar's DOM renderer carries the same core to web, while react-big-calendar / FullCalendar remain the established web event-grid pair.

In one paragraph

A calendar is a virtualized list wearing a date grid: month-rendering is table stakes, so the pick is decided by the virtualization underneath (FlashList for flash-calendar, Legend List + paging for Super Calendar) and by which gestures the grid answers (pinch-to-zoom time grid, drag-to-create/resize). The landscape splits durably into picker/marking calendars — react-native-calendars as the huge-adoption de-facto, @marceloterreiro/flash-calendar (~18kb, FlashList-windowed, design-system theming) as the performance-first lane — and full event grids, where @super-calendar/native (new in 2026; requires Reanimated 4 + Gesture Handler + Legend List; same core on web via @super-calendar/dom) is the native candidate and react-big-calendar / FullCalendar the established web pair, with react-native-calendar-strip covering the week-strip niche. Most apps need a picker; calendar-app UX needs a grid. The entry is lightly vetted (confidence: low): prototype gesture perf on low-end devices before committing.


See also: RB-E-LISTS (the virtualization engines the picks inherit — FlashList, Legend List), RB-E-ANIMATION (Reanimated + Gesture Handler, the event grid's gesture substrate). Performance depth: the react-native-best-practices skill. Background reading: the Super Calendar docs (super-calendar.afonsojramos.me) — views, gestures, and the platform-free core/renderer architecture.

Related in ui: styling · component-libs · animation · lists · a11y · i18n · charts · editors · svg · maps · sheets · polish