Skip to content

talesbarreto/dart_graphql_query_compress

Repository files navigation

flutter-ci

This package eliminates unnecessary characters from a GraphQL query, saving several bytes on requests.

final compressedQuery = compressGraphqlQuery(query);

Using it with gql_dio_link, gql_http_link or graphql

GQL will serialize your query in a human-readable format after parse it to DocumentNodes. Therefore, we can't simple compress it before using the GQL parser.

To overcome this, we need to replace GQL RequestSerializer by RequestSerializerWithCompressor

return GraphQLClient(
  cache: GraphQLCache(store: null),
  link: HttpLink(
    _apiUrl,
    serializer: const RequestSerializerWithCompressor(),
  ),
);

The same applies to DioLink:

final link = DioLink(
  _apiUrl,
  client: Dio(),
  useGETForQueries: true,
  serializer: const RequestSerializerWithCompressor(),
);