Skip to content

EffectWeb 0.3.1

Choose a tag to compare

@DerpyCrabs DerpyCrabs released this 10 Sep 14:18
· 8 commits to main since this release

EffectWeb 0.3.1 strengthens compiler safety, component ownership, and asynchronous resource handling.

  • Unify compiler purity, dependency, and ownership checks in one semantic analysis. Track reads and effects through local helpers, arguments, destructuring, and callbacks, and reject unproven render calls.
  • Validate native methods and compiled slots at runtime. Reject snapshot accessors before invoking them.
  • Add cache retention and cancellation policies, grouped invalidation, shared infinite queries, and per-key task scheduling with observable outcomes.
  • Await owned resource finalizers during shutdown and improve structural sharing for large collections.
  • Improve component input reconciliation, local state, and command ownership. Add mapTransition and recoverable errorBoundary composition.
  • Align Vite and Oxlint file handling and add compiler equivalence tests in development and production.

Upgrade runtime and compiler together. Render helpers imported from application modules now need an audited pureImports contract in both compiler/Vite and Oxlint options, or should be evaluated outside render and passed as immutable model data. Contracts promise no observable effects, ambient reads, input mutation, or eager execution of unchecked callbacks. Plain snapshot data must use values rather than getters or setters.

Validated with 513 unit tests, nine Rust tests, 91 Chromium tests, bundle limits, and clean-package production tests. All five local consumers were also validated; LocalChat retains 13 platform-specific skips.

Runtime, compiler, Lucide, and all five native compiler packages are released together as 0.3.1. Effect 4.0.0-rc.112 remains the runtime peer dependency.

Release checks passed on all supported platforms.