Skip to main content
v0.23.1 Β· Expo Go Β· iOS Β· Android Β· Web

Every picker your
React Native app needs.

Wheel, time, duration, date, month, range, select, country, phone, time zone, emoji and color pickers, plus the sheets and fields to put them in. Native on iOS, Android and the web, yours to customize, and 100% JavaScript with zero native code.

components
19
native modules
0
emojis
1,923
TypeScript
100%

One package. One API. Every picker.

Built for real apps

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

Why this library β†’
01

Native on every platform

iOS on iPhone, Material Design on Android, a web design in the browser, from one code path. Want one look everywhere? Set design="ios".

02

Zero native code

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

03

Yours to customize

Design tokens, automatic dark mode, a typed style slot for every part, and render props when you need full control. Your settings always win over the design.

04

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.

05

Search anything

Searchable selects and multi-selects, or search your server as the user types, with a loader, debounce and paging.

06

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.

07

Accessible

Adjustable wheels for VoiceOver and TalkBack, fully labelled days, arrow keys on the web, and selected and disabled states everywhere.

08

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

Tap a field on the phone to see its code.

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, in each platform's design and your brand's colors.

  • Controlled or uncontrolled
  • iOS, Material and web designs
  • 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-selectLocal or server (Yes)NoNoVaries (Partly)
Emoji pickerYesNoNoNo
Bottom sheetsBuilt in (Yes)NoNoNo
Native look on iOS, Android and webOr one look everywhere (Yes)YesNoNo web (Partly)
Theming and dark modeTokens + slots (Yes)Limited (Partly)YesLimited (Partly)
Zero 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 look native on iOS and Android?

Yes. Each platform gets its own design: iOS on iOS, Material Design on Android and a web design in the browser. For one look everywhere, set design="ios" on PickersProvider. See Designs.

Can I customize the look?

Fully. Colors, radius, spacing and fonts are theme tokens with light and dark variants, every part takes a style through styles, and render props replace rows, days and triggers. Your settings always win over the design. See Theming.

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, in a web design. Fields and SelectPicker open a dropdown under the field, and sheets open as a centered modal on wide windows.

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. On the web, arrow keys move through calendars, lists and grids and step wheels and sliders. 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.