local_first 0.8.0
local_first: ^0.8.0 copied to clipboard
Local-first solution 100% self hosted, for offline and live data sync between multiple devices with support for Hive, SQLite, websockets, etc.
0.8.0 #
- Added backup & restore system with
BackupService,BackupData,BackupStorageProviderinterface, and AES-256 + gzip encryption pipeline. - Added
local_first_firebase_backup,local_first_gdrive_backup, andlocal_first_icloud_backupcompanion packages. - Added configurable logger system (
LocalFirstLogger) for all plugins with adjustable log levels. - Added repository filtering to sync strategies via
onBuildSyncFiltercallback. - Fixed
DateTimeserialization to ISO 8601 string inLocalFirstEvent.toJson(). - Fixed orphaned events being deserialized in
getAllEvents, preventing runtime errors. - Fixed server event field name alignment with client convention.
⚠️ Breaking change — event metadata field rename #
All internal event metadata keys now use a _ prefix to prevent collision with your entity fields (e.g. a user.created_at field no longer conflicts with the event's own _created_at).
If you store or transmit raw event maps (e.g. via a custom sync backend or direct storage queries), update your field references:
| Before | After |
|---|---|
eventId |
_event_id |
repository |
_repository |
operation |
_operation |
createdAt |
_created_at |
data |
_data |
dataId |
_data_id |
syncStatus |
_sync_status |
lastEventId |
_last_event_id |
The Dart constants (LocalFirstEvent.kEventId, kSyncCreatedAt, etc.) remain unchanged — only the string values they hold have changed. If you access event fields exclusively through these constants, no code changes are needed. A one-time database migration may be required if you have existing persisted events.
0.7.2 #
- Updated README with absolute GitHub URLs for proper rendering on pub.dev
- Added sync strategy packages to Installation section (periodic and websocket)
- Reorganized Running examples section with storage adapters and sync strategies categories
- Updated package versions in Installation documentation
0.7.1 #
- Added chat app example with real-time messaging using dual sync strategy (WebSocket + Periodic)
- Enhanced documentation with data flow diagram and fixed pub.dev package links
- Improved code examples in README with corrected syntax and API usage
- Tuned counter app sync intervals for better performance (60s heartbeat, 30s periodic)
0.7.0 #
- Added comprehensive counter app example demonstrating real-time WebSocket synchronization
- Improved test coverage and reliability across the framework
- Enhanced documentation and code examples
0.6.0 #
- Added
local_first_shared_preferencesadapter with namespaced config storage and example app. - Unified example apps across adapters and defaulted core example to in-memory storage.
- Expanded documentation with supported config types tables, example run instructions, and contribution links.
- Refined config storage APIs (optional delegate, namespace propagation) and achieved full test coverage.
- Simplified remote pull API to make per-repository backend integrations easier.
0.5.0 #
- Split storage adapters into separate publishable packages:
local_first_hive_storagefor Hive-based storagelocal_first_sqlite_storagefor SQLite-based storage
- Core package no longer bundles adapter implementations.
- Documentation and tooling updated for addon packages.
0.4.0 #
- Add SQLite storage adapter (
SqliteLocalFirstStorage) with schema/index support and query filtering - Document how to choose between Hive and SQLite storage backends
- Expand example tooling with launch configs and relational sample polish
0.3.0 #
- Switch models to the
LocalFirstModelmixin for direct field access without wrappers - Expand automated test suite to achieve full 100% test coverage of core flows and APIs
- Refresh README roadmap/goals to reflect documentation and testing updates
0.2.0 #
- Replace singleton
LocalFirstwith injectableLocalFirstClient - Standardize storage interface as
LocalFirstStoragewith Hive implementation - Repositories now carry serialization/conflict logic directly
- Example app updated to new client/repository APIs and string-based metadata
0.0.1 #
- Initial scaffolding