Skip to main content
Version: v0.23.2

Migrate from react-native-calendars

- <Calendar
- current="2026-10-01"
- minDate="2026-10-05"
- onDayPress={(day) => setSelected(day.dateString)}
- markedDates={{ [selected]: { selected: true }, '2026-10-22': { marked: true, dotColor: 'green' } }}
- firstDay={1}
- />
+ <DatePicker
+ initialMonth={new Date(2026, 9, 1)}
+ minDate={new Date(2026, 9, 5)}
+ value={selected}
+ onChange={setSelected}
+ markedDates={{ '2026-10-22': { dots: ['green'] } }}
+ firstDayOfWeek={1}
+ />
react-native-calendarsReact Native Pickers
current (string)initialMonth (Date)
minDate / maxDate (strings)minDate / maxDate (Date)
onDayPress(day)onChange(date); selection is managed for you
markedDates[k].selectedvalue (no manual marking)
markingType="period" + manual start/end markingmode="range"
markedDates[k].marked + dotColormarkedDates[k].dots: [color]
markingType="multi-dot" dots: [{ color }]dots: ['#hex', …] (max 3)
markedDates[k].disabled / disableTouchEventmarkedDates[k].disabled or isDateDisabled
firstDayfirstDayOfWeek
onMonthChangeonMonthChange(month: Date)
hideExtraDaysshowOutsideDays={false}
enableSwipeMonthsenableSwipe (on by default)
dayComponentrenderDay(state, theme)
renderArrow(direction)renderArrow(direction, disabled)
theme={{ selectedDayBackgroundColor, todayTextColor, … }}theme={{ colors: { primary, … } }} + styles slots
LocaleConfiglocale="fr-FR" (names from Intl)

See all migration guides for other libraries, and Comparison for when another library is the better choice.