/argo

Argo is a compact and compressible binary serialization format for GraphQL

Primary LanguageHTML

⛵ Argo

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.

Specification

Argo has a formal specification:

Reference implementation

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.

Authors and contributors

Argo was created and authored by Mike Solomon.