Skip to content

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 a topic 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() and db.id() methods for creating database records with autogenerated primary keys.
  • Add db.merge() and db.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) to action(...args).