PackageTrack
Sign in Get early access

tungstenite

Lightweight stream-based WebSocket implementation

0.30.0 279M downloads/mo #382 most downloaded on crates.io snapview/tungstenite-rs

What this package is like to depend on

Last release 1 months ago

11 Jul 2026

Ships on a steady schedule

a new release about every 3 months

Some releases are documented

notes for 25 of 50 stable releases

Nothing withdrawn

no release was ever pulled

9 years old

50 releases · first in 2017

3 releases in the last 12 months

see the full history below

Release timeline

50 releases · Mar 2017 to Jul 2026
2018 2019 2020 2021 2022 2023 2024 2025 2026
Release Pre-release

Releases

latest 50
  1. 0.30.0 11 Jul 2026
    Release notes
    • Reject non-compliant clients (incorrect Sec-WebSocket-Key length/format) on the server side.
    • Update rand and sha dependencies and raise MSRV to 1.85.
    Open source →
  2. 0.29.0 17 Mar 2026
    Release notes
    • Update MSRV to 1.71 due to syn (the dependency of thiserror) requiring it.
    • Allow users to send headers with non-visible ASCII values (as long as they constitute a correct HeaderValue).
    Open source →
  3. 0.28.0 24 Sep 2025
    Release notes
    • Reduce Error size 136 -> 32 by boxing internals of Error::Http, Error::WriteBufferFull, ProtocolError::InvalidHeader, TlsError::Native, TlsError::Rustls.
    • Dependency update (socket to 0.6.0).
    • Add into_inner() to the WebSocket, so that the user can extract the underlying stream.
    • Address the edge-case for the WebSocket request generation when tungstenite is built with -Zfmt-debug=none.
    Open source →
  4. 0.27.0 13 Jun 2025
    Release notes
    • Fix large message read performance by enforcing max read_buffer_size read chunks.
    • Make Hash implementation consistent for Utf8Bytes payloads.
    Open source →
  5. 0.26.2 18 Feb 2025
    Release notes
    • Add WebSocketConfig::read_buffer_size docs explaining performance/memory tradeoff.
    • Implement traits and add helper methods for the UTF8 payloads making them comparable and more ergonomic.
    Open source →
  6. 0.26.1 19 Dec 2024
    Release notes
    • Fix/revert unsoundness that could lead to UB with dodgy Read stream implementations.
    Open source →
  7. 0.26.0 17 Dec 2024
    Release notes
    • Simplify Message to use Bytes payload directly with simpler Utf8Bytes for text.
    • Change CloseFrame to use Utf8Bytes for reason.
    • Re-export Bytes.
    Open source →
  8. 0.25.0 15 Dec 2024
    Release notes
    • New Payload type for Message that allows sending messages with a payload that can be cheaply cloned (Bytes). Long standing issue solved!
    • Add WebSocketConfig::read_buffer_size default 128 KiB. This improves high load read performance. Note: This default increases memory usage compared to previous versions particularly for users expecting a high number of connections. Configure 4-8 KiB to get a similar memory usage to 0.24.
    • Make WebSocketConfig non-exhaustive & add builder style construction fns.
    • Remove deprecated WebSocketConfig::max_send_queue.
    • Trim spaces on Sec-WebSocket-Protocol header.
    • Eliminate data copies when reading complete messages & optimise read buffer. Improves performance.
    • Update thiserror to 2.
    Open source →
  9. 0.24.0 27 Aug 2024
    Release notes
    • Raised MSRV to 1.63 to match tokio-tungstenite.
    • Connecting to WSS URL without TLS features specified results in a better error.
    • Handshake will now flush after completion to be safe (works better with buffered streams).
    Open source →
  10. 0.23.0 02 Jun 2024
    Release notes
    • Disable default features for rustls giving the user more flexibility.
    Open source →
  11. 0.22.0 01 Jun 2024
    Release notes
    • Make url optional.
    • Add a builder for convenient headers and subprotocols construction.
    • Update rustls dependency.
    Open source →
  12. 0.21.0 07 Dec 2023
    Release notes
    • Fix read-predominant auto pong responses not flushing when hitting WouldBlock errors.
    • Improve FrameHeader::format write correctness.
    • Update rustls to 0.22.
    • Update webpki-roots to 0.26.
    • Update rustls-native-certs to 0.7.
    • Update http to 1.0.0.
    Open source →
  13. 0.20.1 23 Sep 2023
    Release notes Open source →
  14. 0.20.0 22 Jul 2023
    Release notes
    • Remove many implicit flushing behaviours. In general reading and writing messages will no longer flush until calling flush. An exception is automatic responses (e.g. pongs) which will continue to be written and flushed when reading and writing. This allows writing a batch of messages and flushing once, improving performance.
    • Add WebSocket::read, write, send, flush. Deprecate read_message, write_message, write_pending.
    • Add FrameSocket::read, write, send, flush. Remove read_frame, write_frame, write_pending. Note: Previous use of write_frame may be replaced with send.
    • Add WebSocketContext::read, write, flush. Remove read_message, write_message, write_pending. Note: Previous use of write_message may be replaced with write + flush.
    • Remove send_queue, replaced with using the frame write buffer to achieve similar results.
      • Add WebSocketConfig::max_write_buffer_size. Deprecate max_send_queue.
      • Add Error::WriteBufferFull. Remove Error::SendQueueFull. Note: WriteBufferFull returns the message that could not be written as a Message::Frame.
    • Add ability to buffer multiple writes before writing to the underlying stream, controlled by WebSocketConfig::write_buffer_size (default 128 KiB). Improves batch message write performance.
    • Panic on receiving invalid WebSocketConfig.
    Open source →
  15. 0.19.0 12 Apr 2023
    Release notes
    • Update TLS dependencies.
    • Exchanging base64 for data-encoding.
    Open source →
  16. 0.18.0 28 Nov 2022
    Release notes
    • Make handshake dependencies optional with a new handshake feature (now a default one!).
    • Return HTTP error responses (their HTTP body) upon non 101 status codes.
    Open source →
  17. 0.17.3 13 Jul 2022
    Release notes
    • Respect the case-sentitivity of the "Origin" header to keep compatibility with the older servers that use case-sensitive comparison.
    Open source →
  18. 0.17.2 21 Feb 2022
    Release notes
    • Fix panic when invalid manually constructed http::Request is passed to tungstenite.
    • Downgrade the MSRV to 1.56 due to some other crates that rely on us not being quite ready for 1.58.
    Open source →
  19. 0.17.1 16 Feb 2022
    Release notes
    • Specify the minimum required Rust version.
    Open source →
  20. 0.17.0 14 Feb 2022
    Release notes
    • Update of dependencies (primarily sha1).
    • Add support of the fragmented messages (allow the user to send the frames without composing the full message).
    • Overhaul of the client's request generation process. Now the users are able to pass the constructed http::Request "as is" to tungstenite-rs, letting the library to check the correctness of the request and specifying their own headers (including its own key if necessary). No changes for those ones who used the client in a normal way by connecting using a URL/URI (most common use-case).
    Open source →
  21. 0.16.0 03 Nov 2021
    Release notes
    • Update of dependencies (primarily rustls, webpki-roots, rustls-native-certs).
    • When the close frame is received, the reply that is automatically sent to the initiator has the same code (so we just echo the frame back). Previously a new close frame was created (i.e. the close code / reason was always the same regardless of what code / reason specified by the initiator). Now it’s more symmetrical and arguably more intuitive behavior (see #246 for more context).
    • The internal ReadBuffer implementation uses heap instead of stack to store the buffer. This should solve issues with possible stack overflows in some scenarios (see #241 for more context).
    Open source →
  22. 0.15.0 12 Aug 2021
    Release notes
    • Allow selecting the method of loading root certificates if rustls is used as TLS implementation.
      • Two new feature flags rustls-tls-native-roots and rustls-tls-webpki-roots have been added that activate the respective method to load certificates.
      • The rustls-tls flag was removed to raise awareness of this change. Otherwise, compilation would have continue to work and potential errors (due to different or missing certificates) only occurred at runtime.
      • The new feature flags are additive. If both are enabled, both methods will be used to add certificates to the TLS configuration.
    • Allow specifying a connector (for more fine-grained configuration of the TLS).
    Open source →
  23. 0.14.0 09 Jul 2021
    Release notes
    • Use rustls-native-certs instead of webpki-root when rustls-tls feature is enabled.
    • Don't use native-tls as a default feature (see #202 for more details).
    • New fast and safe implementation of the reading buffer (replacement for the input_buffer).
    • Remove some errors from the Error enum that can't be triggered anymore with the new buffer implementation.
    Open source →
  24. 0.13.0 08 Feb 2021
    Release notes
    • Add CapacityError, UrlError, and ProtocolError types to represent the different types of capacity, URL, and protocol errors respectively.
    • Modify variants Error::Capacity, Error::Url, and Error::Protocol to hold the above errors types instead of string error messages.
    • Add handshake::derive_accept_key to facilitate external handshakes.
    • Add support for rustls as TLS backend. The previous tls feature flag is now removed in favor of native-tls and rustls-tls, which allows to pick the TLS backend. The error API surface had to be changed to support the new error types coming from rustls related crates.
    Open source →
  25. 0.12.0 08 Jan 2021
    Release notes
    • Add facilities to allow clients to follow HTTP 3XX redirects.
    • Allow accepting unmasked clients on the server side to be compatible with some legacy / invalid clients.
    • Update of dependencies and documentation fixes.
    Open source →
  26. 0.11.1 07 Aug 2020

    Nothing published for this version

  27. 0.11.0 12 Jun 2020

    Nothing published for this version

  28. 0.10.1 02 Feb 2020

    Nothing published for this version

  29. 0.10.0 31 Jan 2020

    Nothing published for this version

  30. 0.9.2 15 Nov 2019

    Nothing published for this version

  31. 0.9.1 08 Aug 2019

    Nothing published for this version

  32. 0.9.0 06 Aug 2019

    Nothing published for this version

  33. 0.8.1 17 May 2019

    Nothing published for this version

  34. 0.8.0 15 May 2019

    Nothing published for this version

  35. 0.7.0 07 May 2019

    Nothing published for this version

  36. 0.6.1 02 Nov 2018

    Nothing published for this version

  37. 0.6.0 18 Jul 2018

    Nothing published for this version

  38. 0.5.4 02 Jul 2018

    Nothing published for this version

  39. 0.5.3 15 Jan 2018

    Nothing published for this version

  40. 0.5.2 27 Dec 2017

    Nothing published for this version

  41. 0.5.1 12 Dec 2017

    Nothing published for this version

  42. 0.5.0 09 Oct 2017

    Nothing published for this version

  43. 0.4.0 07 Aug 2017

    Nothing published for this version

  44. 0.2.4 23 May 2017

    Nothing published for this version

  45. 0.2.3 19 May 2017

    Nothing published for this version

  46. 0.2.2 11 Apr 2017

    Nothing published for this version

  47. 0.2.1 05 Apr 2017

    Nothing published for this version

  48. 0.2.0 04 Apr 2017

    Nothing published for this version

  49. 0.1.1 22 Mar 2017

    Nothing published for this version

  50. 0.1.0 17 Mar 2017

    Nothing published for this version

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive