JavaScript Scheduler for Booking and Resource Scheduling

The Syncfusion JavaScript Scheduler is a flexible, high-performance event calendar control for managing appointments, events, and resources. It supports booking systems, appointment scheduling, and resource scheduling applications with flexible calendar views and scheduling interactions. Designed for complex scheduling scenarios, it helps developers build user-friendly calendar experiences without extensive custom UI development.

Installation & Quick Start

Follow these three steps to integrate the Scheduler into your JavaScript application.

1

Install the Scheduler package

Install the Syncfusion Schedule package and Tailwind3 theme package using npm.

npm install @syncfusion/ej2-schedule
npm install @syncfusion/ej2-tailwind3-theme

2

Add the required CSS references

Import the required Syncfusion styles into the src/styles/styles.css file.

@import "../../node_modules/@syncfusion/ej2-tailwind3-theme/styles/schedule/index.css";

3

Add the Schedule component

Add the Schedule component in the src/app/app.ts file.

import { Schedule, Day, Week, WorkWeek, Month, Agenda } from '@syncfusion/ej2-schedule';

Schedule.Inject(Day, Week, WorkWeek, Month, Agenda);

const currentYear: number = new Date().getFullYear();
let data: Object[] = [
  {
    Id: 101,
    Subject: 'Scrum Meeting',
    StartTime: new Date(currentYear, 4, 28, 9, 0),
    EndTime: new Date(currentYear, 4, 28, 10, 0),
  },
  {
    Id: 102,
    Subject: 'Design Review',
    StartTime: new Date(currentYear, 4, 28, 11, 0),
    EndTime: new Date(currentYear, 4, 28, 12, 30),
  }
];
let scheduleObj: Schedule = new Schedule({
  height: '550px',
  selectedDate: new Date(currentYear, 4, 28),
  eventSettings: { dataSource: data }
});

scheduleObj.appendTo('#Schedule');
<!DOCTYPE html>
<html lang="en">

  <head>
    <title>Essential JS 2</title>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no" />
    <meta name="description" content="Essential JS 2" />
    <meta name="author" content="Syncfusion" />
    <!-- Syncfusion styling reference -->
    <link href="/styles/styles.css" rel="stylesheet" />
  </head>

  <body>
    <div>
      <!--An HTML Schedule element that renders a Schedule.-->
      <div id="Schedule"></div>
    </div>
  </body>
</html>

Get Started Now

No credit card required.

Why choose Syncfusion JavaScript Scheduler?

Javascript Scheduler High Performance image

High performance

Handle large numbers of resources and events with fast loading and smooth scrolling using virtual scrolling and on-demand data loading.

Javascript Scheduler Seamless Data Binding image

Flexible data binding

Connect easily to REST APIs, JSON, or cloud data sources. Supports real-time updates and seamless integration with modern application backends.

Syncfusion Agentic Ui Builder image

AI-Assisted Development

Build scheduling and calendar experiences faster with the Agentic UI Builder and Syncfusion Agent Skills. Generate appointment workflows, recurring events, resource scheduling, and timeline views with minimal manual effort.

Javascript Scheduler Adapts To Any Resolution image

Fully responsive

Adaptive layout delivers a consistent scheduling experience across desktops, tablets, and mobile devices without additional configuration.

Javascript Scheduler Attractive Customizable Themes image

Customizable themes

Personalize the scheduler’s appearance using built-in themes or custom styling to match your application’s design and branding. Utilize the online Theme Studio tool to customize themes of Scheduler easily.

Javascript Scheduler Globalization image

Globalization support

Supports multiple languages, time zones, and regional formats, enabling developers to build scheduling applications for global users.

JavaScript Scheduler Use Cases

Build scheduling and booking applications for scenarios such as hospitality reservations and employee shift scheduling.

Hotel and hospitality management.

Hotel reservations

Handle room bookings and guest schedules efficiently. Easily update and reschedule reservations using intuitive scheduling interactions.

View Hospitality Scheduling Demo

Employee shift and workforce management.

Employee shift scheduling

Plan employee shifts, assign roles, and manage workforce availability. Simplify staff coordination and scheduling operations.

View Workforce Scheduling Demo

AI Scheduler for Smarter Planning

The AI Scheduler organizes your calendar with ease. Just type instructions like, “Meet the team every Friday at 10 AM”, and it handles the rest. It checks for conflicts, suggests optimal times, and organizes your calendar visually.

Experience smarter scheduling with this demo

Javascript Smart Scheduler image

