Skip to content

Releases: lsndr/rrule-rust

v3.1.0-next.1

06 Dec 11:54
f0f5fd2

Choose a tag to compare

v3.1.0-next.1 Pre-release
Pre-release

3.1.0-next.1 (2025-12-06)

  • feat: add fromDate and fromTimestamp factory methods to DateTime (#654) (f0f5fd2), closes #654

v3.0.1-next.1

02 Dec 19:37
daf741a

Choose a tag to compare

v3.0.1-next.1 Pre-release
Pre-release

3.0.1-next.1 (2025-12-02)

v3.0.0

28 Nov 13:38
3b90551

Choose a tag to compare

The library now runs in browsers via WebAssembly, making it a truly universal solution for handling recurrence rules across all JavaScript environments.

The API has been completely redesigned with dedicated classes for all core concepts — DtStart, ExDate, RDate, and an enhanced DateTime — providing better type safety and a more intuitive developer experience. You can now work with date-only recurrence rules for all-day events, and take advantage of built-in results caching to speed up repeated queries.

Every public API is now documented with comprehensive JSDoc comments, giving you inline documentation and better autocomplete in your IDE.

✨ New Features

WASM Support

  • Browser compatibility via WebAssembly - The library now supports browsers through WASM! Install with:

Date-Only RRules

  • Date-only support - DateTime now supports date-only values (without time component)

Results Cache

  • Results caching - New caching mechanism for improved performance on repeated queries

Enhanced API

  • New DtStart object - Dedicated class for representing recurrence start dates with timezone support
  • New ExDate object - First-class support for exclusion dates with proper encapsulation
  • New RDate object - First-class support for additional recurrence dates
  • toTimestamp() and toDate() methods - Convert DateTime instances to Unix timestamps or JavaScript Date objects
  • Flexible type definitions - More permissive types for RRule configuration

Documentation

  • Comprehensive JSDoc documentation - All public APIs now include detailed JSDoc comments for better IDE support and developer experience

💥 Breaking Changes

Constructor Changes

  • Plain objects are no longer accepted directly in constructors - use the new dedicated classes (DtStart, ExDate, RDate, DateTime)
  • Improved plain object handling with explicit toPlain()/fromPlain() methods

Method Renames

  • Several method names have been adjusted for consistency
  • Field names in DtStart now align with method names

Minimum Requirements

  • Node.js 20+ is now required (previously Node.js 10+)
  • npm 10+ is now required

📚 Examples

// Before (v2.x)
const set = new RRuleSet({
  dtstart: DateTime.local(2024, 1, 1, 9, 0, 0),
  tzid: 'US/Eastern',
  rrules: [rrule],
});

// After (v3.x)
import { RRuleSet, RRule, DateTime, DtStart } from 'rrule-rust';

const set = new RRuleSet({
  dtstart: new DtStart(DateTime.local(2024, 1, 1, 9, 0, 0), 'US/Eastern'),
  rrules: [rrule],
});

// New: Get results as timestamps or Date objects
const dates = set.all();
dates[0].toTimestamp(); // Unix timestamp
dates[0].toDate(); // JavaScript Date

v3.0.0-next.9

28 Nov 07:50
2e7ff95

Choose a tag to compare

v3.0.0-next.9 Pre-release
Pre-release

3.0.0-next.9 (2025-11-28)

v3.0.0-next.15

28 Nov 13:12

Choose a tag to compare

v3.0.0-next.15 Pre-release
Pre-release

3.0.0-next.15 (2025-11-28)

v3.0.0-next.14

28 Nov 12:40
e886d46

Choose a tag to compare

v3.0.0-next.14 Pre-release
Pre-release

3.0.0-next.14 (2025-11-28)

  • build: actualize subpackages info (36d5698)

v3.0.0-next.13

28 Nov 10:42
9fe98d6

Choose a tag to compare

v3.0.0-next.13 Pre-release
Pre-release

3.0.0-next.13 (2025-11-28)

v3.0.0-next.12

28 Nov 10:22
8852394

Choose a tag to compare

v3.0.0-next.12 Pre-release
Pre-release

3.0.0-next.12 (2025-11-28)

v3.0.0-next.11

28 Nov 10:04
0d9ff8d

Choose a tag to compare

v3.0.0-next.11 Pre-release
Pre-release

3.0.0-next.11 (2025-11-28)

v3.0.0-next.10

28 Nov 09:01
fe46206

Choose a tag to compare

v3.0.0-next.10 Pre-release
Pre-release

3.0.0-next.10 (2025-11-28)