Skip to content
renkudocs

Keep making.
Even without a connection.

A small task board with a complete local database. Edits and totals update together, survive a reload, and sync when you reconnect.

Your task board

Opening local storage
0TO DO
0MINUTES LEFT
0WAITING TO SYNC

Your next idea starts here. Add a task, then try disconnecting.

Edits save locally first. Each task starts with 15 minutes.

Two replicas. One shared board.

These panels have separate local databases. Wait until both show your tasks, then pause sync in each. In Device A, add five minutes to a task. In Device B, complete that same task. Resume Device A, then Device B. The second edit is retained for you to review; apply it again against the latest task if that is still what you want.

Device A

Opening local storage
0TO DO
0MINUTES LEFT
0WAITING TO SYNC

Your next idea starts here. Add a task, then try disconnecting.

Edits save locally first. Each task starts with 15 minutes.

Device B

Opening local storage
0TO DO
0MINUTES LEFT
0WAITING TO SYNC

Your next idea starts here. Add a task, then try disconnecting.

Edits save locally first. Each task starts with 15 minutes.

The default policy checks whole-row revisions. Even changes to different fields can conflict. Your app owns invariants and the decision to retry. One batch’s rows, queue state and materialized totals publish together.

Built with the same APIs you use.

The browser uses SQLite in OPFS, a durable outbox and SQL materialized views. A dedicated worker owns each replica; other tabs forward operations to it. A SQLite-backed Durable Object validates changes with renku/data and returns receipts and ordered transactions.

Build a local-first app →

Browser storage can be cleared or evicted. Opening this demo online prepares its code and public screen; it does not back up unsynced edits. If an owner tab is suspended, another tab waits for it to resume or close.