Skip to content

HTTP/3 Support #1818

Open
Open

Description

@uvd

Current status

HTTP/3 support is on the roadmap. There is a working h3 crate, and reqwest has unstable HTTP/3 support.

Much work is still needed, and volunteers are welcome.

Besides the issue tracker (which should store durable decisions and their context), there's this h3 Discord channel to coordinate work.

Here's some of the main steps:

  • Harden the h3 crate itself, such as fixing any straggling interop issues,
    and filling out the spec conformance tags we use for accountability.
  • Proposal for (initially unstable) hyper::rt::quic integration, allowing
    people to bring their own QUIC.
  • Write the hyper::proto::http3 glue that translates hyper's connection
    patterns with the h3 crate.

Activity

  1. added
    B-rfcBlocked: More comments would be useful in determine next steps.
    E-hardEffort: hard. Likely requires a deeper understanding of how hyper's internals work.
    C-featureCategory: feature. This is adding a new feature.
    on Jun 11, 2019
  2. shenshouer commented on Apr 26, 2020

    @shenshouer

    Any plan for this?

  3. quentusrex commented on May 2, 2020

    @quentusrex

    Since I followed the rabbit hole from Tokio and Tonic to here, the latest work appears to be over here currently:
    quinn-rs/quinn#734

    Any best ways to support the latest efforts on http/3 support?

  4. djc commented on May 3, 2020

    @djc
    Contributor

    I have a branch going on here: https://github.com/djc/hyper/tree/quinn-h3. This adds (completely untested) support for HTTP/3 to the hyper server, but doesn't yet add any API to set it up. I have some ideas on how to do that. That branch also more or less depends on #2182 and #2188 (which are currently included in that branch) and on further tweaks to quinn-rs/quinn#734 that I'll have to rebase on the final version of that PR once it's ready.

  5. quentusrex commented on Jul 1, 2020

    @quentusrex

    @djc Looks like all of the tickets but #2182 were merged. Does this mean that https://github.com/djc/hyper/tree/quinn-h3 is getting close?

  6. djc commented on Jul 1, 2020

    @djc
    Contributor

    I've been discussing it with @seanmonstar, as far as I can tell he's still figuring out how he wants to go about it.

  7. seanmonstar commented on Jul 29, 2020

    @seanmonstar
    Member

    We've put together a proposal here: hyperium/h3#1

  8. quentusrex commented on Oct 4, 2020

    @quentusrex

    With the proposal merged, what is the best way to see current status towards first MVP of the functionality? and with status, ways to support the effort?

  9. djc commented on Oct 4, 2020

    @djc
    Contributor

    To the best of my knowledge, work is ongoing in the h3 repo. There is a h3 channel in the Tokio Discord which you might join, as well.

    (If by support the effort you mean financially, I might be available to accelerate the efforts on a consulting basis. If that is of interest, shoot me an email.)

  10. seanmonstar commented on Oct 7, 2020

    @seanmonstar
    Member

    Good point, I'll see about setting up a milestone with all the issues needed to get the design working. If by support the effort you mean to contribute code, as mentioned, there's an h3 Discord channel to discuss next features, and I'll get a milestone going. There is the general issue tracker, which already has some work split up.

  11. quentusrex commented on Dec 24, 2020

    @quentusrex

    Congrats on the recent h3 progress(client side request fetching from cloudflare)!

    Given the recent activity in h3, and the closing of several of the functionality related issues, what would the hyper next steps look like? I assume there'd be some kind of an h3 release(which would include the minimal public api docs, etc).

    Any easier coding work in view?

  12. seanmonstar commented on Dec 31, 2020

    @seanmonstar
    Member

    Yes, an h3 0.1 release would be a necessary step. I've add a few more issues, labels, and a milestone, that should have some "easier" and some more involved work to get there.

    Another step to figure out is how to actually provide the support in the hyper crate. That's something I haven't thought too much about. I think some of the requirements though, considering the goal of stabilizing hyper into a 1.0 release, would require:

    • Not exposing the h3 library directly, so we can iterate on h3 without it being breaking changes for hyper.
    • Making it optional, like http1 and http2 are.
    • Probably not bundle any particular TLS library with hyper directly.

    We can try to figure out both of these things in parallel, so thoughts are welcome!

  13. quentusrex commented on Mar 2, 2022

    @quentusrex

    Looks like the only issue still attached to the v0.1 milestone is docs related. Is that accurate? https://github.com/hyperium/h3/milestone/1

  14. 17 remaining items

  15. iMonZ commented on Oct 21, 2023

    @iMonZ
  16. ONLYA commented on Dec 5, 2023

    @ONLYA
  17. agavrel commented on Jan 24, 2024

    @agavrel
  18. dengyunsheng250 commented on Jan 25, 2025

    @dengyunsheng250
  19. lmtr0 commented on Jan 28, 2025

    @lmtr0
  20. dahankzter commented on Feb 6, 2025

    @dahankzter

    But surely the protocol has stabilized some more now. Afaict both Nginx and HAProxy supports it now. Is it still the case that it moves too fast to make it worth while to get into Hyper?

  21. seanmonstar commented on Feb 6, 2025

    @seanmonstar
    Member

    That's not at all the blocker. Work has been done in the h3 repo, and it's been tested in reqwest in an unstable feature, (explained in earlier comments). I'll update the top comment with the current status to make it easier to find, but there's no need to leave comments asking if this has progressed, it just pings a bunch of people who are watching.

  22. eveeifyeve commented on Aug 3, 2025

    @eveeifyeve

    That's not at all the blocker. Work has been done in the h3 repo, and it's been tested in reqwest in an unstable feature, (explained in earlier comments). I'll update the top comment with the current status to make it easier to find, but there's no need to leave comments asking if this has progressed, it just pings a bunch of people who are watching.

    What about looking into an unstable/experimental feature for hyper? Then people can use h3 in like axum or something as a test then when it becomes more stable introduce it slowly.

    Cause I am looking into this more to add support for http3/quic in hyper as experimental.

  23. seanmonstar commented on Aug 4, 2025

    @seanmonstar
    Member

    Yea, I did put in the top comment that one of the next steps is to adding unstable support to hyper. I worked on this a little bit a couple weeks ago, and I've now gone ahead and opened a couple WIP pull requests, in case it helps others get started. See #3924 and #3925.

  24. XChikuX commented on Apr 10, 2026

    @XChikuX
  25. added
    B-rfcBlocked: More comments would be useful in determine next steps.
    and removed
    B-rfcBlocked: More comments would be useful in determine next steps.
    on Aug 24, 2026
  26. added
    B-rfcBlocked: More comments would be useful in determine next steps.
    and removed
    B-rfcBlocked: More comments would be useful in determine next steps.
    on Sep 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    B-rfcBlocked: More comments would be useful in determine next steps.C-featureCategory: feature. This is adding a new feature.E-hardEffort: hard. Likely requires a deeper understanding of how hyper's internals work.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions