Examples use the React Native
Calendar; most props are shared with the dom renderer, and the
dom vs native comparison lists what differs per renderer.mode="month" renders the classic month grid: a swipeable pager of 4–6 week
rows. A single-day event shows as a chip in its day cell; an event that covers
several days draws as one continuous bar spanning the columns it touches, so a
trip or holiday reads as a single block instead of a chip repeated on each day. A
bar that runs past a week’s edge is squared off and continues on the next row.
Chip dimensions
SetchipHeight and chipGap on Calendar, MonthView, or MonthList to size
month lanes, spanning bars, and overflow rows. Native MonthPager forwards them too.
Custom event renderers must fit inside the configured height.
You can change either dimension after mounting, including in cached list and pager months.
DOM defaults remain 18 px for height and 2 px for gaps. Native keeps its
theme-derived height and 2 px gaps when you omit the options. Choose a smaller
maxVisibleEventCount if larger chips cannot fit within your calendar height.
Event chips and overflow
Each week row stacks its events into lanes (a multi-day bar keeps its lane across the days it spans) and shows as many lanes as the cell height allows, collapsing the rest of a day’s events into a+N more label.
maxVisibleEventCount— a fixed cap on lanes per week row instead of auto-fit. Because a multi-day bar occupies a lane across the whole week, a long bar can push a lightly-booked day’s own events into+N more. Recommended when you pass a customrenderEvent, since auto-fit assumes the built-in chip height.onPressMore— tap the overflow label; receives the hidden events and the day. Without it, the built-in popover opens instead, listing the day’s events (style it via themorePopoverslot).moreLabel— customize the overflow text (e.g."+{moreCount}").sortedMonthView— sort each day’s chips by start time (default on); all-day events lead the day.
Grid shape
showTitle— the built-in “July 2026” label above the grid (default on). SetshowTitle={false}when your own header already shows the month and year, so the label isn’t duplicated.showSixWeeks— always render six week rows for a fixed-height grid.showAdjacentMonths— show (dimmed) days from the neighbouring months (default on).weekStartsOn— 0 = Sunday, 1 = Monday, and so on.weekdayFormat— header label width:narrow(“M”),short(“Mon”), orlong(“Monday”).hiddenDays— weekdays (0=Sunday…6=Saturday) dropped from the grid and its header, e.g.[0, 6]for weekends off. Also applies to the year view.highlightWeekends— tint Saturday and Sunday cells with the weekend background (default on). PasshighlightWeekends={false}to treat them like any other day, or recolour the tint via theweekendBackgroundtheme token.
Taps and custom cells
onPressDay / onLongPressDay fire for the cell, onPressEvent /
onLongPressEvent for a chip. onPressCell fires for the cell too, with the day
at midnight, so the handler you already use to create events on the week/day grid
works unchanged in month mode:
renderCustomDateForMonth (the date badge) or a
custom renderEvent (see Custom events); restyle everything
else through the theme or per-slot classes.
Dragging
Month cells and chips are draggable too: passonCreateEvent to sweep out an
all-day span across days, and onDragEvent to drop an event on another day
(keeping its time of day and duration). See
Drag & create.
Selecting, creating, and moving by drag
The month grid is drag-driven too, in whole days. Hold an empty day and drag across others (press and drag on the web) to sweep a span:onSelectDrag reports
it live as the ordered [start, end] days, onCreateEvent reports it once on
release as an all-day range. Hold an event chip and drop it on another day and
onDragEvent fires with the event shifted by whole days, keeping its time of day
and duration. selectedDates / selectedRange (with minDate, maxDate,
isDateDisabled) draw the selection.