JavaScript Scheduler views: day, week, month, year and timeline

A wide variety of built-in view modes are available: day, week, workweek, month, agenda, month-agenda, year, and timeline. Easily configure each individual view with different, view-specific options.

Day view in JavaScript Scheduler control.

Day, week, and workweek views

Display appointments for a single day or across multiple days.

Month view in JavaScript Scheduler control.

Month view

Display events and appointments on a single day or multiple days for an entire month.

Agenda view in JavaScript Scheduler control.

Agenda view

Load events virtually and display them as a list in a sequential order grouped by day. An option exists to specify the number of days to load initially in the agenda view.

Month agenda view in JavaScript Scheduler control.

Month agenda view

Display the calendar layout and the events of the currently selected date. A round indicator at the bottom of a date shows the presence of one or more events on that day.

Year view in JavaScript Scheduler control.

Year view

Year view displays all the months of a particular year in a calendar view format. In that calendar view, dates containing events and appointments are highlighted with dots placed under the individual date. When you click on the date, the event pop-up will be displayed and the events will be listed.

Timeline view in JavaScript Scheduler control.

JavaScript Scheduler timeline views

It provides five built-in timeline views: timeline day, timeline week, timeline workweek, timeline month, and timeline year. Each view displays events accurately across a horizontal time axis for a single day or multiple days. To provide better performance, timeline views load resources, events, and appointments virtually on every scroll action.


Recurring events in JavaScript Scheduler.

Recurring event scheduling

Easily create and manage recurring appointments with flexible recurrence rules. Schedule daily, weekly, monthly, or custom recurring events, and handle exceptions or modifications without affecting the entire series. This makes it ideal for applications such as appointment booking systems, healthcare scheduling, and workforce planning tools.


Resource scheduling

Efficiently manage and schedule multiple resources such as meeting rooms, employees, equipment, or service providers. Group events by resource, track availability, and prevent scheduling conflicts. This is essential for resource planning, workforce management, and reservation systems.

Multiple resources and grouping in JavaScript Scheduler.


JavaScript Scheduler event drag and drop

Drag-and-drop scheduling

Enable intuitive scheduling with built-in drag-and-drop and resizing capabilities. Users can quickly move appointments, adjust durations, or update schedules directly from the interface. This improves scheduling efficiency and provides a seamless user experience in calendar and scheduling applications.


Time zone support

Regardless of the system time zone, the scheduler supports setting the required time zone for both the control and its events.

Illustration of time zone support of JavaScript Scheduler.


Real-time data synchronization

Real-time appointment data accurately synchronizes with our JavaScript Scheduler.

Illustration of Google Calendar integration with JavaScript Scheduler.

Outlook and Google Calendar integration

Integrate Scheduler events with external calendars such as Google Calendar and Outlook using calendar APIs or iCalendar data.

Illustration of real-time updates of JavaScript Scheduler.

Real-time updates

Bidirectional data communication conveys the server-side appointment updates made on Scheduler to all the connected clients through SignalR.


Advanced event-handling options

The Scheduler provides clear, vibrant, exact representations of events and appointments across the timeline based on their assigned time duration.

Illustration of add and edit capabilities of JavaScript Scheduler.

Add and edit capabilities

There is built-in support for better event handling, such as easier appointment creation and editing using the default event editor or through intuitive drag-and-resize actions. In addition, you can also add custom data fields to both the events and resource data source.

Illustration of multiple event selection in JavaScript Scheduler.

Multi-event selection

Easily select multiple events at once by pressing and holding the Ctrl key while clicking on events. On mobile devices, do the same by tapping and holding an event, and continue selecting by single-tapping other events. After successfully selecting events, delete or reposition them simultaneously.

Illustration of event tooltips of JavaScript Scheduler.

Tooltip

The customizable tooltip displays event information while the mouse pointer is hovering over the event. Do the same on mobile devices by tapping and holding an event.

Illustration of event customization with JavaScript Scheduler.

Appearance customization

Change the look and feel of JavaScript Scheduler events and appointments by customizing their default appearance and style using any HTML or CSS.

Illustration of clipboard support of JavaScript Scheduler.

Clipboard

The JavaScript Scheduler supports clipboard functionality, allowing users to manage events efficiently. Users can copy selected events using the Ctrl+C shortcut, cut events with Ctrl+X, and paste events into different time slots using Ctrl+V.

Inline appointment in JavaScript Scheduler control.

Inline appointment

