Ferry is a highly productive, full-featured, extensible GraphQL Client for Flutter & Dart. Get started with ferry now.
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.
Ferry includes all the features you'd expect in a GraphQL client, including:
- Normalized Optimistic Cache: keep data in sync with cache normalization and update your UI instantly with optimistic data.
- Multiple Data Stores: extensible Store interface for data persistence, including built-in MemoryStore and HiveStore (for offline persistence).
- Cache Eviction & Garbage Collection: selectively remove data from the cache or use the built-in garbage collection to remove stale data automatically
- Refetch & Pagination: easily update responses with new data or combine multiple responses, allowing for seamless pagination.
- Flutter Widget: use the included Operation Widget in your Flutter app.
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.