New releasecore v2.3.0interface v1.5.0

Calendar infrastructure for strict enterprise environments.

A headless scheduling engine and framework-agnostic Web Components. Zero dependencies. MIT licensed. Built for Salesforce Locker Service / Lightning Web Security and strict CSP.

Zero dependenciesMIT licensedTypeScriptLocker / LWS readyWCAG keyboard nav
<forcecal-main> — live, drag an event
0
Runtime dependencies
23,613
npm downloads
2.9x
Smaller than FullCalendar
45+
CSS theming tokens
In plain words

What forceCalendar is

A calendar you can put inside your own product

Month, 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.

Built for places where most JavaScript is not allowed

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.

Why it exists

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.

Your application

Salesforce LWC · React · Vue · Angular · plain HTML

drops in the <forcecal-main> tag
@forcecalendar/interface

The visible calendar: month, week, and day views as standard Web Components, themed with CSS variables.

asks the engine what to display
@forcecalendar/core

The engine: stores events, expands recurring schedules, handles timezones, finds conflicts, and searches. No UI, no dependencies; usable on its own.

01

Locker Service

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.

02

Strict CSP

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.

03

Security Reviews

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.

Flagship integration

Started with Salesforce

Most calendar libraries break inside Locker Service, and that is where forceCalendar started. The same zero-dependency architecture works in any strict enterprise environment.

forceCalendar month view running inside a Salesforce org, showing colorful events across February 2026

Native LWC Integration

Runs as a Lightning Web Component. Uses real Salesforce data through Apex, not external APIs.

Locker Service Safe

Zero blocked API calls. No eval, no dynamic Function constructors, no prototype manipulation.

All Views Included

Month, week, and day views with event creation, color coding, and full navigation.

forceCalendar week view inside Salesforce showing timed events

Week view with timed events

forceCalendar day view inside Salesforce showing detailed event blocks

Day view with event details

Where it runs

Enterprise calendar infrastructure

Salesforce is the flagship integration. The same architecture works anywhere strict security is required.

Salesforce

Shipping now. LWC + Apex with full Locker Service compliance.

Any Web App

Web Components work in React, Vue, Angular, or vanilla JS, with first-party SSR-safe adapters for React and Vue.

Strict CSP

No eval, no inline styles. Works behind the strictest policies.

Air-Gapped

Zero external requests. Runs fully offline with no CDN dependencies.

Architecture

Two packages, one architecture

Use Core for scheduling logic and Interface for production-ready UI components.

app.jsJavaScript
import { 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.
Capabilities

What’s included

Recurrence Rules

RFC 5545 RRULE support with exceptions, overrides, and timezone-aware expansion for complex enterprise schedules.

Timezone Support

Full IANA timezone database with automatic daylight-saving transitions and cross-timezone conversion.

ICS Import / Export

iCalendar file support for interoperability with Outlook, Google Calendar, and existing enterprise systems.

Conflict Detection

Spatial indexing enables fast overlap detection across large event sets without scanning every event.

Full-Text Search

Built-in search engine with fuzzy matching across event titles, descriptions, and custom fields.

Accessible by Default

Full WAI-ARIA grid semantics and keyboard navigation across month, week, and day views. No extra configuration.

Server-Side & Edge

The DOM-free engine runs in Node, serverless functions, and edge runtimes like Cloudflare Workers that ban eval.

CSS Theming

45+ CSS custom properties for complete visual control without touching JavaScript or Shadow DOM internals.

Honest numbers

How it compares

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.

Bundle Size

forceCalendar (core + interface)1.04 MB
FullCalendar (core + 5 plugins + rrule)3.01 MB

2.9x smaller total bundle. Fewer bytes to audit, fewer bytes to ship behind corporate firewalls.

Recurrence (RRULE)

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 benchmark

Ship a calendar your security team will approve.

One audit, zero dependencies, MIT licensed. Up and running in minutes.

Try the playground