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

entriesui · verified 2026-07-16 · react + react-native

Calendars, date pickers & event grids

reviewedconfidence: lowearly: 2/14 of this tier graded so far (0 overturned) — the public scorecard →

re-verified 3× — 2026-07-16 · 2026-07-13 · 2026-07-07 · changelog

recommendation

Date picking / marked-dates UI → react-native-calendars (the de-facto) or @marceloterreiro/flash-calendar when performance and design-system theming matter. A full event-grid UX (native-calendar-style day/week views with drag and pinch) → @super-calendar/native — new in 2026, prototype first. Web event calendars → react-big-calendar or FullCalendar. Lightly vetted (confidence: low).

  • date picker / marked dates / agenda list → react-native-calendars
  • design-system theming + list-perf discipline → @marceloterreiro/flash-calendar (FlashList-windowed, tiny)
  • event grid with gestures (drag-to-create, resize, pinch-zoom day/week views) → @super-calendar/native (new — verify on-device perf; stack requires Reanimated 4 + Gesture Handler + Legend List)
  • week-strip header UI → react-native-calendar-strip
  • web scheduler/event calendar → react-big-calendar or FullCalendar

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 (v1.13xx); Agenda/Calendar/CalendarList; huge adoption, older architecture354k/wk
@marceloterreiro/flash-calendar (2.x)performance-first calendar born at Shopify — windowed via a FlashList peer dep, tiny (~18kb min), headless-ish theming for design systems; picker/marking focus, not an event grid
@super-calendar/native (2.x)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 + paged; requires Reanimated 4 + Gesture Handler + Legend List; @super-calendar/dom renders the same core on web
react-native-calendar-strip (2.x)horizontal week-strip header pattern; narrow, settled use case13k/wk
web: FullCalendar / react-big-calendarestablished web event-calendar components (react-big-calendar 1.20); FullCalendar is the batteries-included commercial-tier option1.0M/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 354k · @marceloterreiro/flash-calendar 37k · react-native-calendar-strip 13k · react-big-calendar 1.0M

Verified notes

NEW entry (2026-07-07): calendars are a common, hard UI need with a real competing-options landscape, surfaced by TWO independent signals in one week (Super Calendar in TWiR #288, then headlining RN Rewind ~#48). The durable split is PICKER/MARKING calendars (react-native-calendars, flash-calendar) vs full EVENT GRIDS (super-calendar; web's FullCalendar/react-big-calendar) — most apps need the first, calendar-app UX needs the second. Versions verified vs npm (react-native-calendars 1.1314 · flash-calendar 2.0.0 · @super-calendar/native 2.1.5 · calendar-strip 2.2.6 · react-big-calendar 1.20); Super Calendar's package names, views, and Reanimated-4/Gesture-Handler/Legend-List requirements verified vs its docs. Lightly vetted (confidence: low) — prototype gesture perf on low-end devices before committing.

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 UI → react-native-calendars (the de-facto) or @marceloterreiro/flash-calendar when performance and design-system theming matter. A full event-grid UX (native-calendar-style day/week views with drag and pinch) → @super-calendar/native — new in 2026, prototype first. Web event calendars → react-big-calendar or FullCalendar. 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, born at Shopify: windowed via a FlashList peer dep, tiny (~18kb min), 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 — Reanimated 4 + Gesture Handler + Legend List — 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, settled use case with its own when-clause.

Web: FullCalendar / react-big-calendar (1.20) — the established web event-calendar components; FullCalendar is the batteries-included commercial-tier option.

Version trust: the versions above are verified against npm (react-native-calendars 1.1314 · flash-calendar 2.0.0 · @super-calendar/native 2.1.5 · calendar-strip 2.2.6 · react-big-calendar 1.20), 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