Skip to main content
Version: v0.6.x

Migration

Prop-by-prop mappings from popular packages. Most migrations are a rename plus switching callbacks to (value) => ….

From @react-native-community/datetimepicker​

- import DateTimePicker from '@react-native-community/datetimepicker';
+ import { DatePicker, TimePicker } from '@elik56a/react-native-pickers';

- <DateTimePicker mode="date" value={date} onChange={(event, d) => d && setDate(d)} minimumDate={min} />
+ <DatePicker value={date} onChange={setDate} minDate={min} />

- <DateTimePicker mode="time" value={time} is24Hour onChange={(e, d) => d && setTime(d)} minuteInterval={5} />
+ <TimePicker value={time} onChange={setTime} format="24h" minuteInterval={5} />
datetimepickerReact Native Pickers
mode="date"DatePicker (calendar) or DatePicker display="wheel"
mode="time"TimePicker
mode="datetime"DatePicker + TimePicker sharing one Date (the time picker keeps the date part)
display="spinner"DatePicker display="wheel"
display="calendar" / "inline"DatePicker
valuevalue
onChange(event, date)onChange(date) (no event, never undefined)
minimumDate / maximumDateminDate / maxDate
minuteIntervalminuteInterval
is24Hourformat="24h" (default 'auto' from locale)
localelocale
firstDayOfWeek (Android)firstDayOfWeek (0 = Sunday)
themeVariantPickersProvider colorScheme
accentColor / textColortheme={{ colors: { primary, text } }}
Android dialog (shown on mount)DatePickerSheet / TimePickerSheet with visible

From react-native-modal-datetime-picker​

- <DateTimePickerModal isVisible={open} mode="date" date={date} onConfirm={setDate} onCancel={close} />
+ <DatePickerSheet visible={open} value={date} onConfirm={setDate} onClose={close} />
modal-datetime-pickerReact Native Pickers
isVisiblevisible
mode="date" | "time"DatePickerSheet · TimePickerSheet
datevalue
onConfirm(date)onConfirm(date) (onClose is called right after)
onCancelonClose
confirmTextIOS / cancelTextIOSconfirmLabel / cancelLabel
minimumDate / maximumDateminDate / maxDate

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)

From react-native-picker-select​

- <RNPickerSelect
- items={[{ label: 'Football', value: 'football' }]}
- onValueChange={setSport}
- value={sport}
- placeholder={{ label: 'Select a sport…', value: null }}
- />
+ <SelectPicker
+ options={[{ label: 'Football', value: 'football' }]}
+ onChange={setSport}
+ value={sport}
+ placeholder="Select a sport…"
+ />
react-native-picker-selectReact Native Pickers
itemsoptions (adds description, icon, group, keywords)
onValueChange(value, index)onChange(value, option)
valuevalue
placeholder={{ label }}placeholder="…"
disableddisabled
onOpen / onCloseonOpen / onClose
doneTextsheet={{ confirmLabel }} (Done shown with closeOnSelect={false} / multiple)
style={{ inputIOS, inputAndroid }}styles={{ trigger, triggerText, placeholder }}
—multiple, searchable, clearable, maxSelected, renderTrigger, renderOption

Want an iOS-style wheel instead of a list? Use WheelPickerSheet.

From @react-native-picker/picker​

- <Picker selectedValue={lang} onValueChange={setLang}>
- <Picker.Item label="Java" value="java" />
- <Picker.Item label="JavaScript" value="js" />
- </Picker>
+ <WheelPicker
+ items={[{ label: 'Java', value: 'java' }, { label: 'JavaScript', value: 'js' }]}
+ value={lang}
+ onChange={setLang}
+ />

Picker.Item enabled={false} → { disabled: true }. Android mode="dropdown" → SelectPicker.