A head-to-head comparison of ChronoGrid against the calendar/scheduler components actually used in Java/Vaadin and JavaScript projects. The goal isn’t to claim ChronoGrid is better at everything — it deliberately isn’t. The goal is to make the niche visible.

TL;DR. Most components on this page are excellent renderers. ChronoGrid is an excellent integrator — it owns the CalDAV wire and Vaadin Flow API end-to-end. If you’re already in Vaadin and need real calendar backends, this is the gap it fills.

1. Quick orientation — what is each thing?

ComponentTypePlatform
Vaadin DatePicker / DateTimePicker / TimePickerForm input field with calendar overlayVaadin Flow
FullCalendar for FlowVaadin integration of FullCalendar — strong rendererVaadin Flow / JS under the hood
FullCalendar Scheduler for FlowFullCalendar Flow + resource/timeline viewsVaadin Flow / JS under the hood
TOAST UI CalendarStandalone JavaScript calendar componentJavaScript
DHTMLX SchedulerMature JavaScript scheduler componentJavaScript (commercial)
Kendo UI SchedulerEnterprise scheduler in Outlook styleJavaScript (commercial)
Bryntum Calendar / SchedulerModern JS calendar + resource schedulerJavaScript (commercial)
ChronoGridVaadin Flow CalDAV calendar componentVaadin Flow + Java + CalDAV

The form-input pickers (DatePicker etc.) aren’t competitors — they’re building blocks inside ChronoGrid’s own event editor.

2. Calendar rendering

CapabilityChronoGridFullCalendar FlowScheduler FlowDHTMLXKendoBryntum
Month
Week
Day
N-day viewvia custom viewvia custom viewpartial
Agenda / list⚠️ planned
Timeline❌ out of scopeonly with Schedulerext. ed.
Resource view❌ out of scopeext. ed.

Reading the matrix: ChronoGrid covers the universally-needed views (month / week / day / N-day) plus an upcoming agenda view. It deliberately does not ship resource views or timeline — that’s enterprise scheduler territory (Bryntum, Kendo, Scheduler) and competing there means losing on their turf.

3. Event interaction

CapabilityChronoGridFullCalendar FlowScheduler FlowTOAST UIDHTMLXKendo
Show events
Click events
Timeslot select
Create events✅ built-intechnical APItechnical API
Edit events✅ built-inhost codehost code
Delete events✅ built-inhost codehost code
Drag & drop persistenceevents emittedevents emitted
Resize persistenceevents emittedevents emitted
Conflict handling✅ ETag-basedhost codehost codegenericgeneric
Recurring events (RRULE)⚠️ planned

The line that matters is the difference between “events are emitted” and “events are persisted.” ChronoGrid does the persistence — CalDAV PUT with If-Match, ETag-based conflict detection, hand back a ConcurrentModificationException when two clients race. With FullCalendar Flow you get the event hook; the round-trip to a real backend is your problem.

4. Backend & protocol integration ⭐ THE DIFFERENTIATOR

CapabilityChronoGridFullCalendar FlowScheduler FlowDHTMLXKendoBryntum
CalDAV client✅ built-in
CalDAV discovery✅ PROPFIND chain
VEVENT mapping✅ Biweekly-basedpartial / externalpartialpartial
VTODO mapping⚠️ scoped innot corenot core
Multi-serverbackend-dep.backend-dep.backend-dep.
Multi-subscriptionbackend-dep.backend-dep.backend-dep.
Typed error boundary
Headless CalDAV module✅ (chronogrid-core)

This is the reason ChronoGrid exists. Every other entry on this row is “❌” or “your problem.” That’s not a knock on those products — they’re agnostic renderers by design. But if your stack already has a CalDAV backend (Nextcloud, iCloud, Radicale, Baïkal …), ChronoGrid is the only component that talks to it natively.

5. Vaadin integration

