Skip to content

EffectWeb 0.6.0

Choose a tag to compare

@DerpyCrabs DerpyCrabs released this 29 Sep 09:17
· 8 commits to main since this release

EffectWeb 0.6.0 simplifies the public authoring API, adds identity diagnostics, and improves routing and test utilities.

Breaking changes and migration

  • Import recommended application APIs from effectweb. Specialized APIs such as listView, lazyView, projectionSource, shareValue, scopedQueryCache, pages, and defineField now live in effectweb/advanced.
  • Replace the former per-module subpaths (effectweb/program, /source, /cache, /session, /form, and others) with the root or advanced entry point. effectweb/testing, /jsx, /jsx-runtime, /jsx-dev-runtime, and the compiler-facing /dom remain available.
  • Replace UiLoad with Effect.Effect, loadEffect with Effect.suspend, and application-specific cachedLoad/httpJson helpers with application-owned code using Effect.
  • Replace taskComponent, taskControls, and keyedTasks with defineTasks, owned commands, and stable command slots. Use commandSlots(name) for work keyed by domain identity.
  • Replace queryResource with observeQuery(owner, cache, query, changed). lifetime() now implements resource ownership through own().
  • Use native input event handlers instead of the removed inputText, inputChecked, and inputNumber wrappers. submit remains available.

The package includes AUTHORING.md, a tested guide to choosing APIs, owning work, and rendering immutable snapshots.

Additions and fixes

  • clock(interval) publishes time while observed; commandSlots(name) provides stable per-key command identities.
  • renderView in effectweb/testing mounts fixed-input views, records messages, and supports model updates and cleanup.
  • createLink(router) in @effectweb/tanstack-router provides typed anchors, active/disabled state, and in-place navigation. External destinations, modified clicks, and downloads retain native browser behavior.
  • DOM setup functions may return nothing, with cleanup and close semantics preserved.
  • Optional effectweb/identity lint warns about positional stateful rows, unstable DOM setup callbacks, fresh command slots, and sources created during render (EW3001–EW3004).
  • Render-safety lint checks list and slot callbacks and reports multiple independent issues. It checks work evaluated when selecting an observed source while allowing stable controller source references.
  • Identity diagnostics catch filtered, sliced, conditional, and spread-derived rows whose positions can shift.

All 14 npm packages share version 0.6.0. The Effect peer remains effect@4.0.0-rc.112. Native compiler packages support glibc Linux x64/arm64, macOS x64/arm64, and Windows x64.

Packaging

The six adapter packages include a packaging-only follow-up adding the repository metadata required by npm provenance. Runtime and compiler code are unchanged from the v0.6.0 tag. The completed release workflow verifies all platforms and publishes the remaining packages without replacing existing versions.