Search packages, repositories and app categories

Package detailsv0.16.1+2

ferry

Ferry is a simple, powerful GraphQL Client for Flutter and Dart.

AndroidiOSWebmacOSWindowsLinux
30-day downloads
2.9K
Likes
369
Pub points
160

Install package

flutter pub add ferry

Package Overview

Package selection guidance compiled from public package information, community data, and project usage.

Ferry is a lightweight and efficient GraphQL client designed for Flutter and Dart applications. It provides a clean, type-safe interface for querying and mutating data using GraphQL, with built-in support for caching, state management, and real-time updates via subscriptions. Ferry integrates seamlessly into Flutter projects and leverages Dart's strong typing to ensure correctness at compile time. It is ideal for developers seeking a straightforward yet powerful solution for GraphQL interactions across multiple platforms.

Use cases

  • Fetching real-time data from GraphQL APIs
  • Managing application state with GraphQL mutations
  • Implementing offline-first features with caching
  • Building scalable Flutter apps with GraphQL
  • Integrating with GraphQL backends in web and mobile apps

Key features

  • Type-safe GraphQL queries and mutations
  • Built-in caching and state management
  • Support for subscriptions and real-time updates
  • Minimal boilerplate with code generation
  • Cross-platform compatibility (Android, iOS, Web, macOS, Windows, Linux)

Suitable for

  • Flutter developers using GraphQL
  • Apps requiring real-time data synchronization
  • Projects prioritizing type safety and developer experience
  • Teams building scalable, maintainable UIs with GraphQL
  • Developers seeking a lightweight alternative to larger GraphQL clients

Considerations

  • Requires code generation for optimal use
  • Dependent on GraphQL schema definition
  • Learning curve for those new to GraphQL
  • Limited documentation compared to mature alternatives
  • Best suited for projects already committed to GraphQL architecture

Original README

Original README snapshot from the linked source repository. Visit the repository for the latest content.

A simple, powerful GraphQL Client for Flutter and Dart

MIT License PRs Welcome Watch on GitHub Star on GitHub Watch on GitHub Discord

Documentation 📖

Features

  1. ✅ Fully Typed: work faster and safer with compile time checks and IDE autocomplete, including fully typed Cache reads and writes.
  2. 🔄 Built-In Code Generators: automatically generated immutable data classes for all your GraphQL Operations and Fragments, based on your schema.
  3. 🌐 Customizable Network Interface: highly customizable network interface using gql_link, allowing you to compose and extend Links.
  4. ✨ Normalized Optimistic Cache: keep data in sync with cache normalization and update your UI instantly with optimistic data.
  5. 💾 Multiple Data Stores: extensible Store interface with built-in MemoryStore and HiveStore (which uses hive for offline persistence).
  6. 📄 Refetch & Pagination: easily update responses with new data or combine multiple responses, allowing for seamless pagination.
  7. 📱 Flutter Widgets: Widgets for Queries, Mutations, and Subscriptions, available out of the box.
  8. 🧈 Smooth: Run queries in a separate Isolate to free up resources on the UI thread

Packages

This repo is a monorepo for ferry and related packages.

Pub Package Description
version package:ferry Stream-based GraphQL Client
version package:ferry_cache Normalized, strongly typed, optimistic cache
version package:ferry_exec Strongly typed GraphQL execution interface
version package:ferry_flutter Flutter Widgets for GraphQL Operations
version package:ferry_generator Dart Type Generator for GraphQL Operations
version package:ferry_store Data Persistence for ferry's cache
version package:ferry_hive_store Hive implementation of ferry_store
version package:normalize Normalization / denormalization of GraphQL data

Categories

Dependencies

Dependency list 11 items

Source repository

Projects using this package