Your application may need to interact with data from a variety of sources: a REST server, a WebSocket stream, an IndexedDB backup, an in-memory store, etc.
Orbit can coordinate data flows across any number of sources through a standard set of interfaces using normalized data structures.
Data correctness is vital to user trust, so you need a deterministic approach to manage it.
Orbit uses a Git-like approach to track changes across data sources. Changes are expressed as "transforms", which are similar to Git commits. Logs provide a per-source history. Like Git repos, sources can be diffed, forked, merged, and reset.
Not all data should be treated uniformly. Some data is transient, while other data can persist for the life of your app. Some changes should be made pessimistically and be confirmed by a remote server. Other changes can be made optimistically, cached locally, and pushed eventually.
Orbit provides coordination strategies which can be customized to the needs of your application.
In an increasingly mobile world, it's ideal to keep applications available even when the Internet is not.
Orbit provides the tools needed to build robust offline experiences. Backup your application's state, including data caches, logs, and queues, to browser storage. Query and change local data when offline, while queueing changes for synchronization when online again.