QUIC and HTTP/3 Support now in Firefox Nightly and Beta

tl;dr: Support for QUIC and HTTP/3 is now enabled by default in Firefox Nightly and Firefox Beta. We are planning to start rollout on the release in Firefox Stable Release 88. HTTP/3 will be available by default by the end of May.

What is HTTP/3?

HTTP/3 is a new version of HTTP (the protocol that powers the Web) that is based on QUIC. HTTP/3 has three main performance improvements over HTTP/2:

  • Because it is based on UDP it takes less time to connect;
  • It does not have head of line blocking, where delays in delivering packets cause an entire connection to be delayed; and
  • It is better able to detect and repair packet loss.

QUIC also provides connection migration and other features that should improve performance and reliability. For more on QUIC, see this excellent blog post from Cloudflare.

How to use it?

Firefox Nightly and Firefox Beta will automatically try to use HTTP/3 if offered by the Web server (for instance, Google or Facebook). Web servers can indicate support by using the Alt-Svc response header or by advertising HTTP/3 support with a HTTPS DNS record. Both the client and server must support the same QUIC and HTTP/3 draft version to connect with each other. For example, Firefox currently supports drafts 27 to 32 of the specification, so the server must report support of one of these versions (e.g., “h3-32”) in Alt-Svc or HTTPS record for Firefox to try to use QUIC and HTTP/3 with that server. When visiting such a website, viewing the network request information in Dev Tools should show the Alt-Svc header, and also indicate that HTTP/3 was used.

If you encounter issues with these or other sites, please file a bug in Bugzilla.

About Dragana Damjanovic

Dragana is the networking module owner of Firefox. She is responsible for the Firefox’s implementation of HTTP, HTTP/3, HTTP/2, WebSockets, DNS, cache, etc.

More articles by Dragana Damjanovic…


2 comments

  1. Olaf

    Hi Dragana,

    this is great news, thanks for sharing!

    I’d be interested in the implementation details, especially what http3 implementation was used.

    Also, I was wondering if and when this was coming to Android. I imagine it could be interesting for mobile users.

    Kind regards,
    Olaf

    April 16th, 2021 at 23:06

    Reply

    1. Dragana Damjanovic

      Hi Olaf,

      We are using our own implementation of HTTP3 called neqo. It is written in Rust. This is the repo:
      https://github.com/mozilla/neqo

      HTTP3 will be available on Android in release 89. It is already enabled on Nightly 89 and also in beta 89 (which will be release today)

      Dragana

      April 20th, 2021 at 05:28

      Reply

Post Your Comment