Comparing
The next generation HTTP client
Reactive programming for JavaScript — compose async event streams with a rich set of operators for transforming, filtering, and combining data over time.
| Metric | httpx | rxjs |
|---|---|---|
| Ecosystem | Python | npm |
| Difficulty | Intermediate ✓ | Advanced |
| Weekly downloads | 119.1M↑ | 45.0M |
| Latest version | v0.28.1 | v7.8.2 |
| Recipes | 2↑ | 1 |
httpx only
Shared
rxjs only
Use httpx when building FastAPI or asyncio applications that call external APIs. Also reach for it when you need HTTP/2 support, a requests-compatible API with async support, or a single library that works in both sync and async contexts.
Angular apps (where it's built-in), complex event handling (drag-and-drop, real-time updates), WebSocket streams, coordinating multiple async operations, auto-completing search inputs with cancellation.
For simple synchronous scripts where you already use requests, there's little reason to switch — requests has a larger ecosystem of auth libraries and middleware. For high-volume async scraping at scale, aiohttp's lower-level control may be more efficient.
Simple one-off async operations (use async/await), React apps where hooks + SWR/react-query are more idiomatic, or when the team isn't familiar with reactive programming (steep learning curve).
httpx
rxjs