Gathering detailed insights and metrics for react-native-date-picker
Gathering detailed insights and metrics for react-native-date-picker
Gathering detailed insights and metrics for react-native-date-picker
Gathering detailed insights and metrics for react-native-date-picker
React Native Date Picker is datetime picker for Android and iOS. It includes date, time and datetime picker modes. The datepicker is customizable and is supporting different languages. It's written with native code to achieve the best possible look, feel and performance.
npm install react-native-date-picker
Module System
Min. Node Version
Typescript Support
Node Version
NPM Version
2,256 Stars
624 Commits
346 Forks
8 Watching
74 Branches
44 Contributors
Updated on 26 Nov 2024
Java (82.63%)
JavaScript (9.03%)
Objective-C++ (5.33%)
Objective-C (1.54%)
TypeScript (0.66%)
Shell (0.48%)
Ruby (0.33%)
Cumulative downloads
Total Downloads
Last day
-5.2%
38,387
Compared to previous day
Last week
8.3%
207,662
Compared to previous week
Last month
8.6%
833,339
Compared to previous month
Last year
67.4%
8,523,519
Compared to previous year
This is a React Native Date Picker with following main features:
📱 Supports iOS, Android and Expo
🕑 3 different modes: Time, Date, DateTime
🌍 Various languages
🎨 Customizable
🖼 Modal or Inlined
Thanks to our sponsors 🩷
Expo | Nordic Brain Tech | hesenger | hamxahussain | lepadatumihail |
The first option is to use the built-in modal. See code.
iOS | Android |
The second option is to use the inlined picker. Place it in a View or a custom made modal. See code.
iOS | Android |
1# npm 2npm install react-native-date-picker 3 4# yarn 5yarn add react-native-date-picker 6 7# pnpm 8pnpm add react-native-date-picker
cd ios && pod install
1# expo projects 2npx expo run:android 3npx expo run:ios 4 5# non-expo projects 6npx react-native run-android 7npx react-native run-ios
If you're having troubles after following these steps, there might be a linking issue.
1import React, { useState } from 'react' 2import { Button } from 'react-native' 3import DatePicker from 'react-native-date-picker' 4 5export default () => { 6 const [date, setDate] = useState(new Date()) 7 const [open, setOpen] = useState(false) 8 9 return ( 10 <> 11 <Button title="Open" onPress={() => setOpen(true)} /> 12 <DatePicker 13 modal 14 open={open} 15 date={date} 16 onConfirm={(date) => { 17 setOpen(false) 18 setDate(date) 19 }} 20 onCancel={() => { 21 setOpen(false) 22 }} 23 /> 24 </> 25 ) 26}
1import React, { useState } from 'react' 2import DatePicker from 'react-native-date-picker' 3 4export default () => { 5 const [date, setDate] = useState(new Date()) 6 7 return <DatePicker date={date} onDateChange={setDate} /> 8}
Prop | Description | Screenshots iOS | Screenshot Android |
---|---|---|---|
date | The currently selected date. | ||
onDateChange | Date change handler ( Inline only ) | ||
maximumDate | Maximum selectable date. Example: new Date("2021-12-31") | ||
minimumDate | Minimum selectable date. Example: new Date("2021-01-01") | ||
minuteInterval | The interval at which minutes can be selected. | ||
mode | The date picker mode. "datetime" , "date" , "time" | ||
locale | The locale for the date picker. Changes language, date order and am/pm preferences. Value needs to be a Locale ID. | ||
timeZoneOffsetInMinutes | Timezone offset in minutes (default: device's timezone) | ||
is24hourSource | Change how the 24h mode (am/pm) should be determined, by device settings or by locale. {'locale', 'device'} (android only, default: 'device') | ||
modal | Boolean indicating if modal should be used. Default: "false" . When enabled, the other modal props needs to be used. See example. | ||
theme | The theme of the modal. "light" , "dark" , "auto" . Defaults to "auto" . | ||
open | Modal only: Boolean indicating if modal should be open. | ||
onConfirm | Modal only: Date callback when user presses confirm button | ||
onCancel | Modal only: Callback for when user presses cancel button or closing the modal by pressing outside it. | ||
title | Modal only: Title text. Can be set to null to remove text. | ||
confirmText | Modal only: Confirm button text. | ||
cancelText | Modal only: Cancel button text. | ||
buttonColor | Color of the confirm and cancel buttons. (android modal only) | ||
dividerColor | Color of the divider / separator. (android only) | ||
onStateChange | Spinner state change handler. Triggered on changes between "idle" and "spinning" state (Android inline only) |
To change the font size on Android. Open styles.xml
and place this code right above the </resources>
. The font size is not possible to change in iOS out of the box, but there are some iOS workarounds.
1<style name="DatePickerTheme" parent="DatePickerBaseTheme"> 2 <item name="android:textSize">25sp</item> 3</style>
This package supports React Native's new architecture (Fabric + Turbo Modules) from React Native 0.71 and forward. Support was introduced in version 4.3.0
of react-native-date-picker
.
This package supports automatic linking. Usually, the only thing you need to do is to install the package, the cocoapods dependencies (as described above). Then rebuild the project by running react-native run-ios
, react-native run-android
or start the build from within Xcode/Android Studio. If you're running a React Native version below 0.60 or your setup is having issues with automatic linking, you can run npx react-native link react-native-date-picker
and rebuild. In some occations you'll have to manually link the package. Instructions in this issue.
The order is determined by the locale
prop. Set for instance locale='fr'
to get the french preference. ⚠️ Setting the locale
to a different id won't change the title, confirm button and cancel button texts language.
On iOS the 12/24h preference is determined by the locale
prop. Set for instance locale='fr'
to get the french preference. On Android the 12/24h format is determined by the device setting by default. Add is24hourSource="locale"
to let the locale determine the device setting on android as well. When using 12h mode the AM/PM part of the picker will be displayed. It is NOT recommended to force any specific 12/24h format, but this can be achieved by, choosing a locale which has the desired 24h preference and add is24hourSource="locale"
.
This is unfortunately not possible due to the limitation in DatePickerIOS. You should be able to create your own month-year picker with for instance https://github.com/TronNatthakorn/react-native-wheel-pick.
If you have enabled Proguard for Android you might need to ignore some classes to get the the picker to work properly in android production/release mode. Add these lines to you proguard file (often called proguard-rules.pro
):
-keep public class net.time4j.android.ApplicationStarter
-keep public class net.time4j.PrettyTime
There are no breaking changes in v4, so just bump the version number in your package json.
Use the onStateChange
prop to track the state of the spinning wheel.
1const [state, setState] = useState("idle") 2... 3<DatePicker onStateChange={setState} /> 4<ConfirmButton disabled={state === "spinning"} />
Here are some more info about the three different picker modes that are available.
Using the datetime mode gives you a react native date time picker where both date and time can be selected at the same time. The todays date will be replays with the string "Today" translated to the desired language. This is the default mode and look like this.
iOS | Android |
Add the optional datetime
mode property to use this mode. Since datetime is default this could also be exclude.
1<DatePicker 2 ... 3 mode="datetime" 4/>
The date mode displays a react native datepicker with year month and date where the year-month-date order will be adjusted to the locale. If will look similar to this:
iOS | Android |
Just add the value date
to mode property:
1<DatePicker 2 ... 3 mode="date" 4/>
The time mode can be used when only the time matters. AM/PM will be added depending on locale and user setting. It can be useful to add the timeInterval
to only display the time with for instance 15min intervals. The react native time picker look like this:
iOS | Android |
Set mode property to time
to show the time picker:
1<DatePicker 2 ... 3 mode="time" 4/>
React Native Date Picker is a cross platform component for iOS and Android. It uses native code from respective platform to get the genuine look and feel the users expect. A strong motivation for creating this picker was the datetime mode on Android. It's quite unique for the platform and avoids two different picker popups, which normally is necessary. Instead, this datetime mode requires fewer user actions and enables a great user-experience.
If you like this package, consider becoming a sponsor 🩷
No vulnerabilities found.
Reason
8 commit(s) and 5 issue activity found in the last 90 days -- score normalized to 10
Reason
no dangerous workflow patterns detected
Reason
license file detected
Details
Reason
binaries present in source code
Details
Reason
Found 2/30 approved changesets -- score normalized to 0
Reason
no effort to earn an OpenSSF best practices badge detected
Reason
security policy file not detected
Details
Reason
detected GitHub workflow tokens with excessive permissions
Details
Reason
project is not fuzzed
Details
Reason
dependency not pinned by hash detected -- score normalized to 0
Details
Reason
branch protection not enabled on development/release branches
Details
Reason
SAST tool is not run on all commits -- score normalized to 0
Details
Reason
28 existing vulnerabilities detected
Details
Score
Last Scanned on 2024-11-18
The Open Source Security Foundation is a cross-industry collaboration to improve the security of open source software (OSS). The Scorecard provides security health metrics for open source projects.
Learn More@velotzy/react-native-date-range
A Simple React Native date picker.
@dietime/react-native-date-picker
React Native date picker expo component for iOS, Android and browser. Designed using ScrollView.
react-native-common-date-picker
An awesome and cross-platform React Native date picker and calendar component for iOS and Android
@henninghall/react-native-date-picker
React native date picker