Skip to main content

Bryntum Scheduler vs FullCalendar

· 12 min read
Arsalan Khattak
Computer Science graduate and Developer Advocate at Bryntum, previously at Vercel. Writes about JavaScript UI components and developer tooling.

If you're choosing between Bryntum Scheduler and FullCalendar, you're deciding whether resource timeline scheduling is the main product workflow or an extension of a calendar interface. Bryntum Scheduler is a dedicated resource timeline component. FullCalendar renders resource timelines through Premium plugins.

Start with these questions:

  • Is the resource timeline the primary interface?
  • Does the application need event dependencies, undo and redo, or export?
  • Does the licensing model need to avoid annual Premium renewals?

This comparison uses these criteria:

  • Installation and setup
  • Licensing and cost
  • Resource scheduling features
  • Export support
  • Framework and TypeScript support
  • AI support

Bryntum Scheduler vs FullCalendar: dedicated timeline vs calendar plugin​

The table below covers the criteria most relevant to a production integration decision.

FeatureBryntum SchedulerFullCalendar
LicenseCommercial (perpetual)MIT (core) / Annual subscription (Premium)
Free tierTrial onlyMIT for standard views
Timeline / resource view✔️ (default)Premium only
Day / Week / Month views✔️✔️ (Standard)
Resource management✔️✔️ (Premium)
Event dependencies✔️❌
Undo / redo✔️❌
Multiple instances per page✔️✔️
Export to PDF / Excel✔️ (client-side)❌
React / Angular / Vue wrappers✔️✔️
TypeScript✔️✔️
MCP server✔️❌
Claude Code skill✔️❌
Built-in AI assistantExperimental feature❌

Bryntum Scheduler​

Bryntum Scheduler is a commercial JavaScript component for building resource scheduling interfaces. Its default view is a horizontal timeline: resources (people, machines, rooms) appear as rows, and events are draggable bars across a configurable time axis. The component is built on Bryntum Grid, so the resource panel inherits full sorting, filtering, grouping, and column configuration without extra setup.

Installing Bryntum Scheduler​

The trial package is available on the public npm registry without authentication:

npm install @bryntum/scheduler@npm:@bryntum/scheduler-trial@7.2.4

The following is a minimal resource scheduler showing four team members across a two-week sprint. The container fills the viewport height via CSS:

<!-- index.html -->
<style>
html, body { margin: 0; height: 100%; }
#container { height: 100vh; }
</style>
<div id="container"></div>
import '@bryntum/scheduler/fontawesome/css/fontawesome.css';
import '@bryntum/scheduler/fontawesome/css/solid.css';
import '@bryntum/scheduler/scheduler.css';
import '@bryntum/scheduler/svalbard-light.css';
import { Scheduler } from '@bryntum/scheduler';

new Scheduler({
appendTo : 'container',
startDate : '2025-05-07',
endDate : '2025-05-26',
viewPreset : 'weekAndDay',

columns : [{ text : 'Team member', field : 'name', width : 160 }],

resources : [
{ id : 1, name : 'Celia', title : 'Sales' },
{ id : 11, name : 'Fancy law firm', eventColor : 'teal' },
{ id : 12, name : 'Small boutique', eventColor : 'blue' },
{ id : 13, name : 'Grocery store', eventColor : 'lime' }
],

events : [
{ id : 1, resourceId : 1, name : 'Busy', startDate : '2025-05-07', endDate : '2025-05-09', eventColor : 'red' },
{ id : 2, resourceId : 11, name : 'Meeting', startDate : '2025-05-07', endDate : '2025-05-09', location : 'clients office' },
{ id : 3, resourceId : 12, name : 'Phone', startDate : '2025-05-07', endDate : '2025-05-08', location : 'office' },
{ id : 4, resourceId : 13, name : 'Suggested meeting', startDate : '2025-05-09', endDate : '2025-05-11', location : 'grocery store' }
]
});

Three CSS imports are required in order: FontAwesome icons, the structural scheduler.css, and a theme file. Bryntum ships ten themes across five light/dark pairs, all switchable at runtime via DomHelper.setTheme().

Bryntum Scheduler showing four team members across a two-week resource timeline with colour-coded task bars

Timeline view, event dependencies, and client-side export in the base license​

The timeline view is the default, not a paid add-on. Event dependencies (finish-to-start, start-to-start, and others), resource grouping, capacity summaries, and undo/redo are all included in the base license. Zooming works from milliseconds to years with up to three configurable header rows, and virtual rendering keeps large datasets fast without pagination.

Export to PDF, PNG, and Excel runs client-side with no server dependency. The theming system is consistent across Bryntum's full product suite (Gantt, Calendar, Grid, Task Board), so visual consistency comes for free if the application uses more than one component.

Bryntum Scheduler: bundle size, trial watermark, and store separation​

The trial watermark persists during evaluation, which complicates early stakeholder demos. The API surface is large: Scheduler, ResourceStore, EventStore, and AssignmentStore are separate objects with distinct responsibilities. The uncompressed bundle exceeds 4 MB, which is a meaningful consideration for applications where initial load time is critical.