CapabilityChronoGridFullCalendar FlowScheduler FlowJS components
Vaadin Flow API❌ (wrapper)
Java-first usage
Route-free embeddingwrapper only
Host app owns securitynot specificnot specificwrapper needed
i18n seampartialpartialJS-specific
StateStore seam
Lumo-themablepartialpartialCSS bridge only

The seam pattern matters here. ChronoGrid exposes explicit extension points — StateStore (where session data lives), i18n (how labels get translated), the route layer (which the host app owns). This means the component embeds into bigger Vaadin apps without dictating how those apps are structured.

6. Per-component summary

Vaadin DatePicker / DateTimePicker / TimePicker

✅ Excellent form inputs. ❌ Not calendar components — show / edit a single date or time, no event model, no backend.

Verdict: Not competitors. Useful inside ChronoGrid’s event editor.

FullCalendar for Flow

✅ Strongest renderer in the Vaadin space. Rich interaction model. ❌ Pure UI — every backend concern (persistence, conflicts, multi-source) is the host application’s problem.

Verdict: Closest peer in the Vaadin ecosystem, but a different layer of the stack. ChronoGrid actually uses it under the hood for rendering and adds the backend layer.

FullCalendar Scheduler for Flow

✅ Adds resource views and timeline — strong for resource planning (rooms, people, vehicles, machines). ❌ Different licensing model from FullCalendar; adds complexity if you don’t need resources.

Verdict: Different target use case. ChronoGrid is not heading into resource planning.

TOAST UI Calendar

✅ Solid JavaScript calendar with monthly/weekly/daily views, themes, timezones. ❌ Not Vaadin-native. Integration via wrapper is non-trivial.

Verdict: Reasonable choice for a pure JS frontend. Not relevant for Vaadin Flow apps.

DHTMLX Scheduler

✅ Broad JavaScript scheduler with day/week/month/year views, recurrence, editor. ❌ JS-first. Resource planning only in higher editions. Backend sync is generic, not CalDAV-aware.

Verdict: Strong general-purpose JS scheduler. Wrong stack for Java-first Vaadin apps.

Kendo UI Scheduler

Enterprise-grade: timeline, virtualisation, iCal import/export, PDF export, RTL, search. ❌ Telerik ecosystem, JavaScript, commercial. Not Vaadin-native.

Verdict: Functionally the broadest comparable. Different audience (Telerik shops with JS-first stacks). ChronoGrid does not aim to match its breadth.

Bryntum Calendar / Scheduler

✅ Modern, fast, enterprise scheduling with strong resource support. ❌ JS-first, commercial, no native Vaadin integration.

Verdict: Excellent if you need resource scheduling and have the budget. Not the same product as ChronoGrid.

7. Positioning summary

Where ChronoGrid wins:

  • Vaadin-native — Java API, no JS wrapper work
  • CalDAV-first — real wire protocol, real discovery, real multi-source
  • On-Prem / EU-friendly — no SaaS dependency, EUPL-1.2 license
  • Headless reusable core — same client serves CLIs and sync jobs, not just the UI

Where ChronoGrid is not competing:

  • Resource planning → Bryntum, Kendo, FullCalendar Scheduler
  • Enterprise breadth → Kendo, Bryntum
  • Pure rendering quality → FullCalendar (which we use, not replace)
  • JavaScript-first frontends → TOAST UI, DHTMLX

8. When to choose ChronoGrid

✅ You’re building a Vaadin Flow app. ✅ You need to integrate with a real CalDAV backend (iCloud, Nextcloud, Radicale, Baïkal). ✅ You don’t want to write the wire protocol, ETag handling and discovery logic yourself. ✅ Your operational story is On-Prem or EU-centric.

9. When not to choose ChronoGrid

❌ You need resource / capacity planning → look at Bryntum or FullCalendar Scheduler. ❌ You’re not in Vaadin → use the JS native option that fits your stack. ❌ You need Outlook-style breadth out of the box → Kendo. ❌ Your calendar source is a SaaS API only (Google Calendar API, Microsoft Graph) — ChronoGrid speaks CalDAV; Google/Microsoft no longer offer first-class CalDAV.


See also: Roadmap · Main project page