This document tracks where FlutterSync is going. It is updated as priorities shift. Items marked Help wanted are explicitly open for community contribution.
The single, blunt summary: we have a well-architected codebase that has never met a real backend in production. Every milestone below is about turning that into a credible, validated package.
The goal of the 0.1 line is to validate every claim made by the architecture against reality.
- Help wanted —
SupabaseSyncAdapterend-to-end: stand up a real Supabase project, run example app with RLS, push 100+ records, observe pull + realtime, document caveats. - Help wanted —
FirebaseSyncAdapterend-to-end with Firestore. - Help wanted —
RestSyncAdapteragainst a real API (any tutorial backend, e.g. Strapi / Pocketbase / Hasura / custom Express). - Help wanted —
GraphQLSyncAdapteragainst a real GraphQL endpoint with subscriptions. - Help wanted —
GrpcSyncAdapterend-to-end with a reference gRPC server. - Ship a reference Supabase schema and SQL migration as part of
doc/supabase_quickstart.md.
- Help wanted — verify Android
WorkManagersync on a real device; document the manifest entries and any quirks ofvm:entry-point. - Help wanted — verify iOS
BGTaskSchedulersync on a real device; document the Info.plist entries and the simulator caveats. - Help wanted — write the
flutter_sync_sw.jsservice worker that the web bridge expects, with PWA registration docs. - Verify desktop
Timer.periodicdriver on macOS / Windows / Linux app builds.
- Wire
DriftSyncStoreintoFlutterSync.configureas the default (today's default is in-memory) and verify it survives app restarts. - Wire a
DriftOutboxQueueso the outbox is durable across kills/reboots (today'sInMemoryOutboxQueueloses queued writes). - Verify
HiveSyncStoreparity withDriftSyncStoreon a real Flutter app.
- Help wanted — widen CRDT property tests from 20 seeds to 10k seeds across all six CRDT types; surface every failing seed.
- Add multi-replica simulation tests (4+ replicas, randomized partitions, prove convergence).
- Add stress tests: 10k records in store, 1k outbox entries, 100k HLC ticks.
- Hit the published coverage targets (80% overall, 100% on HLC/CRDTs, 95% on core, 100% on conflict resolvers).
- Set up Codecov or equivalent in CI.
- Add HLC tab (current value, node id, last 50 emitted timestamps).
- Add Network tab (current connectivity, throughput, latency history chart).
- Ship the v0.1 DevTools screenshots in
doc/devtools.md.
- Help wanted — "Building a Todo app with FlutterSync + Supabase" (full walkthrough, ~30 min reader-time).
- Help wanted — "Building a Notes app with FlutterSync + Firestore".
- Help wanted — "Migrating from PowerSync to FlutterSync" — even if the answer is "don't yet, here's why", the comparison is valuable.
- DartDoc coverage: every public symbol has a complete first-sentence summary and at least one usage example for non-trivial APIs.
- First publication to pub.dev (
dart pub publish) only after at least one adapter has been validated end-to-end. - Pana score target: ≥ 130.
- CI badges in the README reflect real CI runs.
- Set up Dependabot or Renovate for dependency upgrades.
Once 0.1.x is validated against real backends, focus shifts to differentiators.
- Selective sync at the row level — per-collection filters that the server enforces.
- Multi-user on one device — distinct stores and key vaults per logged-in user, switchable at runtime.
- Bandwidth-adaptive batch sizing across slow networks — extend
BandwidthMonitorwith calibration probes and a regression model. - CRDT pack: more types —
OR-Set,Map-of-CRDTs,RGAfor richer collaborative text. - Schema migration with data backfill helpers — typed builder DSL beyond raw SQL.
- DevTools standalone web app — open the engine state in a browser tab via WebSocket, like Flutter DevTools itself.
- Encrypted attachments — separate from
payload, streamed to/from object storage.
1.0 is reserved for the day FlutterSync has:
- At least three independent production deployments documented as case studies.
- At least one backend adapter validated against a real server by someone other than the maintainer.
- A third-party security review of the encryption stack.
- Benchmarks comparing it to PowerSync and ElectricSQL on a published reproducible workload.
- A stable public API with a documented deprecation policy.
We do not bump to 1.0 for vanity. The version means something.
To stay focused, FlutterSync explicitly does not plan to be:
- A hosted cloud service. It is a client-side engine; the backend is yours to bring.
- An ORM.
SyncStoreis intentionally low-level. - A code generator. The package is hand-written Dart with no
build_runnerrequirement (Drift's optional codegen is consumer-owned). - A replacement for backend-specific SDKs (
supabase_flutter,cloud_firestore, etc.). Adapters wrap them; they do not replace them.
- Open a Discussion for design conversations.
- Open an Issue for a concrete bug or feature request.
- Open a PR for a "Help wanted" item — they are explicitly up for grabs.
Priorities will shift based on what real users and contributors actually need. This document is alive.