Skip to content

Releases: lsndr/rrule-rust

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)

v3.0.0-next.8

27 Nov 19:37
7bb385f

Choose a tag to compare

v3.0.0-next.8 Pre-release
Pre-release

3.0.0-next.8 (2025-11-27)

  • build: always install wasm32 package (#637) (7bb385f), closes #637
  • chore: add json extension to *rc configs (#638) (2cc4a5f), closes #638
  • chore: do not trigger releases for chore and ci changes (#636) (d7d8cd1), closes #636

v3.0.0-next.7

27 Nov 15:31
6a1b0a5

Choose a tag to compare

v3.0.0-next.7 Pre-release
Pre-release

3.0.0-next.7 (2025-11-27)

  • feat: rename *.parse methods to *.fromString (#635) (6a1b0a5), closes #635

v3.0.0-next.6

26 Nov 18:03
b989dba

Choose a tag to compare

v3.0.0-next.6 Pre-release
Pre-release

3.0.0-next.6 (2025-11-26)

v3.0.0-next.5

25 Nov 16:32
2817f76

Choose a tag to compare

v3.0.0-next.5 Pre-release
Pre-release

3.0.0-next.5 (2025-11-25)

  • build(deps-dev): bump typescript-eslint from 8.36.0 to 8.48.0 (#632) (2817f76), closes #632

v3.0.0-next.4

25 Nov 08:37
859b4d3

Choose a tag to compare

v3.0.0-next.4 Pre-release
Pre-release

3.0.0-next.4 (2025-11-25)

  • build(deps): bump indexmap from 2.12.0 to 2.12.1 (#633) (859b4d3), closes #633

v3.0.0-next.3

22 Nov 13:03
e3689b5

Choose a tag to compare

v3.0.0-next.3 Pre-release
Pre-release

3.0.0-next.3 (2025-11-22)

v3.0.0-next.2

18 Nov 20:09
4bb50c4

Choose a tag to compare

v3.0.0-next.2 Pre-release
Pre-release

3.0.0-next.2 (2025-11-18)

v3.0.0-next.1

18 Nov 16:30
94c82b8

Choose a tag to compare

v3.0.0-next.1 Pre-release
Pre-release

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: {
    value: { year: 2024, month: 1, day: 1, hour: 9, minute: 0, second: 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