Skip to content

Release notes

Release history

Scan every xote release, grouped by version with the release date visible on each entry. View full changelog

v7.0.0

Latest
12 changes

Changes

  • refactor!: remove deprecated modules and redundant API aliases (6745b54)

Bug Fixes

  • docs: resolve accessibility issues (c8f2b45)
  • router: scroll hash targets after navigation (8652f27)
  • view: handle empty value primitive props (e9ccdb1)

Features

  • add focused package entries (e2ee407)
  • add mdx support to xote jsx runtime (e09d13f)
  • jsx: add conditional rendering primitives (ad7558f)
  • jsx: add list rendering primitives (d6958ec)
  • view: add JSX value primitives (bc704c4)
  • view: render primitive children (04305a3)
  • view: support keyed rendering in For (46be19f)

BREAKING CHANGES

  • - Remove the deprecated Node module (use View) - Remove the deprecated ReactiveProp module (use Prop) - Remove View.list / View.keyedList aliases (use View.each / View.eachWithKey) - Remove SSRState.make (use SSRState.signal) and SSRState.syncSignal (use SSRState.sync) Also drops the Node/ReactiveProp entries from rescript.json sources.public and the ./node / ./reactive-prop package exports, migrates in-repo examples/tests to the canonical names, and refreshes the README (favouring the Router/Route/Link component APIs in the Router section), CLAUDE.md, AGENTS.md, and the technical overview.
2 changes

Bug Fixes

  • empty view keyed children (5fbe71b)

Features

  • add SVG attribute props to JSX Elements (63592e5)
1 change

Features

  • add missing pointer event props (3a8f596)
3 changes

Bug Fixes

  • connect keyed JSX to reconciliation (6839f90)

Features

  • add clearer api aliases (1bc01da)
  • promote View and Prop as primary modules (5a1566f)
1 change

Bug Fixes

  • defer initial select value until options mount (7dd1c7f)
1 change

Bug Fixes

  • defer initial select value until options mount (7dd1c7f)
1 change

Performance Improvements

  • bump rescript-signals to ^3.1.0 (f9d3ef9)
1 change

Features

  • add draggable, hidden, title, and other missing JSX props (e6de2ba)
1 change

Bug Fixes

  • add exports field to package.json (c57ed32)
10 changes

Changes

  • refactor!: drop Xote__ prefix and use ReScript namespacing (08991c4)

Changes

  • refactor!: rename Component module to Node (0bb235b)

Changes

  • refactor!: rename JSX module to XoteJSX (ee870d4)

Changes

  • refactor!: split HTML element builders into Html module (8ffd83f)

Changes

  • refactor!: unify reactive node helpers under signal prefix (b1a3ca7)

BREAKING CHANGES

  • Xote.Component is renamed to Xote.Node. Replace all Component.text, Component.signalText, Component.element, Component.mount, etc. with the equivalent Node.* calls.
  • The JSX module is now Xote.XoteJSX. Consumers must update rescript.json: "jsx": { "version": 4, "module": "XoteJSX" }
  • Element builders moved from Component to Html. Replace Xote.Component.div(...) with Xote.Html.div(...) (and the same for span, button, input, h1-h3, p, ul, li, a).
  • The JSX module path changes from Xote__JSX to Xote.JSX. Consumers must update their rescript.json: "jsx": { "version": 4, "module": "JSX" }, "compiler-flags": ["-open Xote"]
  • Xote.Component.textSignal, reactiveString, reactiveInt, and reactiveFloat are removed. Replace call sites with signalText, signalInt, and signalFloat respectively.
2 changes

Changes

  • feat!: update to rescript-signals 2.0.0 (fb2c897)

BREAKING CHANGES

  • Effect.run now returns unit instead of a disposer. Use Effect.runWithDisposer when you need to manually dispose an effect.
1 change

