LiveSwitch 1.26 Release
LiveSwitch 1.26 includes two significant infrastructure changes that require attention before upgrading:
- OpenSSL 3.5.4 — All native SDK platforms and the Media Server have been upgraded from OpenSSL 1.x to OpenSSL 3.5.4, adding TLS 1.3 support and retiring an end-of-life cryptography library.
- Non-root Docker containers — All server service containers now run as a non-root user. Before upgrading, ensure host-mounted volumes are owned by UID 1654 and that containers binding to port 443 have the
NET_BIND_SERVICEcapability granted.
Release Notes for LiveSwitch Server v1.26
1.26.0.21097
Release date: June 01, 2026
Client SDK
Breaking Changes
- [LS1-3686] [Web] The TypeScript SDK's
LocalMediaconstructor now has typed overloads. Passing two separateMediaStreamobjects as audio and video arguments is no longer supported and will produce a compiler error — use a single synchronizedMediaStreamvia the newnew LocalMedia(stream)overload instead. When using this overload, the SDK treats the stream as caller-owned and will not stop the tracks on your behalf, making it suitable for pipelines such as background blur or canvas-based video sources.
New Features
- [LS1-3517] Native camera sources now support changing resolution and frame rate at runtime via new
ChangeResolution,ChangeFrameRate, andChangeConfigmethods onCameraSourceBase.
Improvements
- [LS1-1782] [Android] Replaced deprecated API calls, including screen capture and screen sharing APIs, ensuring compatibility with the latest Android platform releases.
- [LS1-2584] Upgraded all native SDK platforms to OpenSSL 3.5.4, adding TLS 1.3 support and retiring an end-of-life cryptography library.
- [LS1-3306] Updated cryptographic hashing from MD5 to SHA-256 across all SDKs.
- [LS1-3338] [MAUI Android] Echo cancellation is now enabled by default on
AudioRecordSourceinstead of relying on the application to enable it. - [LS1-3546] Improved browser video and audio synchronisation under variable network or device conditions by implementing the WebRTC playout-delay RTP header extension.
- [LS1-3587] [Android] Modernized the example app UI to match the iOS sample app.
- [LS1-3683] [MAUI Android] Restored
libaudioprocessingto the MAUI Android SDK with 16KB memory page size alignment. The library was previously removed to maintain Google Play Store compliance when Android made 16KB page size support compulsory; it is now rebuilt to meet the requirement, restoring audio processing capabilities for MAUI Android apps targeting Android 15+.
Bug Fixes
- [LS1-2873] [MAUI Android] Fixed an issue in the example where audio and video might not flow during P2P calls.
- [LS1-3389] [Unity Android] Fixed an issue in the example where every log message would get duplicated.
- [LS1-3466] [Android] Fixed an issue where screen sharing orientation did not update from portrait to landscape when rotating the device during an active share, causing the video to remain locked in the initial orientation and appear letterboxed.
- [LS1-3540] [iOS] [macOS] Fixed an intermittent crash that occurred when closing WebRTC connections.
- [LS1-3571] [Android] Fixed an issue in the example where double-tapping to switch between front and back camera was not working.
- [LS1-3578] Fixed a race condition where gracefully closing a connected session could suppress the
client:connection.closedanalytics event. - [LS1-3596] Fixed an issue where round-trip time was not being calculated correctly under high-latency or throttled network conditions.
- [LS1-3597] Fixed an issue where closing a connection could hang indefinitely and suppress the
connection.closedevent when an ICE transport failure occurred during graceful shutdown. - [LS1-3605] Fixed an intermittent issue where RSA key generation could produce components with incorrect byte lengths.
- [LS1-3606] Fixed a race condition where a server-side upstream close notification arriving during a client-initiated close could cause the connection to fail instead of closing cleanly, causing
Close()to raise an unexpected error andUnregister()to block for an extended period. - [LS1-3620] Fixed an issue where
MediaTrackInfoJSON deserialization incorrectly mapped thestoppedfield toMutedinstead ofStopped. - [LS1-3665] [Android] Fixed an issue where video buffer cleanup was incorrectly dispatched to the main thread, causing frame skips in group calls with multiple remote participants.
- [LS1-3692] Fixed an issue introduced in 1.25.3 where calling
Channel.CloseAll()would leave the channel unable to create new connections without re-registering. - [LS1-3699] [Android] Fixed an issue where screenshare would crash on Samsung devices after an orientation change.
- [LS1-3700] [macOS] Fixed an issue where local media would fail to start when using certain external USB cameras with fixed frame rates (such as the Logitech C525).
- [LS1-3701] [Web] Fixed an issue where "Could not process bitrate request" errors would occur during teardown of SFU connections.
- [LS1-3707] [Web] Fixed an issue where TypeScript projects with
strictNullChecksenabled would encounter ats(2416)compiler error when importing the LiveSwitch TypeScript SDK in 1.25.x.
All Server Services
Breaking Changes
- [LS1-3690] Resolved CVEs in the Docker base images for all LiveSwitch services. All containers now run as a non-root user (UID 1654). Deployments must ensure any host-mounted volumes (e.g. the recordings directory) are owned by UID 1654, and deployments where Gateway or Media Server bind directly to port 443 must grant the
NET_BIND_SERVICEcapability to the container (--cap-add NET_BIND_SERVICEin Docker, orsecurityContext.capabilities.add: [NET_BIND_SERVICE]in Kubernetes).
Improvements
- [LS1-3306] Updated cryptographic hashing from MD5 to SHA-256 across all server services, retaining MD5 only for SIP Digest Authentication for backward compatibility.
Gateway
Improvements
- [LS1-3387] Upgraded StackExchange.Redis to version 2.9.32, making Redis connections more reliable.
- [LS1-3609] Improved handling of abrupt WebSocket disconnects to immediately clean up client state in Redis instead of waiting for the idle thread (~35 seconds).
- [LS1-3609] Improved deserialization error log messages with clearer descriptions and fixed formatting issues.
Bug Fixes
- [LS1-3480] Fixed binding to an unintended random port when the health check endpoint is not configured.
- [LS1-3604] Fixed Redis resource leaks when connections could not temporarily be re-established.
Media Server
Improvements
- [LS1-2584] The Media Server has been upgraded to OpenSSL 3.5.4, adding TLS 1.3 support and retiring an end-of-life cryptography library.
- [LS1-3546] The Media Server now injects the playout-delay RTP header extension into downlink video streams, ensuring browser viewers benefit from the fix even when the upstream client does not support the extension.
Bug Fixes
- [LS1-3344] Fixed an issue where an SFU upstream connection with no active downstream subscribers would generate a flood of pause/resume events on the Media Server until video frames stopped being sent by the remote connection.
- [LS1-3608] Fixed a memory leak in the video mixer where frame buffers were not released after rendering, causing steady memory growth proportional to active video sources.
- [LS1-3621] Fixed an intermittent race condition in media server clustering where simultaneous connection establishment between two servers could silently drop the surviving connection.
Recording
Bug Fixes
- [LS1-3688] Fixed an issue where running with recording move disabled would log a misleading S3 initialization error.
SIP Connector
Bug Fixes
- [LS1-3549] Fixed an intermittent issue where cancelling an outgoing SIP call could fail to notify the remote side, leaving it in a ringing state.
- [LS1-3607] Fixed a race condition that caused errors when closing UDP-based SIP connections.
1.26.1.21163
Release date: June 08, 2026
All Server Services
Improvements
- [LS1-3716] Routine security maintenance updates to the LiveSwitch server Docker images.