Libraries

The @rrulenet library ecosystem

rrule.net is not only a hosted scheduling service. It is built on a set of focused packages that share the same recurrence semantics: low-level calendar computation, classic RRule compatibility, composed recurrence expressions, and a CLI surface for local and cloud workflows.

@rrulenet/core

The recurrence engine

Low-level calendar computation, Temporal-aware occurrence generation, text rendering, and the primitives used by the higher-level packages.

Use it when you need engine-level control or are building your own recurrence abstractions.

@rrulenet/recurrence

The canonical schedule model

A Temporal-first API for simple rules, explicit dates, unions, intersections, and differences. This is the shape rrule.net stores and executes.

Use it when schedules may be richer than one flat RRule.

@rrulenet/rrule

Classic RRule compatibility

A maintained rrule.js-style facade backed by the @rrulenet engine. rrule.net uses it for trusted legacy RRule parsing and serialization.

Use it when you want the familiar RRule API without using the historical rrule package.

@rrulenet/cli

Local and cloud operations

A command-line surface for local recurring jobs and hosted rrule.net schedules, sharing the same recurrence model as the platform.

Use it when operators need recurrence workflows from a terminal.

Design Principle

Use the smallest stable layer that fits the job

Core computes

The low-level engine owns recurrence correctness and text rendering.

Recurrence composes

The product model can express schedules made of multiple rules without flattening them.

RRule bridges

Legacy RRule syntax remains useful, but it is an input path, not the canonical storage model.