@stream-io/video-client 1.61.0 → 1.61.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,12 @@
2
2
 
3
3
  This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
4
4
 
5
+ ## [1.61.1](https://github.com/GetStream/stream-video-js/compare/@stream-io/video-client-1.61.0...@stream-io/video-client-1.61.1) (2026-10-01)
6
+
7
+ ### Bug Fixes
8
+
9
+ - **client:** stop endless rejoin loop when ICE never connects ([#2482](https://github.com/GetStream/stream-video-js/issues/2482)) ([a1b713d](https://github.com/GetStream/stream-video-js/commit/a1b713d08d48e940b09aad3c66c3dee118e819d6))
10
+
5
11
  ## [1.61.0](https://github.com/GetStream/stream-video-js/compare/@stream-io/video-client-1.60.0...@stream-io/video-client-1.61.0) (2026-09-28)
6
12
 
7
13
  ### Features
@@ -5081,7 +5081,7 @@ const toIceCandidate = (iceTrickle) => {
5081
5081
  }
5082
5082
  };
5083
5083
 
5084
- const version = "1.61.0";
5084
+ const version = "1.61.1";
5085
5085
  const [major, minor, patch] = version.split('.');
5086
5086
  let sdkInfo = {
5087
5087
  type: SdkType.PLAIN_JAVASCRIPT,
@@ -8754,7 +8754,12 @@ class BasePeerConnection {
8754
8754
  }
8755
8755
  // we can't recover from a failed connection state (contrary to ICE)
8756
8756
  if (state === 'failed') {
8757
- this.onReconnectionNeeded?.(WebsocketReconnectStrategy.REJOIN, ReconnectReason.CONNECTION_FAILED, this.peerType);
8757
+ const reason = this.iceHasEverConnected
8758
+ ? ReconnectReason.CONNECTION_FAILED
8759
+ : ReconnectReason.ICE_NEVER_CONNECTED;
8760
+ clearTimeout(this.preConnectStuckTimeout);
8761
+ this.preConnectStuckTimeout = undefined;
8762
+ this.onReconnectionNeeded?.(WebsocketReconnectStrategy.REJOIN, reason, this.peerType);
8758
8763
  return;
8759
8764
  }
8760
8765
  this.handleConnectionStateUpdate(state);
@@ -19633,11 +19638,11 @@ class StreamClient {
19633
19638
  return await this.wsConnection.connect(this.defaultWSTimeout);
19634
19639
  };
19635
19640
  getSdkVersion = () => this.options.clientAppIdentifier?.sdkVersion ||
19636
- "1.61.0";
19641
+ "1.61.1";
19637
19642
  getUserAgent = () => {
19638
19643
  if (!this.cachedUserAgent) {
19639
19644
  const { clientAppIdentifier = {} } = this.options;
19640
- const { sdkName = 'js', sdkVersion = "1.61.0", ...extras } = clientAppIdentifier;
19645
+ const { sdkName = 'js', sdkVersion = "1.61.1", ...extras } = clientAppIdentifier;
19641
19646
  this.cachedUserAgent = [
19642
19647
  `stream-video-${sdkName}-v${sdkVersion}`,
19643
19648
  ...Object.entries(extras).map(([key, value]) => `${key}=${value}`),
@@ -20172,7 +20177,11 @@ class ClientEventReporter {
20172
20177
  return;
20173
20178
  }
20174
20179
  if (event.state === 'failed') {
20175
- this.emitPeerConnectionFailure(cid, role, 'DTLS_CONNECTIVITY_FAILED', 'DTLS connectivity checks failed');
20180
+ const iceConnected = event.iceConnectionState === 'connected' ||
20181
+ event.iceConnectionState === 'completed';
20182
+ this.emitPeerConnectionFailure(cid, role, iceConnected ? 'DTLS_CONNECTIVITY_FAILED' : 'ICE_CONNECTIVITY_FAILED', iceConnected
20183
+ ? 'DTLS connectivity checks failed'
20184
+ : 'ICE connectivity checks failed');
20176
20185
  return;
20177
20186
  }
20178
20187
  switch (event.state) {