webrtc
Async-friendly WebRTC implementation in Rust
0.20.3
5.8M downloads/mo
#4221 most downloaded on crates.io
webrtc-rs/webrtc
What this package is like to depend on
Last release today
22 Aug 2026
Release timing varies
gaps range from 9 days to 7 months
Rarely documented
notes for 7 of 52 stable releases
1 version withdrawn
withdrawn after publishing
8 years old
66 releases · first in 2018
21 releases in the last 12 months
see the full history below
Release timeline
66 releases · Aug 2018 to Aug 2026Releases
latest 60 of 66-
0.21.0-beta.222 Aug 2026 pre-releaseRelease notes
Open source →What's Changed
- bump version to v0.21.0-beta.1 by @rainliu in #879
- use Attribute::DeliverToApplication for RTCP forwarder by @rainliu in #880
Full Changelog: v0.21.0-beta.1...v0.21.0-beta.2
-
0.21.0-beta.119 Aug 2026 pre-releaseRelease notes
Open source →What's Changed
- ICE restart rebind reuses stale resolved addresses after a network handover and terminates the driver on EADDRNOTAVAIL #874 by @rainliu in #877
- bump version to v0.21.0-alpha.2 by @rainliu in #878
Full Changelog: v0.21.0-alpha.2...v0.21.0-beta.1
-
0.21.0-alpha.216 Aug 2026 pre-releaseRelease notes
Open source →What's Changed
- bump version to v0.21.0-alpha.1 by @rainliu in #865
- update SettingEngineBuilder by @rainliu in #866
- [Pre 1.0] C1 — Transport Objects #841 by @rainliu in #867
- Apply the SettingEngine TURN allocation Refresh cap by @duszmox in #870
- Android ICE restart stalls after ~10s background; rebinding UDP sockets restores recovery #868 by @rainliu in #872
New Contributors
Full Changelog: v0.21.0-alpha.1...v0.21.0-alpha.2
-
0.21.0-alpha.109 Aug 2026 pre-releaseRelease notes
Open source →What's Changed
- [Pre-1.0] G2 — Make the API extensible before freezing it #838 by @rainliu in #849
- P8 — Integrate with the async webrtc repository by @rainliu in #851
- remove public API crypto_provider from RTCPeerConnection by @rainliu in #855
- [Pre-1.0] G4 — Deterministic time in the rtc core by @rainliu in #859
- Inbound data-channel messages are silently dropped when the consumer is slow #858 by @rainliu in #861
- PeerConnection driver can hot-loop on a non-advancing expired timeout #862 by @rainliu in #864
Full Changelog: v0.20.0...v0.21.0-alpha.1
-
0.20.316 Aug 2026 -
0.20.211 Aug 2026 -
0.20.109 Aug 2026 -
0.20.031 Jul 2026Release notes
Open source →What's Changed
- update example data-channels-flow-control by @zhao-gang in #783
- perf: eliminate tokio scheduler overhead on the data-channel send path (#101) by @StefanoD in #813
- perf(driver): burst-read the udp socket to batch the SCTP receive path by @StefanoD in #815
- feat(datachannel): opt-in send back-pressure (writable / try_send) to bound peak RSS by @StefanoD in #817
- perf(driver): UDP GSO send + GRO receive batching via quinn-udp by @StefanoD in #820
- feat(runtime): bounded shared reactor pool + configurable SCTP receive window by @StefanoD in #819
- fix(driver): only announce peer-opened channels through on_data_channel by @yexiyue in #825
- fix(peer_connection): export the stats types
get_statsnames by @yexiyue in #828 - Fix ICE server updates after set_configuration by @alinejun in #832
- clean up stale data channel event senders on drop by @dimitri-lenkov in #833
- wake writes after create_data_channel by @dimitri-lenkov in #834
New Contributors
- @zhao-gang made their first contribution in #783
- @StefanoD made their first contribution in #813
- @yexiyue made their first contribution in #825
- @alinejun made their first contribution in #832
- @dimitri-lenkov made their first contribution in #833
Full Changelog: v0.17.0...v0.20.0
-
0.20.0-rc.422 Jul 2026 pre-releaseRelease notes
Open source →What's Changed
- perf(driver): burst-read the udp socket to batch the SCTP receive path by @StefanoD in #815
- feat(datachannel): opt-in send back-pressure (writable / try_send) to bound peak RSS by @StefanoD in #817
- perf(driver): UDP GSO send + GRO receive batching via quinn-udp by @StefanoD in #820
- feat(runtime): bounded shared reactor pool + configurable SCTP receive window by @StefanoD in #819
Full Changelog: v0.20.0-rc.3...v0.20.0-rc.4
-
0.20.0-rc.313 Jul 2026 pre-releaseNothing published for this version
-
0.20.0-rc.208 Jul 2026 pre-releaseNothing published for this version
-
0.20.0-rc.101 Jul 2026 pre-releaseNothing published for this version
-
0.20.0-beta.227 Jun 2026 pre-releaseNothing published for this version
-
0.20.0-beta.126 Jun 2026 pre-releaseNothing published for this version
-
0.20.0-alpha.325 Jun 2026 pre-releaseNothing published for this version
-
0.20.0-alpha.224 Jun 2026 pre-releaseNothing published for this version
-
0.20.0-alpha.101 Mar 2026 pre-releaseNothing published for this version
-
0.17.220 Jul 2026Release notes
Open source →What's Changed
- ice: Release TURN allocation even if candidate was already closed by @marcin-p-porebski in #799
- fix(ice): always send STUN consent checks (RFC 7675) by @brady-pplx in #803
- util: don't tear down UDP listener read_loop on WSAECONNRESET (Windows) by @rwtd in #812
- Release mDNS resources when connections close by @mmalmi in #818
- sctp: lower INITIAL_MTU to 1191 and expose the MTU in association::Config by @phact in #807
New Contributors
- @brady-pplx made their first contribution in #803
- @rwtd made their first contribution in #812
- @mmalmi made their first contribution in #818
- @phact made their first contribution in #807
Full Changelog: v0.17.1...v0.17.2
-
0.17.106 Feb 2026Nothing published for this version
-
0.17.031 Jan 2026Nothing published for this version
-
0.14.020 Sep 2025Nothing published for this version
-
0.13.014 May 2025Nothing published for this version
-
0.12.007 Dec 2024Nothing published for this version
-
0.11.002 May 2024Nothing published for this version
-
0.10.124 Feb 2024Nothing published for this version
-
0.10.023 Feb 2024Nothing published for this version
-
0.9.010 Sep 2023Nothing published for this version
-
0.8.020 Jun 2023Nothing published for this version
-
0.7.320 May 2023Nothing published for this version
-
0.7.226 Apr 2023Nothing published for this version
-
0.7.127 Feb 2023Nothing published for this version
-
0.7.025 Feb 2023 withdrawnNothing published for this version
-
0.6.015 Nov 2022Nothing published for this version
-
0.5.119 Sep 2022Release notes
Open source →- Promote agent lock in ice_gather.rs create_agent() to top level of the function to avoid a race condition. #290 Promote create_agent lock to top of function, to avoid race condition contributed by efer-ms
-
0.5.007 Sep 2022Release notes
Open source →Changes
Breaking changes
- The serialized format for
RTCIceCandidateInithas changed to match what the specification i.e. keys are camelCase. #153 Make RTCIceCandidateInit conform to WebRTC spec contributed by jmatss. - Improved robustness when proposing RTP extension IDs and handling of collisions in these. This change is only breaking if you have assumed anything about the nature of these extension IDs. #154 Fix RTP extension id collision contributed by k0nserv
- Transceivers will now not stop when either or both directions are disabled. That is, applying and SDP with
a=inactivewill not stop the transceiver, instead attached senders and receivers will pause. A transceiver can be resurrected by setting direction back to e.g.a=sendrecv. The desired direction can be controlled with the newly introduced public methodset_directiononRTCRtpTransceiver.- #201 Handle inactive transceivers more correctly contributed by k0nserv
- #210 Rework transceiver direction support further contributed by k0nserv
- #214 set_direction add missing Send + Sync bound contributed by algesten
- #213 set_direction add missing Sync bound contributed by algesten
- #212 Public RTCRtpTransceiver::set_direction contributed by algesten
- #268 Fix current direction update when applying answer contributed by k0nserv
- #236 Pause RTP writing if direction indicates it contributed by algesten
- Generated the
a=msidline form=line sections according to the specification. This might be break remote peers that relied on the previous, incorrect, behaviour. This also fixes a bug where an endless negotiation loop could happen. #217 Correct msid handling for RtpSender contributed by k0nserv - Improve data channel id negotiation. We've slightly adjust the public interface for creating pre-negotiated data channels. Instead of a separate
negotiated: Option<bool>andid: Option<u16>inRTCDataChannelInitthere's now a more idiomaticnegotiated: Option<u16>. If you have a pre-negotiated data channel simply setnegotiated: Some(id)when creating the data channel.
Other improvememnts
We made various improvements and fixes since 0.4.0, including merging all subcrates into a single git repo. The old crate repos are archived and all development will now happen in https://github.com/webrtc-rs/webrtc/.
-
We now provide stats reporting via the standardized
RTCPeerConnection::get_statsmethod.- #277 Implement Remote Inbound Stats contributed by k0nserv
- #220 Make stats types pub so they can be used directly contributed by k0nserv
- #225 Add RTP Stats to stats report contributed by k0nserv
- #189 Serialize stats contributed by sax
- #180 Get stats from peer connection contributed by sax
-
#278 Fix async-global-executor contributed by k0nserv
-
#276 relax regex version requirement contributed by melekes
-
#244 Update README.md instructions after monorepo merge contributed by k0nserv
-
#241 move profile to workspace contributed by xnorpx
-
#240 Increase timeout to "fix" test breaking contributed by algesten
-
#239 One repo (again) contributed by algesten
-
#234 Fix recent clippy lints contributed by k0nserv
-
#224 update call to DataChannel::accept as per data pr #14 contributed by melekes
-
#223 dtls_transport: always set remote certificate contributed by melekes
-
#216 Lower case mime types for comparison in fmpt lines contributed by k0nserv
-
#211 Helper to trigger negotiation_needed contributed by algesten
-
#209 MID generator feature contributed by algesten
-
#208 update deps + loosen some requirements contributed by melekes
-
#205 data_channel: handle stream EOF contributed by melekes
-
#204 [peer_connection] allow persistent certificates contributed by melekes
-
#202 bugfix-Udp connection not close (reopen #174) #195 contributed by shiqifeng2000
-
#199 Upgrade ICE to 0.7.0 contributed by k0nserv
-
#194 Add AV1 MimeType and RtpCodecParameters contributed by billylindeman
-
#188 Improve operations debuggability contributed by k0nserv
-
#187 Fix SDP for rejected tracks to conform to RFC contributed by k0nserv
-
#185 Adding some debug and display traits contributed by sevensidedmarble
-
#179 Fix example names in README contributed by ethagnawl
-
#176 Time overflow armv7 workaround contributed by frjol
-
#171 close DTLS conn upon err contributed by melekes
-
#170 always start sctp contributed by melekes
-
#167 Add offer/answer/pranswer constructors for RTCSessionDescription contributed by sax
Subcrate updates
The various sub-crates have been updated as follows:
- util: 0.5.3 => 0.6.0
- sdp: 0.5.1 => 0.5.2
- mdns: 0.4.2 => 0.5.0
- stun: 0.4.2 => 0.4.3
- turn: 0.5.3 => 0.6.0
- ice: 0.6.4 => 0.8.0
- dtls: 0.5.2 => 0.6.0
- rtcp: 0.6.5 => 0.7.0
- rtp: 0.6.5 => 0.6.7
- srtp: 0.8.9 => 0.9.0
- scpt: 0.4.3 => 0.6.1
- data: 0.3.3 => 0.5.0
- interceptor: 0.7.6 => 0.8.0
- media: 0.4.5 => 0.4.7
Their respective change logs are found in the old, now archived, repositories and within their respective
CHANGELOG.mdfiles in the monorepo.Contributors
A big thanks to all the contributors that have made this release happen:
- The serialized format for
-
0.4.017 Jan 2022Nothing published for this version
-
0.3.416 Dec 2021Nothing published for this version
-
0.3.311 Dec 2021Nothing published for this version
-
0.3.206 Dec 2021Nothing published for this version
-
0.3.115 Nov 2021Nothing published for this version
-
0.3.008 Nov 2021Nothing published for this version
-
0.2.225 Oct 2021Nothing published for this version
-
0.2.120 Oct 2021Nothing published for this version
-
0.2.009 Oct 2021Nothing published for this version
-
0.1.307 Oct 2021Nothing published for this version
-
0.1.206 Oct 2021Nothing published for this version
-
0.1.101 Oct 2021Nothing published for this version
-
0.1.026 Sep 2021Nothing published for this version
-
0.0.1726 Sep 2021Nothing published for this version
-
0.0.1625 Sep 2021Nothing published for this version
-
0.0.1525 Sep 2021Nothing published for this version
-
0.0.1424 Sep 2021Nothing published for this version
-
0.0.1320 Sep 2021Nothing published for this version
-
0.0.1220 Sep 2021Nothing published for this version
-
0.0.1119 Sep 2021Nothing published for this version
-
0.0.1013 Sep 2021Nothing published for this version
-
0.0.906 Sep 2021Nothing published for this version
-
0.0.806 Sep 2021Nothing published for this version
-
0.0.705 Sep 2021Nothing published for this version
-
0.0.601 Jun 2021Nothing published for this version