yarn stream-chat 10.0.0-rc.12
v10.0.0-rc.12

7 hours ago

10.0.0-rc.12 (2026-09-18)

⚠ BREAKING CHANGES

  • connection.changed is removed. Connectivity is published as two state stores
    and nothing else: client.networkConnection.state for the device and client.wsConnection.state
    for this client's socket. The event was silent on closeConnection() and two error paths, and
    held a drop for five seconds; the stores are written on every transition and publish immediately.
  • client.wsConnection is now a WSConnection wrapper rather than the
    StableWSConnection itself, and is never null. The live socket is client.wsConnection.connection,
    replaced on every connect; read isHealthy, isConnecting, connect() and disconnect() from the
    wrapper. StableWSConnection is constructed with { wsConnection } instead of { client }.
  • client.defaultWSTimeout is removed, along with the WebSocketImpl and
    wsUrlParams client options. They move to the socket's configuration as connectTimeoutMs,
    webSocketImpl and urlParams, set with client.config.set({ client: { wsConnection: { … } } }).
    Unlike the fields and options they replace, these survive a reconnect.
  • ThreadManagerState.lastConnectionDropAt is removed. Read
    client.wsConnection.state.lastUnhealthyAt, which is written on every status transition,
    including the disconnect() path the old event was silent about.
  • requests that watch a channel or subscribe to presence now wait for a WebSocket
    connection id instead of silently returning unwatched data. The gate is in ApiClient._doRequest,
    so it covers every endpoint carrying watch or presence, plus stopWatchingChannel and
    longPoll. With no socket open and none being established the request rejects with "No connection
    id is available"; an explicit watch: false is still honoured, and a caller's AbortSignal
    abandons the wait. Test fixtures that fake a connected user without a live socket will now throw.
  • a UI that renders a "connection lost" banner must hold the drop itself. The
    socket's store publishes drops the moment they happen, where the old event delayed them by five
    seconds. client.wsConnection.config.offlineNotificationDisplayDelayMs (5s) is the shared value to
    wait for; nothing in this package acts on it.
  • connection.recovered is no longer dispatched when the socket drops while a
    recovery is running, because every reload in it can have failed. Work keyed off that event will
    correctly stop running for recoveries that recovered nothing.
  • openapi related clean up (#1870)

Bug Fixes

  • add missing app config fields to AppSettingsAPIResponse (#1854) (18bc3cf)
  • do not reset channel unread count on thread read (#1835) (79fbf54)
  • hanging wsPromise after closeConnection (#1868) (b4e7a89), closes #1122 #1863
  • isolate event listener errors from the dispatch loop (#1850) (dc56e57)
  • reconnect past connection timeout (#1874) (2004a83), closes #1760
  • send the read request regardless of read receipt privacy settings (#1853) (59d8f31)

Features

  • client: support custom_set and custom_unset in batch channel update (#1856) (d05c2f5)
  • establish network connection observer services (#1859) (4c46949)
  • message pruning (696f56f)
  • message pruning (#1875) (d4d2c6c)
  • MessageComposer: add composition middleware for pending attachment uploads (#1845) (68e5d69)
  • openapi related clean up (#1870) (b3fa906)

Don't miss a new stream-chat release

NewReleases is sending notifications on new releases.