Ferry is a highly productive, full-featured, extensible GraphQL Client for Flutter & Dart. Get started with ferry now.

๐Ÿš€ Productive

Ferry is fully typed, allowing you to work faster and safer with compile time checks and IDE autocomplete, including fully typed Cache reads and writes.

Ferry's built-in code generator creates immutable data classes for all your GraphQL Operations and Fragments based on your GraphQL schema.

Use the client with any Link from the gql_link ecosystem.

๐Ÿ’ฏ Full-Featured

Ferry includes all the features you'd expect in a GraphQL client, including:

  1. Normalized Optimistic Cache: keep data in sync with cache normalization and update your UI instantly with optimistic data.
  2. Multiple Data Stores: extensible Store interface for data persistence, including built-in MemoryStore and HiveStore (for offline persistence).
  3. Cache Eviction & Garbage Collection: selectively remove data from the cache or use the built-in garbage collection to remove stale data automatically
  4. Refetch & Pagination: easily update responses with new data or combine multiple responses, allowing for seamless pagination.
  5. Flutter Widget: use the included Operation Widget in your Flutter app.

๐Ÿ’ช Extensible

Ferry's core features are implemented as composable TypedLinks, a typed version of the gql_link API. In fact, the Ferry Client itself is a TypedLink, created by composing several other core links. This architecture makes extending or customizing the client extremely easy.