Bug Fixes

  • use createElementNS for SVG elements to fix logo rendering (#61) (7ffefe1)
1 change

Features

  • expose Router.initSSR for server-side route initialization (f232d0b)
1 change

Bug Fixes

  • defer JSX component evaluation to render time via LazyComponent (e685fc1)
1 change

Bug Fixes

  • ensure computed attributes are only updated within the effect context (#49) (ccf9905)
1 change

Bug Fixes

  • remove @rescript/core dependency and code formatting (774b81f)
1 change

Features

  • add support to common mouse events (3811d10)
1 change

Features

  • add server-side rendering with hydration (8a30af3)
1 change

Features

  • router: add scroll restoration for navigation (a5b8434)
1 change

Features

  • jsx: add support to contextmenu event (#36) (68c7ba2)
1 change

Features

  • update rescript from 1.3.0 to 1.3.3 (35c9a4e)
1 change

Bug Fixes

  • ensures all router instances share same state (a754f96)
1 change

Features

  • router: add base path option to router initialization (b54c6e9)
1 change

Features

  • component: add helpers for rendering reactive and static values (c4b7526)
1 change

Features

  • router: add Link component (0e8d215)
2 changes

Features

  • jsx: allow ReactiveProp.t besides raw values (0e082f5)
  • reactive-prop: add helper functions for static and reactive (2e82b1a)
1 change

Features

  • expose ReactiveProp from Xote module (3704a62)
1 change

Features

  • introduce ReactiveProp module (0dde3b8)
1 change

Bug Fixes

  • component: boolean attributes (60e1155)
1 change

Bug Fixes

  • jsx: reactive support for boolean attributes (c54ed60)
1 change

Bug Fixes

  • component: attribute and property handling (c49cbc0)
2 changes

Features

  • jsx: add support to many other common attributes (d3460d8)
  • jsx: add support to name attributes (07de33d)
1 change

Bug Fixes

  • expose missing source files for rescript projects (4d93ebb)
1 change

Features

  • update rescript-signals from 1.2.0 to 1.3.0 (f5f5c1b)
1 change

Features

  • component: introduce keyedList for list reconciliation (#24) (96800de)
1 change

Bug Fixes

  • components: fix component disposal (adbfcce)
1 change

Features

  • update rescript-signals from v1.0.1 to v1.2.0 (d1f76d8)
2 changes

Code Refactoring

  • move signals to rescript-signals (848b3b8)

BREAKING CHANGES

  • - Xote.Core.t -> Xote.Signal.t - Core.batch removed from API
10 changes

Changes

  • fix!: add cleanup callback support to effects (7aade4f)

Changes

  • refactor!: simplify Computed API with internal tracking (5d9bc01)

Bug Fixes

  • add disposal support for computed observers (f2e8a17)
  • add equality check to Signal.set to prevent unnecessary notifications (2680a19)
  • convert recursive scheduler to iterative loop (0b69c76)
  • restore global tracking state on exceptions (a6e5b70)
  • signal set structural equality check on objects with functions (803aaba)

Features

  • add automatic disposal for computed values (d2f04db)

BREAKING CHANGES

  • Computed.make now returns Core.t<'a> instead of (Core.t<'a>, unit => unit). Use Computed.dispose(signal) for manual disposal instead of calling the dispose function from the tuple. Before: let (signal, dispose) = Computed.make(() => ...) dispose() After: let signal = Computed.make(() => ...) Computed.dispose(signal) This aligns better with common patterns in other reactive libraries like Solid and Preact, providing a cleaner and more intuitive API.
  • Effect.run now expects functions to return option<unit => unit> instead of unit. All existing effects must be updated to return None or Some(cleanupFn).
2 changes

Changes

BREAKING CHANGES

  • ReScript v12 introduces API changes that affect the typeof operator and configuration fields. Projects upgrading will need to: - Update rescript.json to use 'dependencies' and 'compiler-flags' instead of 'bs-dependencies' and 'bsc-flags'
1 change

Bug Fixes

  • implement topological ordering to prevent scheduling glitches (51f1a8c)
2 changes

Bug Fixes

  • automatic disposal of reactive observers to prevent memory leaks (befae81), closes #7
  • preserve signal fragment effect when disposing children (c3d530c)
1 change

Bug Fixes

  • preserve observer tracking context during nested execution (afb9450)
1 change

Features

  • add support to data attributes in Xote.JSX (903c265)
1 change

Bug Fixes

  • enable reactivity for JSX element attributes (0ea7235)
1 change

Features

5 changes

Bug Fixes

  • revert keyed list reconciliation (60aa2a0)

Features

  • add JSX support with generic transform (d71175d)
  • change className to class in JSX props (2515242)
  • implement keyed list reconciliation for efficient updates (dd9c0b8)
  • standardize JSX component naming convention (f683316)
14 changes

Bug Fixes

  • optimize build configuration and reduce bundle size (f9e50dc) # 1.0.0 (2025-11-02)

Bug Fixes

  • adjust build configuration and dist output (5dcca3b)
  • improve signal reactivity and add todo styling (495f0bb)
  • rescript build in release workflow (9b2fb19)
  • version bump (2794ae6)
  • version bump for release (72fb74f)

Features

  • add Component system with automatic reactivity (38815ed)
  • add demo (cf3faf3)
  • bump version (5ac8b19)
  • component: set reactivity to component element attributes (57217e3)
  • component: simplify signalText to accept function directly (9a9d551)
  • component: unify attrs and signalAttrs into single attrs parameter (d8942d9)
  • minimal signal implementation based on the TC39 proposal (9b78d0b)
  • router: add signal-based routing with pattern matching (7bab79e)
4 changes

Features

  • component: set reactivity to component element attributes (57217e3)
  • component: simplify signalText to accept function directly (9a9d551)
  • component: unify attrs and signalAttrs into single attrs parameter (d8942d9)
  • router: add signal-based routing with pattern matching (7bab79e)
3 changes

Features

  • component: set reactivity to component element attributes (57217e3)
  • component: simplify signalText to accept function directly (9a9d551)
  • component: unify attrs and signalAttrs into single attrs parameter (d8942d9)
1 change

Features

  • component: add support to a tags (8ea09c1)
2 changes

Bug Fixes

  • adjust build configuration and dist output (5dcca3b)
  • rescript build in release workflow (9b2fb19)
5 changes

Bug Fixes

  • version bump for release (72fb74f) # 1.0.0 (2025-10-30)

Bug Fixes

  • improve signal reactivity and add todo styling (495f0bb)

Features

  • add Component system with automatic reactivity (38815ed)
  • add demo (cf3faf3)
  • minimal signal implementation based on the TC39 proposal (9b78d0b)