A headless scheduling engine and framework-agnostic Web Components. Zero dependencies. MIT licensed. Built for Salesforce Locker Service / Lightning Web Security and strict CSP.
<forcecal-main> — live, drag an eventMonth, week, and day views with events, recurring schedules, timezones, and search. You install two packages, add one HTML tag, and connect your data. It is not a hosted service. The code runs entirely inside your application.
Large companies restrict what code on their pages may do. A Content Security Policy (CSP) is a browser rule set that, for example, forbids generating code at runtime or injecting styles. Salesforce goes further with Locker Service, a sandbox around every component. Most calendar libraries rely on exactly the techniques these rules block, so they break, often silently.
forceCalendar was written from scratch to work under those rules: no blocked techniques, no third-party code to audit, one MIT license. If your security team has ever rejected a JavaScript library, this is the calendar they will approve.
Salesforce LWC · React · Vue · Angular · plain HTML
<forcecal-main> tagThe visible calendar: month, week, and day views as standard Web Components, themed with CSS variables.
The engine: stores events, expands recurring schedules, handles timezones, finds conflicts, and searches. No UI, no dependencies; usable on its own.
Most calendar libraries use JavaScript patterns that Locker Service prohibits: eval, dynamic Function constructors, and prototype manipulation.
forceCalendar uses only Locker-safe patterns. No blocked APIs, no runtime code generation.
Content Security Policy blocks inline styles, eval, and unsafe-inline. Calendar libraries that inject CSS or generate styles at runtime fail silently.
All styling uses CSS custom properties and external stylesheets. No inline style injection.
Enterprise security teams audit every dependency. A library with 50+ transitive dependencies creates weeks of review work and ongoing supply chain risk.
Zero dependencies means zero supply chain risk. One package to audit, one license to approve.
Most calendar libraries break inside Locker Service, and that is where forceCalendar started. The same zero-dependency architecture works in any strict enterprise environment.

Runs as a Lightning Web Component. Uses real Salesforce data through Apex, not external APIs.
Zero blocked API calls. No eval, no dynamic Function constructors, no prototype manipulation.
Month, week, and day views with event creation, color coding, and full navigation.

Week view with timed events

Day view with event details
Salesforce is the flagship integration. The same architecture works anywhere strict security is required.
Shipping now. LWC + Apex with full Locker Service compliance.
Web Components work in React, Vue, Angular, or vanilla JS, with first-party SSR-safe adapters for React and Vue.
No eval, no inline styles. Works behind the strictest policies.
Zero external requests. Runs fully offline with no CDN dependencies.
Use Core for scheduling logic and Interface for production-ready UI components.
Pure JavaScript scheduling engine. No DOM, no dependencies. Headless calendar logic for any runtime.
Learn moreWeb Components powered by Core. Framework-agnostic, Shadow DOM encapsulated. Works in React, Vue, Angular, or vanilla JS.
Learn moreBuilt on top of both packages. Loads as a static resource, connects to Salesforce data through Apex. Locker Service safe.
See it runningimport { Calendar } from '@forcecalendar/core';
import '@forcecalendar/interface';
const calendar = new Calendar({
locale: 'en-US',
timeZone: 'America/New_York'
});
// That's it. <forcecal-main> is ready to use.RFC 5545 RRULE support with exceptions, overrides, and timezone-aware expansion for complex enterprise schedules.
Full IANA timezone database with automatic daylight-saving transitions and cross-timezone conversion.
iCalendar file support for interoperability with Outlook, Google Calendar, and existing enterprise systems.
Spatial indexing enables fast overlap detection across large event sets without scanning every event.
Built-in search engine with fuzzy matching across event titles, descriptions, and custom fields.
Full WAI-ARIA grid semantics and keyboard navigation across month, week, and day views. No extra configuration.
The DOM-free engine runs in Node, serverless functions, and edge runtimes like Cloudflare Workers that ban eval.
45+ CSS custom properties for complete visual control without touching JavaScript or Shadow DOM internals.
Independent benchmarks against FullCalendar, an excellent and widely-used library. forceCalendar exists for a different niche: strict enterprise environments where most calendar libraries cannot run.
2.9x smaller total bundle. Fewer bytes to audit, fewer bytes to ship behind corporate firewalls.
The dedicated rrulelibrary is still faster at raw RRULE expansion, but the gap is now roughly 2x on common daily and weekly patterns (it was up to 1,200x before the v2.1–v2.3 engine work); a five-year daily series expands in about half a millisecond either way.
The trade-off: forceCalendar’s recurrence is built-in with zero extra dependencies and applies timezone/DST handling per occurrence, while FullCalendar requires the separate rrule library. At real-world calendar volumes the difference is microseconds per render.
Benchmarks run against published npm packages; sizes are installed (unpacked) package sizes. Full methodology and interactive results available on the dashboard.
View full benchmarkOne audit, zero dependencies, MIT licensed. Up and running in minutes.