Reference

Offline, sync, install, and updates

How the app works without signal, what syncs when, how installation and updates behave, and what push notifications carry.

Updated

Offline, sync, install, and updates

Local-first#

Every adult's phone holds a copy of the family data that adult may see. Today, the timeline, and capture read from it. A capture writes the entry, any photo, and the outgoing message in one local transaction: all or nothing.

Sync#

Direction When Detail
Push On capture, on reconnect, on focus, every 60 seconds, and on a background-sync wake Each mutation has an id; a retry never duplicates. Entries that reference a photo wait for the photo. Results come back per mutation: applied, replayed, conflict-resolved, or rejected.
Pull After push, on open, periodically Only rows the role may see. Pages of 500. If the role's scope changed, the client takes a fresh snapshot.

Some tables are computed on the server; the client writes a temporary local version so the screen updates instantly, and the server's row replaces it on the next pull.

Rejected mutations land in Couldn't sync on the Me page with Retry and Discard.

Low-data photos#

With low-data on, a small version (up to 800 px) uploads immediately and the full size waits for Wi-Fi at night, or Upload now.

Install#

Add to the home screen from the browser menu. The app opens on Today, full screen. There is no in-app install prompt.

What is cached#

The app shell; uploaded media up to 500 items for 30 days; the offline page. API responses are never cached, so a stale response cannot reach a sync.

Updates#

A new version waits for you: a bar reads "A new version of Yearkeep is ready" with Reload. First install shows "Yearkeep is ready to work offline."

Push#

Enabled per device from Settings › Notifications. Payloads carry only a notification id and a link; content is never stored on the device. Tapping opens the right screen and marks the notification read.

Budgets#

The Today screen's first load is held under 250 KB of gzipped JavaScript by a build check.