Skip to main content
v0.8.0 ยท Expo Go ยท iOS ยท Android ยท Web

Every picker your
React Native app needs.

Wheel, time, date, range, select and emoji pickers, plus the bottom sheets to put them in. Beautiful by default, themeable to the pixel, and 100% JavaScript with zero native code.

components
10
native modules
0
emojis
1,906
TypeScript
100%

One package. One API. Every picker.

Built for real apps

No native modules to link, no marking logic to write, and the same behavior on iOS, Android and the web.

Why this library โ†’
01

Zero native code

Pure JavaScript. Runs in Expo Go, bare React Native and React Native Web with no pod install or rebuild.

02

Themeable to the pixel

Design tokens, automatic dark mode, a typed style slot for every part, and render props when you need full control.

03

Ranges, built in

Single, range and multiple date selection with min/max nights, disabled days, prices and dots, all with no marking logic to write.

04

Any locale, RTL

Month, weekday and AM/PM names, the 12/24h clock, week start and date order all come from Intl. Layouts mirror for RTL.

05

Accessible

Adjustable wheels for VoiceOver and TalkBack, fully labelled days, and selected and disabled states everywhere.

06

Fast

Native-driver animations, virtualized fixed-layout lists and memoized rows keep it at 60 fps.

Play with the pickers

Switch pickers on the phone, try a few of their props, and copy the code it writes for you.

Live codeupdates as you change props
import { DatePicker } from '@elik56a/react-native-pickers';

<DatePicker
mode="range"
value={range}
onChange={setRange}
minDate={new Date()}
markedDates={prices}
/>

Feels native. Isn't.

The same value / onChange API everywhere, typed down to the selection mode. Sheets keep a draft and commit on Done, just like the system pickers, but they match your design on every platform.

  • Controlled or uncontrolled
  • Light and dark themes that follow the OS
  • No Reanimated, Gesture Handler or SVG
  • Full TypeScript types
Core concepts โ†’
import { DatePicker, DatePickerSheet } from '@elik56a/react-native-pickers';

// inline calendar
<DatePicker value={date} onChange={setDate} minDate={new Date()} />

// range in a bottom sheet: commits on Done
<DatePickerSheet
visible={open}
onClose={() => setOpen(false)}
mode="range"
value={range}
onConfirm={setRange}
/>

How it compares to other React Native pickers

Most apps combine a native date picker, a calendar library and a select wrapper. Here is what one package covers instead.

React Native Pickers compared with native OS pickers, calendar libraries and select wrappers
React Native Pickersthis libraryNative OS pickers@react-native-community/datetimepicker, @react-native-picker/pickerCalendar librariesreact-native-calendarsSelect wrappersreact-native-picker-select
Wheel, time and date pickersYesOS styling (Yes)Calendar only (Partly)No
Date ranges and multiple datesBuilt in (Yes)NoManual marking (Partly)No
Searchable select and multi-selectYesNoNoVaries (Partly)
Emoji pickerYesNoNoNo
Bottom sheetsBuilt in (Yes)NoNoNo
Same UI on iOS, Android and webYesNoYesNo
Theming and dark modeTokens + slots (Yes)Limited (Partly)YesLimited (Partly)
No native codeYesNoUsually (Yes)No

React Native picker FAQ

Does it work in Expo Go?

Yes. There is no native code, so it runs in Expo Go, dev builds, bare React Native and the web without a rebuild or a pod install.

Does it need Reanimated or Gesture Handler?

No. It uses only React Native core: Animated with the native driver, PanResponder, FlatList and Modal. Nothing to install next to it.

Does it work with React Native Web?

Yes, with the same components and props. On wide browser windows, sheets open as a centered modal and SelectPicker opens as a dropdown under the field.

Can users pick a date range or several dates?

Yes. Set mode="range" for check-in / check-out with min and max nights, or mode="multiple" for separate days. See Date range & multiple.

Is it accessible?

Wheels are adjustable for VoiceOver and TalkBack, days announce their full date, and selected and disabled states are exposed everywhere. See Accessibility.

How big is it?

It has no dependencies. The emoji table, about 134 KB of source, is the largest part, and on the web it is tree-shaken away if you never import EmojiPicker.

Docs your AI can read, too

The whole API is available as llms.txt and llms-full.txt. Drop it into Cursor, Claude or Copilot and get correct code on the first try.