A simple, reliable, and fast HTTP client for Erlang with support for HTTP/1.1, HTTP/2, and experimental HTTP/3.
Hackney is a robust HTTP client library for the Erlang programming language, designed to handle modern web communication needs efficiently. It provides a comprehensive set of features for making HTTP requests, managing connections, and supporting advanced protocols like HTTP/2 and WebSocket, making it a foundational tool for Erlang and Elixir applications that interact with web services.
Erlang and Elixir developers building applications that require reliable, high-performance HTTP communication with web services, APIs, or real-time WebSocket connections.
Developers choose Hackney for its simplicity, reliability, and performance, featuring clean process isolation per connection, automatic cleanup, and built-in support for modern protocols like HTTP/2, HTTP/3, and WebSocket without external dependencies.
simple HTTP client in Erlang
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Supports HTTP/2 with automatic ALPN negotiation and experimental HTTP/3 via pure Erlang, enabling advanced features like multiplexing and header compression without external dependencies.
Uses a process-per-connection gen_statem model with configurable pooling, ensuring clean isolation and automatic cleanup for robustness in high-concurrency applications.
Allows streaming of request/response bodies for large file handling and provides async responses via messages, enabling concurrent processing without memory bottlenecks.
Includes built-in WebSocket support, automatic decompression, SSL by default with Mozilla CA bundle, and IPv6 prioritization via Happy Eyeballs, covering most HTTP client needs.
HTTP/3 support is opt-in and labeled experimental, relying on QUIC over UDP which may be blocked in some networks, making it unreliable for production use without thorough testing.
Requires Erlang/OTP 27+ and deep familiarity with BEAM concurrency models, posing a steep learning curve for developers outside the Erlang/Elixir ecosystem.
Advanced features like custom connection pools, SSL options, and protocol forcing require manual configuration, which can be overhead for simple HTTP tasks compared to more opinionated clients.