Bryntum Scheduler pricing: perpetual license from $680 per developer​

Per-developer licensing starts at $680 for a small team (minimum three developers, $2,040 entry). A perpetual license includes 12 months of updates. OEM licensing for SaaS applications, where the scheduler is embedded in a product shipped to end users, requires a separate quote.

TypeScript, EventStore vs AssignmentStore, and framework wrappers​

TypeScript type definitions ship with the package, covering the full Scheduler, ResourceStore, EventStore, and AssignmentStore API. Documentation at bryntum.com includes live code examples with an in-browser editor.

Framework wrappers for React (@bryntum/scheduler-react), Angular, and Vue 3 are published on the same version cycle as the core.

For runtime theme switching, load theme files with <link> tags marked for Bryntum theme detection and call DomHelper.setTheme(). Static themes can still be bundled in the normal build.

Coding agent support: MCP server, Claude Code skill, and AI assistant​

Bryntum ships two complementary AI tools: the MCP server handles documentation retrieval, and the Claude Code skill adds judgment about common coding mistakes.

The MCP server (mcp.bryntum.com) exposes a search_bryntum_docs tool that returns version-specific documentation, source code examples, and API references for Scheduler, Gantt, Calendar, Grid, Task Board, and Scheduler Pro. The command to register it in Claude Code:

claude mcp add --transport http bryntum https://mcp.bryntum.com

The Claude Code skill guides agents through the mistakes that documentation retrieval alone misses: CSS import order, the difference between EventStore and AssignmentStore, and the correct dark mode pattern via DomHelper.setTheme(). An agent with both the MCP server and the skill produces working Bryntum code with fewer correction cycles. This combination of structured retrieval plus agent-level judgment is unusual among JavaScript scheduler libraries.

Bryntum also ships an experimental, disabled-by-default AI chat panel for Scheduler that connects to Anthropic, OpenAI, or Google models. End users give natural language instructions such as "move all of Alice's tasks to next week" without touching the interface directly.

Use Bryntum Scheduler when resource scheduling is central​

Bryntum Scheduler is the right call when a timeline view for resource allocation is the core requirement. The scheduling features, AI tooling, and client-side export pipeline make it a better fit for teams building complex planning tools or using AI coding agents.

FullCalendar​

FullCalendar is a JavaScript calendar library with an MIT-licensed core. The standard (free) edition covers day, week, month, and list views with drag-and-drop via the @fullcalendar/interaction plugin. Resource timeline scheduling, the view type that maps resources to rows and time to columns, sits behind the Premium license, which is an annual subscription rather than a perpetual purchase.

Bryntum Scheduler starts from resource scheduling, with dependencies, export, and undo/redo in the same product, while FullCalendar reaches resource scheduling through Premium calendar plugins when the timeline is not the main workflow.

FullCalendar's architecture is plugin-based: each view type and feature is an importable package. The base @fullcalendar/core package is empty without plugins. The resource timeline setup below uses @fullcalendar/core, @fullcalendar/resource, @fullcalendar/resource-timeline, and @fullcalendar/interaction.

Installing FullCalendar​

The @fullcalendar/core, Premium resource packages, and interaction plugin are available on the public npm registry:

npm install @fullcalendar/core@6.1.20 @fullcalendar/resource@6.1.20 @fullcalendar/resource-timeline@6.1.20 @fullcalendar/interaction@6.1.20

Both @fullcalendar/resource and @fullcalendar/resource-timeline are required for the timeline view. @fullcalendar/resource-timeline declares @fullcalendar/resource as a peer dependency, so install both explicitly.

A license key is required to run any Premium plugin without a watermark. FullCalendar provides an evaluation key for non-commercial use:

schedulerLicenseKey: 'CC-Attribution-NonCommercial-NoDerivatives'

The following shows a resource timeline for four team members across April 2026. CSS comes from the package itself, with no separate theme file needed:

<!-- index.html -->
<style>
html, body { margin: 0; padding: 0; height: 100%; font-family: Arial, sans-serif; }
#app { padding: 16px; height: 100vh; box-sizing: border-box; }
#calendar { height: calc(100vh - 32px); }
</style>
<div id="app">
<div id="calendar"></div>
</div>
import { Calendar } from '@fullcalendar/core';
import resourceTimelinePlugin from '@fullcalendar/resource-timeline';
import interactionPlugin from '@fullcalendar/interaction';

const calendarEl = document.getElementById('calendar');

