A stream-based, strongly typed GraphQL client for Dart and Flutter with built-in code generation and normalized caching.
Ferry is a stream-based, strongly typed GraphQL client designed for Dart and Flutter applications. It provides full type safety through automatic code generation and includes a normalized, optimistic cache for efficient data management. The client solves the problem of building robust, maintainable applications that interact with GraphQL APIs by offering a reactive and extensible architecture.
Dart and Flutter developers building applications that consume GraphQL APIs, particularly those who prioritize type safety, offline capabilities, and a reactive programming model.
Developers choose Ferry for its comprehensive type safety, built-in code generation, and powerful caching system, which together reduce runtime errors and improve development efficiency. Its modular design and Flutter-specific widgets make it a versatile choice for both simple and complex GraphQL integrations.
Stream-based strongly typed GraphQL client for Dart
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Provides compile-time checks and IDE autocomplete for all GraphQL operations, including cache reads and writes, reducing runtime errors as emphasized in the README.
Generates immutable data classes from your GraphQL schema using built-in generators, ensuring type consistency and saving development time.
Offers cache normalization and optimistic updates, enabling data consistency and instant UI feedback, with support for offline persistence via HiveStore.
Includes out-of-the-box widgets for queries, mutations, and subscriptions in the ferry_flutter package, simplifying reactive UI development.
Requires configuring multiple packages, code generators, and build runners, which can be time-consuming and daunting for new users.
Compared to established GraphQL clients like Apollo, Ferry has a smaller community, fewer third-party plugins, and less extensive documentation resources.
Frequent GraphQL schema changes necessitate re-running code generators, which can slow down development iteration and introduce workflow friction.