A JavaScript scheduler that feels
like a real application.
Drag to reschedule, resize to adjust, click to edit, switch views — every interaction below runs on the same core your JavaScript app ships. No mockups, no video: this is the scheduler itself.
A live @coreui/scheduler instance running on this page · open the full-page demo →
From npm install
to a working scheduler.
Install the package, load the stylesheet, and pass an element and your events — the sample on the right is complete and runnable. Every feature after that is a single option: resources, businessHours, dataSource.
No build step required. The UMD bundle registers coreui.Scheduler on the global namespace, so a script tag is enough — or import the ES module in any bundler.
Dates are plain ISO strings and every change arrives through a namespaced DOM event with a revert callback. Full setup in the installation docs.
npm install @coreui/scheduler
import { Scheduler } from '@coreui/scheduler' import '@coreui/scheduler/dist/css/scheduler.css' const element = document.getElementById('scheduler') new Scheduler(element, { view: 'week', timeZone: 'Europe/Warsaw', events: [ { id: 'standup', title: 'Standup', start: '2026-09-07T09:00', end: '2026-09-07T09:15', rrule: 'FREQ=DAILY' }, ], }) element.addEventListener('eventChange.coreui.scheduler', (event) => { // persist to your API; call event.revert() if it rejects })
No premium tier.
Everything is included.
Established schedulers keep resource views and timelines in their paid enterprise plans, or split recurrence and lazy loading into a premium SKU. The CoreUI JavaScript scheduler ships one edition: every feature below is in the single licence, documented, and TypeScript-typed.
| Feature | What you get | JavaScript edition |
|---|---|---|
| Day & week views | Time-grid views with a configurable visible-hours window, overlap layout, and midnight-crossing continuation. | ✓ Included |
| Month view | A week-aligned month grid with spanning multi-day bars, per-day chips, and +N more overflow. | ✓ Included |
| Agenda view | A chronological list grouped by day over a rolling window — empty days hidden. | ✓ Included |
| Resource view | One column per room, person, or machine, virtualized past a dozen resources. | ✓ Included |
| Timeline view | Resources as rows across a continuous multi-day axis, overlaps stacked into sub-lanes. | ✓ Included |
| Drag & drop | Move and resize with snapping, a live ghost preview, Escape to cancel, and long-press drag on touch. | ✓ Included |
| Recurrence | Raw RFC 5545 RRULE strings with exception dates and windowed, DST-safe expansion. | ✓ Included |
| Event creation | Drag across empty slots — or create entirely from the keyboard. | ✓ Included |
| Business hours | Shade non-working time and days; optionally reject operations outside them. | ✓ Included |
| Overlap control | Reject colliding drops, resizes, and creations — scoped per resource. | ✓ Included |
| Remote data | Per-range loading and persistence with automatic revert when the server rejects a change. | ✓ Included |
| Keyboard & accessibility | A keyboard equivalent for every drag operation, live-region announcements, ARIA grid semantics. | ✓ Included |
| Localization | Intl date formatting, overridable labels, and seven ready-made language packs. | ✓ Included |
| Styling & theming | Every visual knob is a CSS variable resolving through CoreUI semantic tokens — dark mode included. | ✓ Included |
Every row links to its documentation page with runnable JavaScript examples. The full option, event, and method reference lives in the API docs.
One engine.
Four thin bindings.
All scheduling logic — the time model, recurrence expansion, event layout, and the interaction state machine — lives in a framework-free TypeScript core. The JavaScript edition is a thin rendering layer over it, so behavior can't drift between frameworks.
Recurrence keeps wall-clock time across daylight-saving transitions in any IANA zone, occurrences in the spring-forward gap shift with it, and durations stay real elapsed time — verified by a dedicated DST test pack. How expansion works is documented in the recurrence docs.
Buy one scheduler.
Get all four editions.
MUI X Scheduler is React-only and keeps recurrence in its premium plan; FullCalendar sells resource views and timelines as a separate premium licence. One CoreUI Scheduler licence covers the JavaScript core and the React, Vue, and Angular editions — every view and every feature included, with identical markup and one shared stylesheet.
| A team using two frameworks | CoreUI Scheduler | Per-framework vendors | React-only vendors |
|---|---|---|---|
| Frameworks covered | JavaScript, React, Vue & Angular | One product per framework | React only |
| Resource views & timeline | Included | Often a separate premium licence | Timeline in the premium plan |
| Recurring events | Included, RFC 5545 | Varies by product | Premium plan |
| Licences to buy | One — $199 per developer early access ($349 after launch) | One per framework, per developer | One — plus a second vendor for the other framework |
Drag & drop
without the mouse.
WCAG 2.2's dragging-movements criterion requires a single-pointer alternative for every drag. In the CoreUI Scheduler the keyboard path is not an alternative bolted on afterwards — it drives the exact same interaction machine as the pointer, and the full no-mouse scenario runs in CI on every build.
- Grab, move, confirm — Enter grabs an event, ←→↑↓ move it by snap step or day, Enter confirms, Escape cancels — pointer drags included
- Create from the keyboard — a roving-tabindex slot grid: anchor a selection with Enter, extend with arrows, confirm to create
- Announced operations — grabbing, moving, resizing, creating, deleting, cancelling, and rejected drops all speak through a polite live region, in your language
- Grid semantics —
role="grid"with row and column counts and indexes across the time grid, month, and timeline views; a focus-trapped,aria-modaledit dialog - Documented limits — the accessibility docs state exactly what ships today and what is planned, instead of a vague "accessible" checkbox
Built by a team
you already depend on.
CoreUI has shipped open-source and commercial UI components since 2013: more than 43,000 GitHub repositories depend on coreui/coreui, and the libraries see roughly 490,000 npm downloads a week. The Scheduler is built and supported by the same team — alongside the CoreUI component library it pairs with.
No. The UMD bundle registers coreui.Scheduler on the global namespace, so a stylesheet link and a script tag are enough — the same pattern as CoreUI's other vanilla components. ES modules are included for bundler users, and everything is TypeScript-typed.
About 66 KB minified and gzipped — including the Temporal date engine, the RRULE recurrence engine, and resource virtualization. There is no separate date library to install or ship.
CoreUI Scheduler is at version 0.1.0 — stable enough to build on today, but not yet 1.0. You get every edition and every feature right now, plus all upcoming features and fixes as they land. Until 1.0, expect occasional small breaking changes, always documented in the changelog with migration notes. In return, early access is the lowest price the Scheduler will ever have.
Events carry raw RFC 5545 RRULE strings, and occurrences are expanded only for the visible range. Each occurrence keeps the series' wall-clock time across daylight-saving transitions in the scheduler's IANA time zone — an occurrence falling into the spring-forward gap shifts with it, and durations stay real elapsed time. A dedicated DST test pack runs in CI.
Yes — every drag operation has a keyboard equivalent driving the same interaction machine: grab with Enter, move with arrows, confirm with Enter, cancel with Escape. Operations are announced through a live region, and the no-mouse create → move → resize → delete scenario runs in CI on every build, satisfying WCAG 2.2 dragging movements.
Hand the scheduler a dataSource and it loads events for the visible range as users navigate, and persists every drag, resize, edit, and delete to your API — reverting automatically when the server rejects a change.
- 0.1.0-rc.0Current early-access release — every feature on this page is shipped and documented.
- 1.0.0On the road to 1.0, occasional small breaking changes land with migration notes in the changelog.
Page last updated August 12, 2026
A native <CScheduler> component — hooks-friendly, React 19-ready, at home in Next.js.
A Vue 3 component built for the Composition API, typed end to end.
A standalone <c-scheduler> component on signals for current Angular.
One scheduler, four editions — features, live demo, and pricing on a single page.
One license. Every framework.
Buy once and build with the JavaScript core and the React, Vue, and Angular editions — no per-framework lock-in. Get early access at the lowest price the Scheduler will ever have.
- All four editions — JavaScript, React, Vue, and Angular under one license
- Unlimited projects — build unlimited commercial and personal apps, no per-project fees
- Every feature — six views, recurrence, resources, drag & drop, remote data, and the timeline included
- TypeScript definitions — full typings for events, options, and change payloads
- Documentation & examples — a dedicated docs site per framework with runnable examples
- Updates & support — one year of updates and email support