With this feature enabled, users can create and edit appointments inline through a single click on the scheduler cells or on the existing appointment’s subject. Pressing Enter after the new subject text is typed in the inline text box will update and save the appointment appropriately.


Customizable scheduler views

Configure individual Scheduler views with different settings, intervals, grouping options, and templates to match specific scheduling requirements.

Unique view in JavaScript Scheduler control.

Unique view configurations

Easily configure each individual view mode with different calendar settings. For example, you can enable the grouping feature in month view and apply event templates in week view.

Extensible view intervals in JavaScript Scheduler control.

Extensible view intervals

Display multiple days, weeks, and months by extending each view mode based on the provided interval count.


Block time interval

Block specific time ranges to prevent the creation of events and appointments during those time slots.

Block time intervals in JavaScript Scheduler control.


Row auto height in JavaScript Scheduler control.

Adaptive rows

A built-in option has been added to the JavaScript Scheduler to automatically increase the height of the rows in month and timeline views when new concurrent events or appointments are added.


Context menu

Context menu integrated with JavaScript Scheduler opens when a cell or appointment is right-clicked.

Context menu in JavaScript Scheduler control.


Feature-rich calendar options

Configure working days, working hours, time intervals, week numbers, weekends, and time formats to match different scheduling requirements.

Illustration of first day of the week of JavaScript Scheduler.

First day of the week

Customize the first day of the week, which defaults to Sunday, as per the default locale. You can utilize this option for individual views also.

Illustration of setting start and end hours on JavaScript Scheduler.

Custom start and end hours

Display the event scheduler layout with specific time durations by hiding the unwanted hours.

Illustration of timescale options of JavaScript Scheduler.

Flexible timescale

Use customizable timescale options to view a timeline of events clearly and set a different duration.

Illustration of working time of JavaScript Scheduler.

Working time

The active cells of the scheduler (displayed in white) visually represent the work days and working hours.

Illustration of current time highlighting in JavaScript Scheduler.

Highlighting current time

Indicate the current date with a highlighted date header. Mark accurately the current time on all views.

Illustration of hiding weekend days in JavaScript Scheduler.

Hiding weekend days

Hiding weekend days from the Scheduler allows you to display only working days across all views.

Illustration of displaying week numbers in JavaScript Scheduler.

Week number display

Display the week number of the current date range beside the date header in day, week, and workweek views. Also, display the week number in the month view as the first column. The week number is determined by the first day of the week and week rules (first day or first full week, or first four-day week).

Illustration of displaying time format in JavaScript Scheduler.

Time mode

The Scheduler control supports both 12-hour and 24-hour time formats.


Completely customizable UI

Customize the appearance of any part of the Scheduler interface using HTML and CSS styles.

Illustration of date header customization in JavaScript Scheduler.

Date header

Change the default appearance of the header bar by adding any kind of CSS, custom text, or image.

Illustration of complete JavaScript Scheduler customization.

Complete Scheduler UI

A built-in client-side event allows the end users to customize any part of the Scheduler user interface.

Illustration of common header bar in JavaScript Scheduler.

Header bar

Add custom items to the default header bar options. You can hide or show common header bar options.

Illustration of cell customization with JavaScript Scheduler.

Scheduler cells

Out-of-the-box template options allow you to easily customize the cells by adding any kind of text, image, or CSS.

Illustration of quick pop-ups in JavaScript Scheduler.

Quick pop-ups

Easily customize pop-ups that open when single-clicking on cells, events, or appointments with your own UI or template design.

Illustration of event editor of JavaScript Scheduler.

Open event editor externally

A built-in method is available to open the default event editor window programmatically.


User-friendly interactions

The modern and trendy UI design of the JavaScript Scheduler makes the user interactions simpler and more efficient.

Pop-up displaying event information.

Quick event overview

Clicking or tapping on events displays their important details, such as subject and time, along with edit and delete options.

JavaScript Scheduler cell selection.

Cell selection

Click and drag the pointer over the Scheduler cells for multiple-cell selection. You can do the same with keyboard shortcuts.

Event container displayed in month calendar.

Event container

Clicking on the text indicator (+n more) in month and timeline views will open an event container listing all the hidden event and appointment details of a day.

Navigation options in JavaScript Scheduler.

Quick navigation

The JavaScript Scheduler provides an intuitive way to navigate back and forth among the date ranges using an inline calendar, and also to navigate between different view modes.


Interactive features

The JavaScript Scheduler allows users to export its events in two ways: as an Excel file or as an ICS file.

Illustration of Excel export support in JavaScript Scheduler.

