Roadmap
This page lists the upcoming priorities that we're working on right now. For past release notes, please see Github.
Roadmap
0.16.0 (2026-07-08)
This release implments a new topic format, so multiple contracts can be used in a single application (for partial replication, separated "rooms", etc.)
- Contracts initialized with
constructor()args will now have a unique topic based on the hash of the arguments. - Class contracts now take a
static topic = "..."parameter, and model contracts now take atopicfield. - For class contracts, the full libp2p topic used for applications is now
example.com.Object, optionally followed by the hash of the snapshot, code, and/or constructor arguments, e.g.example.com.Object:e8ae8ec9.... - Enabled experimental support for browser-to-browser libp2p. To connect to a WebRTC mesh, call
.startLibp2p()on a Canvas instance in the browser.
0.15.1 (2025-06-05)
- Allow class contracts to be initialized by calling
async initialize(topic: string)on the contract directly. The first argument is passed to the contract constructor. - Add sync status to apps.
- Add
useSyncStatehook for showing sync status on apps.
ts
export type ClientSyncStatus = "offline" | "starting" | "inProgress" | "complete" | "error"0.15 (2025-05-22)
This release implements two new syntaxes for contracts: class contracts and model-only contracts.
- Add an API for defining applications as ES6 classes.
- Add an API for defining application contracts/databases without actions, where permissions are defined in a
$rulesobject, similar to Firebase permissions. - Add
db.create()anddb.id()methods for creating database records with autogenerated primary keys. - Add
db.merge()anddb.update()methods for partial updates. These are only available inside transactions at this time.
0.14 (2025-04-18)
This releases includes significant changes to the main application API around how actions are defined. This is the first version where the main application APIs can be considered stable.
- Add Farcaster login support, inside frames using miniapp login, and outside frames using SIWF.
- Add basic login components, including a sign in/sign out React button.
- Add transactions, using the
db.transaction()method. - Reworked APIs like
db.set()from scratch following the addition of transactions. - Changed action API syntax from
action(db, ...args)toaction(...args).