Releases: element-hq/element-call
v0.15.0-rc.1
Stability and Spec work
This release introduces a key part of the MatrixRTC spec that was previously missing from Element Call. The state key of call member events is now distinct per MatrixRTC session type (application), allowing an Element Call m.call session to run alongside other session types.
Calls also now have a dedicated "Reconnecting" state. This enhances both stability and security: Element Call stops publishing and subscribing media when you are disconnected from the room state. This prevents downloading media you cannot decrypt and uploading media unnecessarily when others are not aware you are in the call.
What's Changed
🛠 Breaking Changes
- Stop reading deprecated config options (DONT USE:
membership_keep_alive_period
,membership_server_side_expiry_timeout
,key_rotation_on_leave_delay
) by @toger5 in #3416
✨ Features
- Allow multiple MatrixRTC sessions per room by @fkwp in #3451
- Pause media tracks and show a message when reconnecting to MatrixRTC by @robintown in #3453
🙌 Improvements
- Expose
delayed_leave_event_restart_local_timeout_ms
toconfig.json
by @toger5 in #3415 - Reset LiveKit connection timeouts to their defaults by @robintown in #3436
- Set available devices to empty map on safari. Safari does not allow changing output devices so the output device dialog is confusing. by @toger5 in #3426
- Localazy Download by @RiotRobot in #3441
- Add intents for DM by @toger5 in #3445
- Move the switch camera button to the local user's tile by @robintown in #3336
📄 Documentation
- Cleanup self-hosting guide by @fkwp in #3437
- Improve Matrix site setup diagram by @fkwp in #3440
- Doc: Use new naming of jwt auth service by @fkwp in #3455
🐛 Bugfixes
- Trim extra characters from roomId parameter in URL by @Half-Shot in #3412
- Request capability to send call notifications by @robintown in #3418
💾 Developer Experience
- UrlParams: Intent system update, split into configuration and propreties by @toger5 in #3376
- Use
.ts
for remaining js config files by @toger5 in #3443
Others
- DevX: update dev backend to support jwt-token v3 by @BillCarsonFr in #3429
- Display a custom error for restricted SFU config error by @BillCarsonFr in #3428
- Fix: missing logs in rageshake by @toger5 in #3434
- Add a fullscreen button that uses the element request Fullscreen browser api by @toger5 in #3447
- Hangup when last person in call (based on url params) by @toger5 in #3372
👒 Dependencies
- Update all non-major dependencies by @renovate[bot] in #3433
- Update embedded package dependencies by @renovate[bot] in #3432
- Update dependency livekit-client to v2.15.4 by @renovate[bot] in #3425
- Update dependency @vector-im/compound-design-tokens to v6 by @renovate[bot] in #3438
- Update dependency livekit-client to v2.15.5 by @renovate[bot] in #3452
Full Changelog: v0.14.1...v0.15.0-rc.1
Docker full package
Element Call is available as a Docker image from the GitHub Container Registry.
The image provides a full build of Element Call that can be used both in standalone and as a widget (on a remote URL).
docker pull ghcr.io/element-hq/element-call:v0.15.0-rc.1
Embedded packages
This release includes the following embedded packages that allow Element Call to be used as an embedded widget
within another application.
NPM
npm install @element-hq/element-call-embedded@0.15.0-rc.1
Android AAR
dependencies {
implementation 'io.element.android:element-call-embedded:0.15.0-rc.1-SNAPSHOT'
}
SwiftPM
.package(url: "https://github.com/element-hq/element-call-swift.git", from: "0.15.0-rc.1")
v0.14.1
This minor release fixes an issue with the rageshake logging. Additionally it fixes one issue that results in missing audio streams on Safari.
What's Changed
🐛 Bugfixes
- Backport: Set available devices to empty map on safari. by @toger5 in #3427
- Backport: missing logs in rageshake by @toger5 in #3435
Others
Full Changelog: v0.14.0...v0.14.1
Docker full package
Element Call is available as a Docker image from the GitHub Container Registry.
The image provides a full build of Element Call that can be used both in standalone and as a widget (on a remote URL).
docker pull ghcr.io/element-hq/element-call:v0.14.1
Embedded packages
This release includes the following embedded packages that allow Element Call to be used as an embedded widget
within another application.
NPM
npm install @element-hq/element-call-embedded@0.14.1
Android AAR
dependencies {
implementation 'io.element.android:element-call-embedded:0.14.1'
}
SwiftPM
.package(url: "https://github.com/element-hq/element-call-swift.git", from: "0.14.1")
v0.14.0
What's Changed
✨ Features
- Send notification events when starting a call by @robintown in #3248
🙌 Improvements
- Reduce timeout after network error down to 100 ms for resetting delayed events by @fkwp in #3365
- Increase opacity of the EarpieceOverlay background for better visibility by @toger5 in #3369
- Update earpiece overlay button text for clarity by @toger5 in #3370
🐛 Bugfixes
- Touch up some error screens by @robintown in #3337
- Request capability to send call notifications by @robintown in #3421
Others
- Fix bluetooth iOS issue (device auto switches from Bluetooth to speaker) by @toger5 in #3388
- Earpiece follow up: Change labels and icons by @toger5 in #3401
- Backport: bump js-sdk version 28/07/2025 (disable encryption manager in unencrypted rooms) by @toger5 in #3423
👒 Dependencies
- Update dependency livekit-client to v2.14.0 by @renovate[bot] in #3371
- Update embedded package dependencies by @renovate[bot] in #3378
- Update all non-major dependencies by @renovate[bot] in #3377
- Update dependency livekit-client to v2.15.2 by @renovate[bot] in #3396
- Update dependency @vector-im/compound-design-tokens to v4.0.5 by @renovate[bot] in #3392
- Update dependency @livekit/components-react to v2.9.13 by @renovate[bot] in #3395
- Update dependency livekit-client to v2.15.3 by @renovate[bot] in #3406
- Update LiveKit components by @renovate[bot] in #3407
- Update dependency @vector-im/compound-web to v8.2.0 by @renovate[bot] in #3410
- Update dependency @vector-im/compound-design-tokens to v5 by @renovate[bot] in #3411
Full Changelog: v0.13.1...v0.14.0
Docker full package
Element Call is available as a Docker image from the GitHub Container Registry.
The image provides a full build of Element Call that can be used both in standalone and as a widget (on a remote URL).
docker pull ghcr.io/element-hq/element-call:v0.14.0
Embedded packages
This release includes the following embedded packages that allow Element Call to be used as an embedded widget
within another application.
NPM
npm install @element-hq/element-call-embedded@0.14.0
Android AAR
dependencies {
implementation 'io.element.android:element-call-embedded:0.14.0'
}
SwiftPM
.package(url: "https://github.com/element-hq/element-call-swift.git", from: "0.14.0")
v0.14.0-rc.2
What's Changed
🐛 Bugfixes
- Request capability to send call notifications by @robintown in #3421
Others
- Backport: bump js-sdk version 28/07/2025 (disable encryption manager in unencrypted rooms) by @toger5 in #3423
Full Changelog: v0.14.0-rc.1...v0.14.0-rc.2
Docker full package
Element Call is available as a Docker image from the GitHub Container Registry.
The image provides a full build of Element Call that can be used both in standalone and as a widget (on a remote URL).
docker pull ghcr.io/element-hq/element-call:v0.14.0-rc.2
Embedded packages
This release includes the following embedded packages that allow Element Call to be used as an embedded widget
within another application.
NPM
npm install @element-hq/element-call-embedded@0.14.0-rc.2
Android AAR
dependencies {
implementation 'io.element.android:element-call-embedded:0.14.0-rc.2-SNAPSHOT'
}
SwiftPM
.package(url: "https://github.com/element-hq/element-call-swift.git", from: "0.14.0-rc.2")
v0.14.0-rc.1
What's Changed
✨ Features
- Send notification events when starting a call by @robintown in #3248
🙌 Improvements
- Reduce timeout after network error down to 100 ms for resetting delayed events by @fkwp in #3365
- Increase opacity of the EarpieceOverlay background for better visibility by @toger5 in #3369
- Update earpiece overlay button text for clarity by @toger5 in #3370
🐛 Bugfixes
- Touch up some error screens by @robintown in #3337
Others
- Fix bluetooth iOS issue (device auto switches from Bluetooth to speaker) by @toger5 in #3388
- Earpiece follow up: Change labels and icons by @toger5 in #3401
👒 Dependencies
- Update dependency livekit-client to v2.14.0 by @renovate[bot] in #3371
- Update embedded package dependencies by @renovate[bot] in #3378
- Update all non-major dependencies by @renovate[bot] in #3377
- Update dependency livekit-client to v2.15.2 by @renovate[bot] in #3396
- Update dependency @vector-im/compound-design-tokens to v4.0.5 by @renovate[bot] in #3392
- Update dependency @livekit/components-react to v2.9.13 by @renovate[bot] in #3395
- Update dependency livekit-client to v2.15.3 by @renovate[bot] in #3406
- Update LiveKit components by @renovate[bot] in #3407
- Update dependency @vector-im/compound-web to v8.2.0 by @renovate[bot] in #3410
- Update dependency @vector-im/compound-design-tokens to v5 by @renovate[bot] in #3411
Full Changelog: v0.13.0-rc.1...v0.14.0-rc.1
Docker full package
Element Call is available as a Docker image from the GitHub Container Registry.
The image provides a full build of Element Call that can be used both in standalone and as a widget (on a remote URL).
docker pull ghcr.io/element-hq/element-call:v0.14.0-rc.1
Embedded packages
This release includes the following embedded packages that allow Element Call to be used as an embedded widget
within another application.
NPM
npm install @element-hq/element-call-embedded@0.14.0-rc.1
Android AAR
dependencies {
implementation 'io.element.android:element-call-embedded:0.14.0-rc.1-SNAPSHOT'
}
SwiftPM
.package(url: "https://github.com/element-hq/element-call-swift.git", from: "0.14.0-rc.1")
v0.13.1
This release fixes bluetooth devices issues on iOS present in v0.13.0.
What's Changed
🐛 Bugfixes
Known problems
- When the bluetooth device is connected to the phone mid call, there can be problems when switching devices.
Full Changelog: v0.13.0...v0.13.1
Docker full package
Element Call is available as a Docker image from the GitHub Container Registry.
The image provides a full build of Element Call that can be used both in standalone and as a widget (on a remote URL).
docker pull ghcr.io/element-hq/element-call:v0.13.1
Embedded packages
This release includes the following embedded packages that allow Element Call to be used as an embedded widget
within another application.
NPM
npm install @element-hq/element-call-embedded@0.13.1
Android AAR
dependencies {
implementation 'io.element.android:element-call-embedded:0.13.1'
}
SwiftPM
.package(url: "https://github.com/element-hq/element-call-swift.git", from: "0.13.1")
v0.13.0
Native audio device handling
This release delivers a significant upgrade to the audio experience, with a particular focus on mobile devices. We've enhanced Element Call to provide a more native, phone-call-like experience when used within Element X.
Key improvements include:
- Support for earpiece audio output on both Android and iOS
- Convenient toggle button in the main menu to switch between earpiece and loudspeaker modes
- Proximity sensor integration that automatically turns off the screen when the device is held against your ear in earpiece mode
These changes represent a major step forward in making Element Call feel like a natural extension of your device's native calling capabilities.
What's Changed
✨ Features
- Audio device controls for mobile native audio device selection by @toger5 in #3270
- Mute camera in earpiece mode by @toger5 in #3351
- Earpiece switcher and overlay by @robintown in #3347
🙌 Improvements
- Improve the reliability of state changes in widget mode by @robintown in #3177
- Disable device switching when in controlled audio devices mode and non
update_state
widget driver compatibility by @toger5 in #3290 - Build Docker image on slim base by @AndrewFerr in #3204
- add onAudioPlaybackStarted callback for controls by @toger5 in #3309
- Apply new timing constants to MatrixRTC session by @fkwp in #3332
- Add
onBackButtonPressed
controls api by @toger5 in #3357 - Update dependency livekit-client to v2.14.0 (#3371) by @toger5 in #3374
- Increase opacity of the EarpieceOverlay background for better visibility by @toger5 in #3381
- Update earpiece overlay button text for clarity (#3370) by @toger5 in #3380
📄 Documentation
🐛 Bugfixes
- Fix lk-jwt-service config in example compose file by @AndrewFerr in #3279
- Fix creating two lk rooms if there is no local store setup (fixes a resulting disconnect bug) by @toger5 in #3293
- Only use ios platform logic when in controlled media device condition by @toger5 in #3295
- Fix Playwright tests by @fkwp in #3294
- Break loop in acquiring media on Safari by @robintown in #3311
- Always render audio from the current set of participants by @robintown in #3317
- Fix react errors in settings tab by @toger5 in #3314
- Avoid reactivity bugs in how we track external state by @robintown in #3316
- bump js-sdk to latest develop (containing a fix for membership manager resend join event) by @toger5 in #3333
- bugfix: #3344 Reconnecting to the same SFU on membership change by @BillCarsonFr in #3361
- Fix white borders in PiP mode android (Fix scroll issues in small documents) by @toger5 in #3362
- Fix initial selection when using controlled media by @toger5 in #3363
💾 Developer Experience
- Add nginx upstream group of servers for JWT Service by @fkwp in #3283
- Add developer build mode to GitHub action build-element-call.yaml by @fkwp in #3323
- fix: Force the docker image for lk-jwt-service to be pulled everytime by @fkwp in #3325
Others
- Improvements to audio renderer logging. by @toger5 in #3308
- Expose keep alive event configurarion in ec config and update defaults. by @toger5 in #3303
- Skip unnecassary media devices permissions requests (video feed flicker when opening settings) by @toger5 in #3353
- Localazy Download by @RiotRobot in #3367
👒 Dependencies
- Reset to develop branch of matrix-js-sdk by @robintown in #3285
- Update dependency livekit-client to v2.13.1 by @renovate in #3292
- Update all non-major dependencies by @renovate in #3186
- Update LiveKit components by @renovate in #3172
- Update dependency @vector-im/compound-design-tokens to v4 by @renovate in #3036
- Update dependency vite to v6.2.7 [SECURITY] by @renovate in #3301
- Update all non-major dependencies by @renovate in #3305
- Update dependency @vector-im/compound-design-tokens to v4.0.3 by @renovate in #3306
- Update dependency @livekit/components-react to v2.9.9 by @renovate in #3307
- Update embedded package dependencies by @renovate in #3304
- Update react monorepo to v19 (major) by @renovate in #2874
- Update dependency livekit-client to v2.13.4 by @renovate in #3327
- Update dependency @vector-im/compound-design-tokens to v4.0.4 by @renovate in #3338
- Update dependency livekit-client to v2.13.5 by @renovate in #3343
- Update dependency livekit-client to v2.13.6 by @renovate in #3348
- Update dependency livekit-client to v2.13.7 by @renovate in #3350
- Update dependency @livekit/components-react to v2.9.10 by @renovate in #3349
- Update dependency livekit-client to v2.13.8 by @renovate in #3352
- Update dependency @vector-im/compound-web to v8 by @renovate in #3355
- Update LiveKit components by @renovate in #3364
New Contributors
- @jmartinesp made their first contribution in #3313
Full Changelog: v0.12.2...v0.13.0
Docker full package
Element Call is available as a Docker image from the GitHub Container Registry.
The image provides a full build of Element Call that can be used both in standalone and as a widget (on a remote URL).
docker pull ghcr.io/element-hq/element-call:v0.13.0
Embedded packages
This release includes the following embedded packages that allow Element Call to be used as an embedded widget
within another application.
NPM
npm install @element-hq/element-call-embedded@0.13.0
Android AAR
dependencies {
implementation 'io.element.android:element-call-embedded:0.13.0'
}
SwiftPM
.package(url: "https://github.com/element-hq/element-call-swift.git", from: "0.13.0")
v0.13.0-rc.1
What's Changed
✨ Features
- Audio device controls for mobile native audio device selection by @toger5 in #3270
- Mute camera in earpice mode by @toger5 in #3351
- Earpiece switcher and overlay by @robintown in #3347
🙌 Improvements
- Improve the reliability of state changes in widget mode by @robintown in #3177
- Disable device switching when in controlled audio devices mode and non
update_state
widget driver compatibility by @toger5 in #3290 - Build Docker image on slim base by @AndrewFerr in #3204
- add onAudioPlaybackStarted callback for controls by @toger5 in #3309
- Apply new timing constants to MatrixRTC session by @fkwp in #3332
- Add
onBackButtonPressed
controls api by @toger5 in #3357
📄 Documentation
🐛 Bugfixes
- Fix lk-jwt-service config in example compose file by @AndrewFerr in #3279
- Fix creating two lk rooms if there is no local store setup (fixes a resulting disconnect bug) by @toger5 in #3293
- Only use ios platform logic when in controlled media device condition by @toger5 in #3295
- Fix Playwright tests by @fkwp in #3294
- Break loop in acquiring media on Safari by @robintown in #3311
- Always render audio from the current set of participants by @robintown in #3317
- Fix react errors in settings tab by @toger5 in #3314
- Avoid reactivity bugs in how we track external state by @robintown in #3316
- bump js-sdk to latest develop (containing a fix for membership manager resend join event) by @toger5 in #3333
- bugfix: #3344 Reconnecting to the same SFU on membership change by @BillCarsonFr in #3361
- Fix white borders in PiP mode android (Fix scroll issues in small documents) by @toger5 in #3362
- Fix initial selection when using controlled media by @toger5 in #3363
💾 Developer Experience
- Add nginx upstream group of servers for JWT Service by @fkwp in #3283
- Add developer build mode to GitHub action build-element-call.yaml by @fkwp in #3323
- fix: Force the docker image for lk-jwt-service to be pulled everytime by @fkwp in #3325
Others
- Improvements to audio renderer logging. by @toger5 in #3308
- Expose keep alive event configurarion in ec config and update defaults. by @toger5 in #3303
- Skip unnecassary media devices permissions requests (video feed flicker when opening settings) by @toger5 in #3353
👒 Dependencies
- Reset to develop branch of matrix-js-sdk by @robintown in #3285
- Update dependency livekit-client to v2.13.1 by @renovate in #3292
- Update all non-major dependencies by @renovate in #3186
- Update LiveKit components by @renovate in #3172
- Update dependency @vector-im/compound-design-tokens to v4 by @renovate in #3036
- Update dependency vite to v6.2.7 [SECURITY] by @renovate in #3301
- Update all non-major dependencies by @renovate in #3305
- Update dependency @vector-im/compound-design-tokens to v4.0.3 by @renovate in #3306
- Update dependency @livekit/components-react to v2.9.9 by @renovate in #3307
- Update embedded package dependencies by @renovate in #3304
- Update react monorepo to v19 (major) by @renovate in #2874
- Update dependency livekit-client to v2.13.4 by @renovate in #3327
- Update dependency @vector-im/compound-design-tokens to v4.0.4 by @renovate in #3338
- Update dependency livekit-client to v2.13.5 by @renovate in #3343
- Update dependency livekit-client to v2.13.6 by @renovate in #3348
- Update dependency livekit-client to v2.13.7 by @renovate in #3350
- Update dependency @livekit/components-react to v2.9.10 by @renovate in #3349
- Update dependency livekit-client to v2.13.8 by @renovate in #3352
- Update dependency @vector-im/compound-web to v8 by @renovate in #3355
- Update LiveKit components by @renovate in #3364
New Contributors
- @jmartinesp made their first contribution in #3313
Full Changelog: v0.12.0-rc.1...v0.13.0-rc.1
Docker full package
Element Call is available as a Docker image from the GitHub Container Registry.
The image provides a full build of Element Call that can be used both in standalone and as a widget (on a remote URL).
docker pull ghcr.io/element-hq/element-call:v0.13.0-rc.1
Embedded packages
This release includes the following embedded packages that allow Element Call to be used as an embedded widget
within another application.
NPM
npm install @element-hq/element-call-embedded@0.13.0-rc.1
Android AAR
dependencies {
implementation 'io.element.android:element-call-embedded:0.13.0-rc.1-SNAPSHOT'
}
SwiftPM
.package(url: "https://github.com/element-hq/element-call-swift.git", from: "0.13.0-rc.1")
v0.12.2 (Embedded only release)
It contains the following notable changes to optimize the audio device handling on mobile devices:
-
add onAudioTrackReady callback for controls 533297
-
Use html audio element to call setsink id for reactions and call sounds. 5332970
-
Always render audio from the current set of participants 9ff6bc
-
Avoid reactivity bugs in how we track external state 047b3f
-
Ignore spurious 'devicechange' events a9ab93
-
Break loop in acquiring media on Safari 8b75a2
Full Changelog: v0.12.0...v0.12.2
Docker full package
Element Call is available as a Docker image from the GitHub Container Registry.
The image provides a full build of Element Call that can be used both in standalone and as a widget (on a remote URL).
docker pull ghcr.io/element-hq/element-call:v0.12.2
Embedded packages
This release includes the following embedded packages that allow Element Call to be used as an embedded widget
within another application.
NPM
npm install @element-hq/element-call-embedded@0.12.2
Android AAR
dependencies {
implementation 'io.element.android:element-call-embedded:0.12.2'
}
SwiftPM
.package(url: "https://github.com/element-hq/element-call-swift.git", from: "0.12.2")
v0.12.0
What's Changed
✨ Features
- Add custom audio renderer for iPhone earpiece and only render joined participants by @toger5 in #3249
- Audio device controls for mobile native audio device selection by @robintown in #3288
🙌 Improvements
- Keep the HTML lang attribute in sync with the i18next language by @sandhose in #3247
- Bump js-sdk to support to-device driver unsupported fallback. by @toger5 in #3277
- Improve the reliability of state changes in widget mode by @robintown in #3281
📄 Documentation
- Localazy Download by @RiotRobot in #3273
🐛 Bugfixes
- Fix to-device encryption info label by @toger5 in #3208
- Fix connection leaks: Ensure that any pending connection open are cancelled/undo when ActiveCall is unmounted by @BillCarsonFr in #3255
- Fix creating two lk rooms if there is no local store setup (fixes a resulting disconnect bug) by @toger5 in #3297
💾 Developer Experience
- Developer option to mute all audio by @toger5 in #3239
- Docker-compose: do not access ports <443 by @toger5 in #3261
Others
- DevX: Properly server .well-known and use endpoint routing as described in self-hosting.md by @fkwp in #3235
- only show to-device transport label in dev mode by @BillCarsonFr in #3221
- Backport: Disable device switching when in controlled audio devices mode by @toger5 in #3291
👒 Dependencies
- Update embedded package dependencies by @renovate in #3242
- Update dependency livekit-client to v2.11.4 by @renovate in #3260
- Update dependency livekit-client to v2.12.0 by @renovate in #3265
- Update dependency vite to v6.2.7 [SECURITY] by @renovate in #3240
- Update GitHub Actions by @renovate in #3241
- Reset to develop branch of matrix-js-sdk by @robintown in #3286
Full Changelog: v0.11.1...v0.12.0
Docker full package
Element Call is available as a Docker image from the GitHub Container Registry.
The image provides a full build of Element Call that can be used both in standalone and as a widget (on a remote URL).
docker pull ghcr.io/element-hq/element-call:v0.12.0
Embedded packages
This release includes the following embedded packages that allow Element Call to be used as an embedded widget
within another application.
NPM
npm install @element-hq/element-call-embedded@0.12.0
Android AAR
dependencies {
implementation 'io.element.android:element-call-embedded:0.12.0'
}
SwiftPM
.package(url: "https://github.com/element-hq/element-call-swift.git", from: "0.12.0")