const calendar = new Calendar(calendarEl, {
plugins : [resourceTimelinePlugin, interactionPlugin],
schedulerLicenseKey : 'CC-Attribution-NonCommercial-NoDerivatives',
initialView : 'resourceTimelineMonth',
initialDate : '2026-04-01',
height : '100%',

headerToolbar : {
left : 'prev,next today',
center : 'title',
right : 'resourceTimelineWeek,resourceTimelineMonth'
},

resourceAreaHeaderContent : 'Team member',
resourceAreaWidth : 180,

resources : [
{ id : 'a', title : 'Alice (Frontend)' },
{ id : 'b', title : 'Bob (Backend)' },
{ id : 'c', title : 'Carol (Design)' },
{ id : 'd', title : 'Dave (QA)' }
],

events : [
{ id : '1', resourceId : 'a', title : 'UI Component Library', start : '2026-04-06', end : '2026-04-11' },
{ id : '2', resourceId : 'b', title : 'REST API Development', start : '2026-04-06', end : '2026-04-11' },
{ id : '3', resourceId : 'c', title : 'Wireframes v2', start : '2026-04-06', end : '2026-04-09' },
{ id : '4', resourceId : 'd', title : 'Regression Suite', start : '2026-04-06', end : '2026-04-08' },
{ id : '5', resourceId : 'a', title : 'Code Review', start : '2026-04-14', end : '2026-04-17' },
{ id : '6', resourceId : 'b', title : 'Database Migration', start : '2026-04-13', end : '2026-04-17' },
{ id : '7', resourceId : 'c', title : 'Component Specs', start : '2026-04-09', end : '2026-04-14' },
{ id : '8', resourceId : 'd', title : 'Performance Tests', start : '2026-04-08', end : '2026-04-12' }
],

editable : true
});

calendar.render();

The resourceTimelineMonth view is suitable for multi-day task allocation. Use the timeline view's slot configuration when you need a specific day, week, or hour granularity.

FullCalendar resource timeline showing four team members across April 2026 with color-coded task bars

Free MIT core with standard views and no evaluation watermark​

The MIT-licensed core covers standard calendar views (day, week, month, list) at no cost. There is no evaluation watermark on the free tier, and the framework wrappers for React, Angular, and Vue are first-party and free.

The plugin architecture is lean: importing only the features in use keeps bundle size proportional to what is shipped. TypeScript type definitions are included in all packages.

FullCalendar has been in active development since 2010, which means an extensive pool of StackOverflow answers and third-party tutorials.

Resource timeline is Premium-only, no event dependencies or export​

Resource timeline scheduling is Premium-only. There is no path to a timeline view without the subscription license. The evaluation watermark appears immediately on the resource view when using any key other than the non-commercial evaluation key.

FullCalendar has no event dependencies, no undo/redo stack, and no built-in export to PDF, Excel, or ICS. For applications that need these features alongside resource scheduling, they require custom implementation.

The Premium license is an annual subscription at $480 per developer per year, not a perpetual purchase. The last released version before the subscription lapses remains usable, but updates and new versions require an active subscription.

FullCalendar pricing: free MIT core, $480 per developer per year for Premium​

The MIT-licensed core is free with no per-developer fee and no watermark. Premium, which includes resource timeline, vertical resource views, and improved print support, starts at $480 per developer per year. The subscription covers updates and new releases for the license period. Once the subscription ends, the last released version remains usable but receives no further updates.

Plugin architecture, license key requirement, and missing peer package​

TypeScript type definitions ship with all packages. The config object passed to new Calendar() covers all settings, which keeps initial setup predictable.

Two package requirements specific to the resource timeline view are easy to miss:

  • @fullcalendar/resource must be installed alongside @fullcalendar/resource-timeline because it is a peer dependency.
  • The schedulerLicenseKey property is required to suppress the watermark. Omitting it on the Premium views produces an overlay on the rendered calendar.

Framework integrations ship as separate packages: @fullcalendar/react, @fullcalendar/angular, and @fullcalendar/vue3. Documentation is at fullcalendar.io with an API reference and examples for each view type.

No AI tooling: resource timeline packages easy for agents to miss​

FullCalendar has no MCP server and no Claude Code skill. There is no structured documentation retrieval mechanism for AI agents. Documentation is available at fullcalendar.io, but an agent must locate and fetch the relevant pages independently.

The two-package requirement for the resource timeline (@fullcalendar/resource plus @fullcalendar/resource-timeline) is easy for an agent to miss. LLM training data covers FullCalendar broadly, but agents without current docs may omit the @fullcalendar/resource peer package or use outdated view names.

Use FullCalendar when the timeline is an extension of a calendar​

FullCalendar covers standard calendar views under an MIT license without watermarks or per-developer fees. The resource timeline is available, but it requires the Premium subscription, and the missing features around dependencies, export, and undo/redo require custom development. For applications where resource scheduling is central, those are non-trivial additions.

Which is better: Bryntum Scheduler or FullCalendar?​

For most production resource scheduling applications, Bryntum Scheduler is the right choice. The timeline view, event dependencies, export, and undo/redo are default features. The perpetual license model avoids recurring per-developer costs. The MCP server and Claude Code skill make it easier to support in teams using AI coding agents.

Bryntum Scheduler is the cleaner choice for new resource scheduling work, while FullCalendar remains practical in two cases: the application needs only standard calendar views without resource scheduling, or an existing FullCalendar integration needs a resource timeline without a full migration.

For open-source projects that need resource scheduling, neither library has a free perpetual option. FullCalendar Premium at $480/dev/year is the lower initial cost. Bryntum's perpetual license becomes the lower total cost over two to three years depending on team size.