React native schedule

React native schedule DEFAULT

React Native Calendars

VersionBuild Status

This module includes various customizable React-Native calendar components.

The package is both Android and iOS compatible.

Try it out

You can run example module by performing these steps:

You can check example screens source code in example module screens

This project is compatible with Expo/CRNA (without ejecting), and the examples have been published on Expo


The solution is implemented in JavaScript so no native module linking is required.


Calendar, CalendarList, Agenda

All parameters for components are optional. By default the month of current local date will be displayed.

Event handler callbacks are called with like this:

{day: 1,// day of month (1-31)month: 1,// month of year (1-12)year: 2017,// year timestamp,// UTC timestamp representing 00:00 AM of this datedateString: '2016-05-13'// date formatted as 'YYYY-MM-DD' string}

Parameters that require date types accept formatted , JavaScript date objects, and .

Calendars can be localized by adding custom locales to object:

import{LocaleConfig}from'react-native-calendars';LocaleConfig.locales['fr']={monthNames: ['Janvier','Février','Mars','Avril','Mai','Juin','Juillet','Août','Septembre','Octobre','Novembre','Décembre'],monthNamesShort: ['Janv.','Févr.','Mars','Avril','Mai','Juin','Juil.','Août','Sept.','Oct.','Nov.','Déc.'],dayNames: ['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi'],dayNamesShort: ['Dim.','Lun.','Mar.','Mer.','Jeu.','Ven.','Sam.'],today: 'Aujourd\'hui'};LocaleConfig.defaultLocale='fr';


Basic parameters

<Calendar// Initially visible month. Default = Date()current={'2012-03-01'}// Minimum date that can be selected, dates before minDate will be grayed out. Default = undefinedminDate={'2012-05-10'}// Maximum date that can be selected, dates after maxDate will be grayed out. Default = undefinedmaxDate={'2012-05-30'}// Handler which gets executed on day press. Default = undefinedonDayPress={(day)=>{console.log('selected day',day)}}// Handler which gets executed on day long press. Default = undefinedonDayLongPress={(day)=>{console.log('selected day',day)}}// Month format in calendar title. Formatting values:{'yyyy MM'}// Handler which gets executed when visible month changes in calendar. Default = undefinedonMonthChange={(month)=>{console.log('month changed',month)}}// Hide month navigation arrows. Default = falsehideArrows={true}// Replace default arrows with custom ones (direction can be 'left' or 'right')renderArrow={(direction)=>(<Arrow/>)}// Do not show days of other months in month page. Default = falsehideExtraDays={true}// If hideArrows = false and hideExtraDays = false do not switch month when tapping on greyed out// day from another month that is visible in calendar page. Default = falsedisableMonthChange={true}// If firstDay=1 week starts from Monday. Note that dayNames and dayNamesShort should still start from SundayfirstDay={1}// Hide day names. Default = falsehideDayNames={true}// Show week numbers to the left. Default = falseshowWeekNumbers={true}// Handler which gets executed when press arrow icon left. It receive a callback can go back monthonPressArrowLeft={subtractMonth=>subtractMonth()}// Handler which gets executed when press arrow icon right. It receive a callback can go next monthonPressArrowRight={addMonth=>addMonth()}// Disable left arrow. Default = falsedisableArrowLeft={true}// Disable right arrow. Default = falsedisableArrowRight={true}// Disable all touch events for disabled days. can be override with disableTouchEvent in markedDatesdisableAllTouchEventsForDisabledDays={true}// Replace default month and year title with custom one. the function receive a date as parameterrenderHeader={(date)=>{/*Return JSX*/}}// Enable the option to swipe between months. Default = falseenableSwipeMonths={true}/>

Date marking

Disclaimer: Make sure that param is immutable. If you change object content but the reference to it does not change calendar update will not be triggered.

Dot marking

<Calendar// Collection of dates that have to be marked. Default = {}markedDates={{'2012-05-16': {selected: true,marked: true,selectedColor: 'blue'},'2012-05-17': {marked: true},'2012-05-18': {marked: true,dotColor: 'red',activeOpacity: 0},'2012-05-19': {disabled: true,disableTouchEvent: true}}}/>

You can customize a dot color for each day independently.

Multi-Dot marking

Use if you want to display more than one dot. Both the and support multiple dots by using array in prop. The property is mandatory while and are optional. If key is omitted then the array index is used as key. If is omitted then will be used for selected dates.

constvacation={key: 'vacation',color: 'red',selectedDotColor: 'blue'};constmassage={key: 'massage',color: 'blue',selectedDotColor: 'blue'};constworkout={key: 'workout',color: 'green'};<CalendarmarkingType={'multi-dot'}markedDates={{'2017-10-25': {dots: [vacation,massage,workout],selected: true,selectedColor: 'red'},'2017-10-26': {dots: [massage,workout],disabled: true}}}/>

Period marking

<CalendarmarkingType={'period'}markedDates={{'2012-05-20': {textColor: 'green'},'2012-05-22': {startingDay: true,color: 'green'},'2012-05-23': {selected: true,endingDay: true,color: 'green',textColor: 'gray'},'2012-05-04': {disabled: true,startingDay: true,color: 'green',endingDay: true}}}/>

Multi-period marking

CAUTION: This marking is only fully supported by the component because it expands its height. Usage with might lead to overflow issues.

<CalendarmarkingType='multi-period'markedDates={{'2017-12-14': {periods: [{startingDay: false,endingDay: true,color: '#5f9ea0'},{startingDay: false,endingDay: true,color: '#ffa500'},{startingDay: true,endingDay: false,color: '#f0e68c'}]},'2017-12-15': {periods: [{startingDay: true,endingDay: false,color: '#ffa500'},{color: 'transparent'},{startingDay: false,endingDay: false,color: '#f0e68c'}]}}}/>

Custom marking allows you to customize each marker with custom styles.

<CalendarmarkingType={'custom'}markedDates={{'2018-03-28': {customStyles: {container: {backgroundColor: 'green'},text: {color: 'black',fontWeight: 'bold'}}},'2018-03-29': {customStyles: {container: {backgroundColor: 'white',elevation: 2},text: {color: 'blue'}}}}}/>

NEW! While we still don't support multi marking type, we add the possibility to combine between and .

<CalendarmarkingType={'period'}markedDates={{'2012-05-15': {marked: true,dotColor: '#50cebb'},'2012-05-16': {marked: true,dotColor: '#50cebb'},'2012-05-21': {startingDay: true,color: '#50cebb',textColor: 'white'},'2012-05-22': {color: '#70d7c7',textColor: 'white'},'2012-05-23': {color: '#70d7c7',textColor: 'white',marked: true,dotColor: 'white'},'2012-05-24': {color: '#70d7c7',textColor: 'white'},'2012-05-25': {endingDay: true,color: '#50cebb',textColor: 'white'}}}/>

Keep in mind that different marking types are not compatible. You can use just one marking style for a calendar.

Displaying data loading indicator

The loading indicator next to the month name will be displayed if has prop and the collection does not have a value for every day of the month in question. When you load data for days, just set or special marking value to all days in collection.

Customizing look & feel

<Calendar// Specify style for calendar container element. Default = {}style={{borderWidth: 1,borderColor: 'gray',height: 350}}// Specify theme properties to override specific styles for calendar parts. Default = {}theme={{backgroundColor: '#ffffff',calendarBackground: '#ffffff',textSectionTitleColor: '#b6c1cd',textSectionTitleDisabledColor: '#d9e1e8',selectedDayBackgroundColor: '#00adf5',selectedDayTextColor: '#ffffff',todayTextColor: '#00adf5',dayTextColor: '#2d4150',textDisabledColor: '#d9e1e8',dotColor: '#00adf5',selectedDotColor: '#ffffff',arrowColor: 'orange',disabledArrowColor: '#d9e1e8',monthTextColor: 'blue',indicatorColor: 'blue',textDayFontFamily: 'monospace',textMonthFontFamily: 'monospace',textDayHeaderFontFamily: 'monospace',textDayFontWeight: '300',textMonthFontWeight: 'bold',textDayHeaderFontWeight: '300',textDayFontSize: 16,textMonthFontSize: 16,textDayHeaderFontSize: 16}}/>

Customize days titles with disabled styling

<Calendartheme={{textSectionTitleDisabledColor: '#d9e1e8'}}markedDates={{ ...this.getDisabledDates('2012-05-01','2012-05-30',[0,6])}}disabledDaysIndexes={[0,6]}/>


React Calendar vs. React Scheduler: What’s the Difference and When To Use Them

Today we’ll explore the differences between a React calendar and a React scheduler component so you know when to choose one over the other. We’ll also take a look at how to implement a few real-world examples.

For many years, we have used calendars in various shapes or forms. In the past, we had them hanging on the walls showing us dates and sometimes we were marking them for special occasions. However, things changed as computers and smartphones became more common. Nowadays, the concept of a calendar can be used to create a variety of applications.

The only thing is, there are different styles of calendar components with various features. It can be confusing which is the most appropriate solution for your app. So what are the basic differences between a React calendar and a React scheduler? Let’s walk through these differences, and then look at some real-life examples.

React Calendar or React Scheduler?

A React calendar component is a good choice when you need to allow users to select a specific date, like if your app has a form field for date of birth or employee start date. Another good example would be an application that allows users to book appointments. A user would be able to select a specific date and time slot from available options. For scenarios like this, a calendar component is probably the best bet.

On the other hand, a React scheduler might be used for viewing an agenda at a glance or scheduling events and tasks. These types of components can be used to see multiple agendas at once, like your work schedule and childcare plans. What’s more, they can provide a richer overview of your tasks, as often you can view your agendas by day, week or even month.

So a calendar is more likely used for a big-picture calendar, while a scheduler is used for detailed schedules/agendas.

Now let’s explore some real examples of how these two different types of components can be used, even looking at some actual code implementation. The full code examples are available in this GitHub repository. You can also try out the interactive example below.

Project Setup

Before we dive in deeper, let’s set up a React project. To quickly scaffold one, you can use Create React App or Vite. For this demo, we are going to use Create React App. You can create a React project by running one of the below commands in your terminal.

I’m going to use the KendoReact Calendar and Scheduler components for these demos. So we need to install a few packages that are needed for using KendoReact Calendar and Scheduler components.

Note: KendoReact is a commercial UI component library, and as a part of this you will need to provide a license key when you use the components in your React projects. You can snag a license key through a free trial or by owning a commercial license. For more information, you can head over to the KendoReact Licensing page.

Next, replace the contents of App.js and App.css files.



That’s it for the project setup.

React Calendar

A React calendar component can be used when you need to allow users to select a specific date. A very common example of using a calendar is for picking your date of birth. Users need to be able to select the year, month and day they were born.

This can be achieved by using a simple input, but a calendar component can provide a better user experience. It will also work better on touch-screen devices, as you don’t have to type anything. Instead, you only need to click or touch a few times to select the date you want.

Selecting a Date of Birth

Let’s start by implementing a simple calendar that will allow users to select their date of birth. We will need to implement the component from the @progress/kendo-react-dateinputs library. Below you can see the code for it.


We have one to store the selected date. We pass and props to the component to keep the state in sync. Finally, we render the selected date below the component. We also need to update the App.js file to include our component.


As the gif below shows, we have a beautiful calendar working out of the box, and we can save the date selected by a user. This example is very simple, so let’s create something a bit more complex.

The user first scrolls through a list of years, then months within that year (which also loop to other years' months), and then the individual date can be selected from a calendar view.

Book a Driving Lesson

The component can be composed with other functionality to create more complex features.

Imagine you want to book a driving lesson with your instructor. First, you would need to be able to select the day on which you want to drive. After that, you should be presented with a list of time slots that the instructor has available. Finally, you should be able to select one of the time slots. Below you can see the code for implementing that functionality.


Let’s digest the code we have in the component. First, we define a list of possible time slots available for the day. These will be picked at random when a user selects a date in the calendar. The time slots would normally come from a database, but this will suffice for our example.

Next we have and functions. The former is quite self-explanatory, as it returns a random number between the min and max passed. The latter does two things. First, it generates a random number that will indicate how many time slots we will have for the selected day. For example, if the generated number is 2, then there will be two time slots available for the day. If the number generated is the same as the amount of time slots in the array, then the array is returned.

Otherwise, it will loop until it finds the required number of time slots and then will return them sorted.

We have a few stateful values to store the selected date: available time slots and a selected time slot. Besides that, we have a that is used to cache time slots for selected dates, so we don’t have to recompute them multiple times.

The will run once when the component is mounted and then every time the booking date changes. If there is no booking date, we bail out. Otherwise, we get booking time slots from the cache or pick new ones at random and update the cache.

Finally, the component renders the calendar, buttons with available time slots, and the selected date and time.

Now, update the App.js file to include the component.


The gif below shows the functionality. As you can see, thanks to the KendoReact Calendar component, we can implement useful functionality quite easily.

Book driving slot: Once a date is selected, available time blocks appear to the right of the calendar. Changing the selected date changes the available time blocks.

A React calendar component is a good choice when you need to allow users to select a specific date. It can be used in conjunction with other components and elements to create richer and more complex functionality. Here we combined it with time slot buttons, but there are other use cases for it. For instance, it can be used together with input fields to create a date picker and date range picker. To see what else you can do with the component, you can check out its documentation.

React Scheduler

We have covered examples of using a React calendar component. Now, let’s explore using a React scheduler component. The component offered by KendoReact, as the name suggests, allows users to schedule events. It offers a lot of useful functionality and can be used to create a variety of features. A good comparison is Google Calendar, which allows users to schedule tasks, events and reminders. Some other examples include event and booking management systems or work meeting schedules.

To showcase how the can be used, we will implement a meeting room scheduler. Imagine a large office where there are a lot of employees, but only three meeting rooms. Employees should be able to reserve a room ahead of time to avoid collisions with others who would also want to meet and talk. Let’s start by creating the component.


First, we have defined the variable, which specified the details of rooms available in the office. Besides that, we could add more fields, such as whom the room was booked by, attendees and more, but just meeting rooms will do for this example.

The KendoReact Scheduler component offers five default views:

  • Timeline
  • Day
  • Week
  • Month
  • Agenda

There is no need to use all of them at once. We could just use the day, week and month views, or the other two.

Any time the data is changed by the user, the handler receives an object with properties, such as , and . These store items that were modified, so in the handler, we add a unique ID for the items that were created, and then we update or delete the rest of the items where applicable.

Last but not least, add the component in the App.js file.


Below you can see the scheduler component in action.

Looking at a calendar, a user flips through timeline, day, week, month and agenda views. They clicked to make an event  and specify which of the three rooms to use. The different rooms each have their own color on the calendar, so it's easy to tell at a glance when each room is reserved,

There are many more features available than what’s showcased in this simple example, so definitely check out the KendoReact Scheduler documentation.


There we have it. We have covered basic differences between a React calendar and a React scheduler component. As you have seen, the React calendar component can be used to implement features that allow users to select specific dates. On the other hand, the React scheduler is a good choice for meeting scheduling or agenda-like applications.

If you’re adding such components to your own app, I recommend checking out using third-party components. It’s not an easy feat to implement well-working calendar and scheduler components, so using ready-made solutions like the ones found in KendoReact is a good idea, as you get nice-looking and feature-rich components out of the box. What’s more, both components provide support for dealing with time zones, localization and internationalization, so they can save you a lot of time and effort.

KendoReact, react

  1. Glitch trap
  2. Ark gasmask
  3. Video door bell

20 Best React Native Calendars Libraries to Ease your App Development

Top 10 React Native App Development Companies in USA

React Native is the most popular dynamic framework that provides the opportunity for Android & iOS users to download and use your product. Finding a good React Native development company is incredibly challenging. Use our list as your go-to resource for React Native app development Companies in USA.

List of Top-Rated React Native Mobile App Development Companies in USA:

  1. AppClues Infotech
  2. WebClues Infotech
  3. AppClues Studio
  4. WebClues Global
  5. Data EximIT
  6. Apptunix
  7. BHW Group
  8. Willow Tree:
  9. MindGrub
  10. Prismetric

A Brief about the company details mentioned below:

1. AppClues Infotech
As a React Native Mobile App Development Company in USA, AppClues Infotech offers user-centered mobile app development for iOS & Android. Since their founding in 2014, their React Native developers create beautiful mobile apps.

They have a robust react native app development team that has high knowledge and excellent strength of developing any type of mobile app. They have successfully delivered 450+ mobile apps as per client requirements and functionalities.

2. WebClues Infotech
WebClues Infotech is the Top-Notch React Native mobile app development company in USA & offering exceptional service worldwide. Since their founding in 2014, they have completed 950+ web & mobile apps projects on time.

They have the best team of developers who has an excellent knowledge of developing the most secure, robust & Powerful React Native Mobile Apps. From start-ups to enterprise organizations, WebClues Infotech provides top-notch React Native App solutions that meet the needs of their clients.

3. AppClues Studio
AppClues Studio is one of the top React Native mobile app development company in USA and offers the best service worldwide at an affordable price. They have a robust & comprehensive team of React Native App developers who has high strength & extensive knowledge of developing any type of mobile apps.

4. WebClues Global
WebClues Global is one of the best React Native Mobile App Development Company in USA. They provide low-cost & fast React Native Development Services and their React Native App Developers have a high capability of serving projects on more than one platform.

Since their founding in 2014, they have successfully delivered 721+ mobile app projects accurately. They offer versatile React Native App development technology solutions to their clients at an affordable price.

5. Data EximIT
Hire expert React Native app developer from top React Native app development company in USA. Data EximIT is providing high-quality and innovative React Native application development services and support for your next projects. The company has been in the market for more than 8 years and has already gained the trust of 553+ clients and completed 1250+ projects around the globe.

They have a large pool of React Native App developers who can create scalable, full-fledged, and appealing mobile apps to meet the highest industry standards.

6. Apptunix
Apptunix is the best React Native App Development Company in the USA. It was established in 2013 and vast experience in developing React Native apps. After developing various successful React Native Mobile Apps, the company believes that this technology helps them incorporate advanced features in mobile apps without influencing the user experience.

7. BHW Group
BHW Group is a Top-Notch React Native Mobile App Development Company in the USA. The company has 13+ years of experience in providing qualitative app development services to clients worldwide. They have a compressive pool of React Native App developers who can create scalable, full-fledged, and creative mobile apps to meet the highest industry standards.

8. Willow Tree:
Willow Tree is the Top-Notch React Native Mobile App Development Company in the USA & offering exceptional React Native service. They have the best team of developers who has an excellent knowledge of developing the most secure, robust & Powerful React Native Mobile Apps. From start-ups to enterprise organizations, Willow Tree has top-notch React Native App solutions that meet the needs of their clients.

9. MindGrub
MindGrub is a leading React Native Mobile App Development Company in the USA. Along with React Native, the company also works on other emerging technologies like robotics, augmented & virtual reality. The Company has excellent strength and the best developers team for any type of React Native mobile apps. They offer versatile React Native App development technology solutions to their clients.

10. Prismetric
Prismetric is the premium React Native Mobile App Development Company in the USA. They provide fast React Native Development Services and their React Native App Developers have a high capability of serving projects on various platforms. They focus on developing customized solutions for specific business requirements. Being a popular name in the React Native development market, Prismetric has accumulated a specialty in offering these services.

#top rated react native app development companies in usa #top 10 react native app development companies in usa #top react native app development companies in usa #react native app development technologies #react native app development #hire top react native app developers in usa

React Native - Using an API to populate the calendar

What is the best way to schedule a task in react native?

I will answer my own question to see if this information can be of used by anyone looking for it.

Since the different mobile OSs tend to kill background jobs, or stall them to save battery, there are few deterministic methods to schedule tasks in react native. I use a combination of the following:

Beware of the dragons: your app might be closed if it abuses execution time or memory usage after a system wake up. You may have to rehydrate all listeners after the phone was left without battery. So the user still needs to interact heavily with your app.

Update: From Android O there are very strict background execution limits. When using a HeadlessJSTask service, ensure that it is launched as a foreground service if you want it to last longer than a few seconds. It may require a notification with it. Take into account that only loading the bundle can take up to a few seconds, depending on your app and the device.


Native schedule react

React Native Schedule View

This React Native component provides a scheduling view with space for unused time. Similar to Google Calendar's Day View.


Installing is pretty simple:



importReactfrom'react';importRNSchedulefrom'rnschedule';constdata=[{title: 'Lunch Appointment',subtitle: 'With Harry',start: newDate(2018,11,2,13,20),end: newDate(2018,11,2,14,20),color: '#390099',}]constApp=()=><RNScheduledataArray={data}onEventPress={(appt)=>console.log(appt)}/>exportdefaultApp


Gif Demo


  • Moving "now" bar.
  • Initial loads view on today centered on "now."
  • Customizable appointment colors.
  • Scaled size of an hour to improve readability on various device sizes.
  • Adjustable hour sizing to make it size to whatever you want.

Properties API

None of the following properties are required. A simple Will still render an empty schedule.

Change the width of lines between hours.Number
Background color of the calendar header strip. Acceptable formats: Hex, RGB(A), HSL(A), HSV(A), and named strings. See Tinycolor for all formats.String or Object
Array of date appointment objects. See below example.Array
Include your own icon to the left of the day number.React Component
Color of day circle in top left. Accepts Tinycolor formats.String or Object
Do you want extra margin for the status bar for iOS?Boolean
Return function for pressing a schedule event. Returns original data.Function

Data Array Appt Objects

The dataArray prop must be an Array of appointment objects with the following format.

Appt Object API
Top title for the appointment.String
Slightly less bolded subtitle.String
When the appointment starts.Date
When the appointment ends.Date
Background color for the appointment.Tinycolor Accepted String/Object

For onEventPress function - additional properties may be passed so long as they don't interfere with the above api.

Built With

Thanks to these wonderful people for making some great stuff.


I'm looking to add new contributors/maintainers to help out. So if you like this repo and want to help make it better let me know.

To-Do List

The component is very much under-construction. Want to help build something? Here is my to-do list:

  • Provide more control over Day Selector Styling.
  • Work on speed optimization.
  • Swipe to change days.
  • Full Day appointments.
  • Multi-Day appointments.
  • Option for dots on days with appts.
  • Events longer than 24 hours.
  • Spec UI to Material Design.
  • Build out testing.
  • Contribution guidelines.
  • Break out schedule view as stand-alone without cal select header.
  • Fix Shadowing on Header - feels weird.

Special Thanks

  • Special thanks to Wix's RN Calendar for getting things started and providing inspiration.
Get started with Event Calendar in React Native


npm versionBuild StatusCoverage Status

A mobile-friendly when2meet-style grid-based schedule selector built with styled components and date-fns.

Live example


Getting Started

is a controlled component that can be used easily with the default settings. Just provide a controlled value for and include an handler and you're good to go. Further customization can be done using the props outlined below.

To customize the UI, you can either:

  1. Specify values for the color, margin, format, etc. props
  2. Use the render prop to handle rendering yourself.


description: List of dates that should be filled in on the grid (reflect the start time of each cell).

required: yes

type: |

description: The behavior for selection when dragging. selects a square with the start and end cells at opposite corners. selects all the cells that are chronologically between the start and end cells.

required: no

default value:


description: Called when selected availability is changed. The new list of selected dates is passed in as the first parameter.

required: yes


description: The date on which the grid should start (time portion is ignored, specify start time via )

required: no

default value: today


description: The number of days to show, startin from today

required: no

default value:


description: The minimum hour to show (0-23)

required: no

default value:


description: The maximum hour to show (0-23)

required: no

default value:


description: The date format to be used for the column headers

required: no

default value:


description: The margin between grid cells (in pixels)

required: no

default value:


description: The color of an unselected cell

required: no

default value:


description: The color of an unselected cell

required: no

default value:


description: The color of a hovered cell

required: no

default value:


description: A render prop function that accepts the time this cell is representing and whether the cell is selected or not and returns a React element. It is your responsibility to apply the as a ref to the component you render -- neglecting to do so will cause the component to not work properly for touch devices. If you choose to use this custom render function, the color props above have no effect.

required: no

Sours: /advisor/

Now discussing:


314 315 316 317 318