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 atopic
field. - 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
useSyncState
hook 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
$rules
object, 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)
.