Export to Excel

The JavaScript Scheduler allows you to export all its events to an Excel document by default. It also provides additional customization options to export custom event data collections.

Illustration of export and import ICS files in JavaScript Scheduler.

Export and import ICS

The JavaScript Scheduler supports exporting all its event data to iCal format, and it supports importing events from an iCal file.

JavaScript Scheduler developer-friendly APIs.

Developer-friendly APIs

Developers can have full control over the UI and behavior of the event calendar through its built-in, developer-friendly APIs. It allows you to customize even the complex Scheduler functionalities with ease.


Accessibility

The JavaScript Scheduler control is easily accessed by screen readers. Complete keyboard interaction support has also been provided.

Accessibility enabled JavaScript Scheduler.

Completely accessible

The JavaScript Scheduler control has complete WAI-ARIA accessibility support. The Scheduler UI includes high-contrast visual elements, giving visually impaired people the best viewing experience. Also, valid UI descriptions are easily accessible through assistive technologies such as screen readers.

Keyboard interactive JavaScript event calendar.

Keyboard interactive

Various keyboard shortcuts are available to perform almost all the Scheduler actions, such as multiple cell or event selection and navigating to other views.

Right to left support in JavaScript Scheduler.

Right to left (RTL)

Render the event scheduler following the proper right-to-left conventions.




AI-assisted development

Build feature-rich JavaScript Scheduler experiences faster

Accelerate scheduling application development with Syncfusion AI tools that turn requirements into fully configured calendar and event management experiences with minimal manual setup.

Sf Agent Skills image

Agent Skills

Accelerate development with Syncfusion AI Agent Skills for faster implementation and integration.

Example Prompt Generate a JavaScript scheduler with recurring appointments, resource grouping, and drag-and-drop editing.

Explore Agent Skills

Sf Ai Coding Assistant image

MCP Server

Accelerate development with AI that generates, configures, and troubleshoots component code directly in your IDE.

Example Prompt Show how to bind remote appointments and enable timeline views in the Syncfusion JavaScript Scheduler.

Explore MCP Server

Frequently Asked Questions

A JavaScript Scheduler control is a feature-rich JavaScript event calendar for displaying and managing events, appointments, meetings, bookings, and resources. The Syncfusion JavaScript Scheduler supports multiple calendar views, recurring events, drag-and-drop scheduling, resource grouping, time zones, and event editing.

The JavaScript Scheduler supports day, week, workweek, month, agenda, month agenda, and year views. It also provides timeline day, timeline week, timeline workweek, timeline month, and timeline year views for horizontal scheduling.

The JavaScript Scheduler supports daily, weekly, monthly, yearly, and custom recurring events. You can also modify individual occurrences and manage exceptions without affecting the entire recurring series.

For additional details, refer to our comprehensive documentation on recurring events in the JavaScript Scheduler.

Install or load the Syncfusion JavaScript Scheduler, add the required calendar views, initialize the Scheduler, and bind an event data source. You can then configure appointments, recurring events, resources, drag-and-drop scheduling, and time zones.

The JavaScript Scheduler uses virtual scrolling to efficiently handle large numbers of resources and events. It loads and renders the required scheduling data as users scroll, helping reduce initial rendering time and memory usage for large schedules.

For more information, refer to our detailed documentation available on Virtual scrolling in JavaScript Scheduler.

The Syncfusion JavaScript Scheduler is a commercial control. However, eligible individuals and organizations can use it for free through the Syncfusion Community License. Refer to the Community License page for the current eligibility requirements.

Yes. The JavaScript Scheduler supports drag-and-drop scheduling to move appointments between time slots and event resizing to adjust their duration. These interactions provide a convenient way to reschedule and update appointments directly within the Scheduler.

Yes. The Syncfusion JavaScript appointment scheduler can be used to create and manage appointments, recurring bookings, resources, and time zones. Users can also add, edit, move, and resize appointments directly within the Scheduler.

Yes. The JavaScript Scheduler supports resource grouping for rooms, employees, equipment, service providers, and other resources. Resources can be organized in calendar and timeline views, including multilevel grouping for complex scheduling scenarios.

For additional details, refer to the comprehensive documentation on resources and grouping in the JavaScript Scheduler.

Trusted by the world’s leading companies

Syncfusion Trusted Companies

Our Customers Love Us

Having an excellent set of tools and a great support team, Syncfusion® reduces customers’ development time.
Here are some of their experiences.
Recent activities
Up arrow icon
Syncfusion Feedback