Skip to content

0.14.0 - 2026-10-21

Choose a tag to compare

@sfisol sfisol released this 21 Oct 09:18
· 28 commits to master since this release

Websockets report why they closed, carry binary frames and reconnect after a growing wait.
Elements get pointer and wheel events and <canvas> drawing, and a page rendered on the server
can use the user's languages and the cookies the app names.

The 0.14.0 release notes carry the migration steps, the reasoning behind the
breaking changes and an example of each new feature.

Breaking

  • Every event from the browser runs in one transaction, so what it writes reaches the DOM in one
    batch. Until the handler returns, a watched Computed of what it wrote and the DOM keep their
    state from before the event.
  • WebsocketMessage::Close carries a WebsocketClose with the close code and reason, and comes
    also after a failed attempt to connect.
  • WebsocketMessage has a new variant, Binary.

Added

  • Default component props: #[default = <constant>] on a #[component] param, and {..} in its
    tag (nightly).
  • WebsocketClose::stop_reconnecting, to give up on a websocket.
  • Driver::websocket_with_options with WebsocketOptions: the timeout to connect and the waits
    between attempts.
  • Binary websocket frames: WebsocketMessage::Binary and WebsocketConnection::send_binary.
  • --proxy of vertigo serve and vertigo watch carries websockets too.
  • Driver::on_animation_frame: a callback before every frame the browser draws.
  • on_wheel on elements, with a WheelEvent.
  • on_pointer_down, on_pointer_move, on_pointer_up and on_pointer_cancel on elements, with
    a PointerEvent.
  • Driver::languages: the languages the user prefers, in the browser and during SSR.
  • MountConfigBuilder::ssr_cookie and --ssr-cookie of vertigo serve and vertigo watch: a
    cookie the app may read during SSR too.
  • ServerState::request_with_headers with RequestHeaders, and request_accept_language: the
    request's cookies and Accept-Language for SSR.
  • draw on a <canvas>, with a Drawing of 2D context operations.

Changed

  • A websocket reconnects after a growing wait (0.5-1 s, doubled up to 15-30 s) instead of every
    3 s.
  • vertigo-testing needs thirtyfour 0.38 (was 0.37.8), which uses zip 9 instead of 8
    (RUSTSEC-2026-0367, RUSTSEC-2026-0368, RUSTSEC-2026-0369). It re-exports thirtyfour, so a crate
    that also depends on thirtyfour itself needs 0.38 too.

Fixed

  • A websocket dropped while still connecting connected anyway and stayed open.
  • Websockets of a page in the browser's back/forward cache stayed open.
  • The driver moved its <style> after every batch of DOM changes, so the browser restyled the
    page each time.
  • A when_connect closure or an on_after_transaction callback holding the last handle of
    another node panicked when dropped ("RefCell already borrowed").
  • A render_value or render_list right under <html> broke the page after hydration since
    0.13.4.