---
package: "@webjsdev/core"
version: 0.7.5
date: 2026-06-02T12:00:00+05:30
commit_count: 3
---
## Features

- **`webjs:prefetch` event when a speculative fragment is cached** ([#202](https://github.com/webjsdev/webjs/pull/202)) [`651d407`](https://github.com/webjsdev/webjs/commit/651d407)
  The client router now dispatches a `webjs:prefetch` event on `document` the
  instant a prefetched page fragment lands in the cache and becomes
  consumable (strictly later than the request going out). The detail is
  `{ url, key, from: 'prefetch' }`, mirroring `webjs:navigate`, which now also
  carries `from: 'navigate'`, so one listener can split the two. Use it to
  instrument prefetch hit rate or gate work on a warm cache.

- **Actionable SSR errors for browser-only APIs in a component** ([#208](https://github.com/webjsdev/webjs/pull/208)) [`54ffb02`](https://github.com/webjsdev/webjs/commit/54ffb02)
  When a component touches a browser global (`document`, `window`, ...) or an
  `HTMLElement` member on `this` (`setAttribute`, `classList`, ...) in its
  constructor or `render()`, which the SSR pipeline runs on a bare server-side
  class, the resulting crash now logs a message naming the offending member
  and the fix (move it to `connectedCallback` or a lifecycle hook), instead of
  a raw `document is not defined`.

## Fixes

- **shared rich values round-trip through the RPC serializer** ([#212](https://github.com/webjsdev/webjs/pull/212)) [`ff4332a`](https://github.com/webjsdev/webjs/commit/ff4332a)
  A `Date`, typed array, `Blob`, or `File` that appears more than once in a
  single payload (the same instance, which the encoder emits as a back
  reference) decoded the first copy but threw `Dangling reference` on the
  second, crashing any server action or `richFetch` that returned such a
  shared value. The decoder now registers every leaf rich type under its id,
  so shared rich values round-trip and preserve reference identity.
