Compatible with GraphQL October 2021 Edition. View Argo on GitHub.
Argo is a compact and compressible binary serialization format for GraphQL. It aims to:
- Minimize end-to-end latency of GraphQL responses
- Including serialization, transport, and deserialization
- Minimize bytes on the wire, with and without external compression
- Be easy to implement
Argo:
- Takes the place of JSON in GraphQL responses
- Usually meets the needs of mobile clients (and server clients) better than web clients
- Works best with code generation, but also works well with interpretation
- Does not currently support GraphQL Input types
Compressed Argo responses are typically 5%-15% smaller than corresponding compressed JSON responses.
Uncompressed Argo responses are typically 50-80% smaller than corresponding JSON responses.
Argo has a formal specification:
- Version 1.2.x (latest)
- Version 1.1.x
- Version 1.0.x
argo-js
is a reference implementation of Argo in TypeScript,
and can be found in this repository.
It is distributed on NPM under the name argo-graphql.
These open-source implementations are maintained separately:
- Erlang: erlang-argo from WhatsApp
Argo was created and authored by Mike Solomon.
A big Thank You to these fine folks who have contributed on GitHub!