Skip to content

Why we forked HTTPX

HTTPXYZ is a fork of HTTPX, a popular HTTP client library for Python. This page explains why the fork was created and what we intend to do with it.

What happened

HTTPX has had no release after November 2024, while several bugs affecting real-world usage remained unresolved. One of us (Michiel) had contributed a fix for a broken zstd content decoding implementation. The fix was merged but never released. Repeated requests for a patch release from different people including a personal email to the author went unanswered until the possibility of a fork was raised.

Beyond the release drought, several other things gave us pause:

  • Issues and discussions were hidden. The GitHub repository closed issues and turned off discussions, making it harder both to contribute and to find context for existing bugs; many links in code and documentation now lead nowhere.
  • A 1.0 rewrite has been promised for years. A 1.0 release has been discussed since at least 2020. A draft patch release for 0.28.2 sat open for over a year and is not released at this point. In a discussion from October 2024, Simon Willison summarised the concerns well.
  • Major downstream packages added guards against 1.0. Both openai and anthropic pinned httpx < 1.0 in their dependencies.
  • Breaking changes appeared in minor releases. The author justified this with "The httpx package is not yet at a 1.0 SEMVER release" (ref), but given the scale of adoption, more stability seemed warranted.

Our intentions

We mean no harm to the original author or contributors. HTTPX is excellent work, and we have real respect for everyone involved. Our preferred outcome would be a maintained HTTPX with regular releases; no fork needed. We genuinely hope the upstream "httpx next" project sees the light of day.

Our goal for this fork is stability: bug fixes, no breaking API changes, no ambitious rewrites. The motto is: move a little faster and not break things.

Michiel's co-maintainer Sander Wegter helps spread the load so this does not become a one-person project.

Frequently asked questions

Should I migrate now?

Not necessarily. If everything works for you today, there is no urgent reason to switch. The point of the fork is that a stable, maintained path exists if you need it.

That said, we are fixing actual issues, see our Changelog

If you are looking for alternatives beyond httpxyz, consider niquests, a fork of requests with proper HTTP/2, HTTP/3, and async support. Its API is close to requests, which itself was an inspiration for the httpx API.

What about plugins and third-party libraries?

Most third-party libraries that depend on httpx work transparently with httpxyz. When you import httpxyz it registers itself in sys.modules under the httpx name, so libraries that do import httpx or check isinstance(obj, httpx.Response) will pick up httpxyz automatically.

See the HTTPX Compatibility page for details and caveats.

Will you burn out too?

Possibly! But HTTPX had no release for well over a year — even a modest release cadence is a big improvement. Having two maintainers helps. And the scope is deliberately narrow: bug fixes only, no feature work (for now ;-)).

Why Codeberg and not GitHub?

The tech community has become heavily dependent on a single platform for open source hosting. We think that concentration carries real risk. Codeberg is a non-profit, community-driven alternative built on Forgejo, and we want to encourage a more distributed ecosystem.