# Working offline

> What works with no connection, what deliberately does not, and how conflicts resolve when two devices edited the same thing.

Every device keeps a real SQLite database of your workspace. It holds the actual
rows, and every screen queries them locally. When you open a board with no
signal, nothing is being retried in the background, because the data is
already there.

Edits land in that local database at once and queue for upload. There is no
"saving" spinner, because there is no server round trip to wait for.

## What works with no connection

**Everything here reads and writes offline**

- **Work**: boards, cards, columns, labels, checklists, the Planner, Today, the Calendar, notes and folders, the Inbox, the journal, whiteboards and templates.
- **Routines**: habits and their check-ins, focus sessions.
- **Money**: expenses, income, debts and budgets.
- **The household**: recipes, the week's meal plan, the shopping list, chores, allowances, the family ledger, savings goals, points, houses and seasons.
- **People**: chat messages, reactions and your notifications.

Search runs against the same local database, so finding a card, a note or a
habit works offline too. The one exception is **Words in files**, the results
that find a picture or a scan by a word inside it: those words are kept on the
server, so that group stays empty until you are back online. See
[Files and scans](https://themarginapp.com/docs/files-and-scans).

The shopping list was built for the supermarket basement with one bar of
signal. Adding items, checking them off and claiming the run all work there.

> **On the phone:** The phone keeps its own copy of the database in the same way, so a phone that
> synced this morning has everything on it this afternoon.

## What waits for a connection, and why

Not everything is in the local database. Some things live on the server by
design, and some need a service that only runs there. None of them stop the
rest of the app working; they wait, or say they cannot reach the server.

**Account and people.** These live on the server and only there:

- billing and plan changes
- inviting members, changing someone's role, and guests
- sharing a board or a note with someone, and making or revoking a public link
- answering a claim that someone owes you money
- a child's other home: offering or answering a share, its switches, and
  **See the child's other home** (see [Family workspaces](https://themarginapp.com/docs/family))
- Agent Pacts

A client that could write its own plan or role would make both meaningless.
Pacts are the same case: their whole value is that the server refuses the
writes it should refuse, and a rule enforced on a device you can edit is not
enforced. See [Agent Pacts](https://themarginapp.com/docs/agent-pacts).

**Margin Intelligence and everything it reads.** The assistant runs on a
server, so these all need a connection:

- asking the assistant anything, including its web search, **Plan a goal**
  and the morning brief
- reading the dates out of a school letter, a receipt or an email
- reading the words in a picture or a scan, and the **Words in files** search
  results
- cloud dictation (see [Talking instead of typing](https://themarginapp.com/docs/voice))
- turning a voice memo into a note
- the Mind's weaving, suggestions and recall

**Files.** Uploading an attachment, scanning paper into a PDF, and opening an
attachment you have not opened on this device before. A picture shared from
another app on the phone needs a connection too; shared words and links are
kept and sync later.

**Connected services.** Connecting or using Slack, GitHub, Zapier, Canva,
Google Calendar and other integrations, subscribed calendars (they refresh on
the server about once an hour), and any agent you connect over MCP, which
reaches your workspace through the server. See
[Integrations](https://themarginapp.com/docs/integrations).

**Writing a note together.** Two people typing in one note share their cursors
through the server. Offline you keep writing on your own, and the two
versions are put together when you reconnect. See
[Writing in a note together](https://themarginapp.com/docs/notes#writing-in-a-note-together).

> **Known limit: Also online only**
>
> - The shopping list's button that pulls in this week's meals. It reads the
>   plan from the server, and when it cannot reach it, it says so instead of
>   showing you an empty week.
> - Board rules run on the server. A card you move offline runs its rules a
>   moment after it syncs.
> - The wall display, on a device that has never loaded it while online.
> - The preview card for a link nobody in the workspace has looked at yet. The
>   link itself always opens, and a preview you have seen before is stored with
>   your data. See [Links and previews](https://themarginapp.com/docs/links).

## When two devices disagree

The last write to reach the server wins, field by field. Conflicts are rare in
practice, because the usual case is one person on one device at a time.

Notes are where a clash costs the most, so notes show it. If a note changed on
another device while you were writing, a bar appears above it with the first
line that differs and three answers: **Keep both**, **Keep mine** and
**Take theirs**. Ignoring the bar is fine too; your draft keeps saving.

> **Careful: Whiteboards adopt changes on reopen** An open canvas holds its own copy of the drawing while you work. If an agent
> or another device writes to that whiteboard meanwhile, the editor picks the
> change up when you close and reopen it, not live. Reopen it if you know
> something else touched it.

## New versions and refreshing

Pull down on a phone, or press **Refresh** in the header on a computer, and
the app fetches fresh data. It never reloads the page under you. While you pull,
the little page in the pill lifts its corner; it lies flat again when the data
is fresh.

When you come back online after being offline and everything you changed has
gone up, a small ink dot fills beside the sync tick, once.

A new version of the app waits until you leave it for a while or follow a link,
and then loads quietly. If you want it straight away, the
**Refresh now** prompt takes it.

## Checking it honestly

Chrome DevTools "Offline" does not simulate this correctly. The service worker
keeps using the real network while the page believes it is offline, so the test
passes whether or not offline works.

Use airplane mode on a real device. That is how we found our own offline bug:
the app cached every page except the database engine, so it loaded fine
and then had nothing to read from.

**Before you rely on it**

1. Install the app (see [Your first hour](https://themarginapp.com/docs/your-first-hour)).
2. Open it on a connection and let the first sync finish.
3. Turn on airplane mode and open a board, a note and the shopping list.

## Storage

A local database for a heavy workspace is not small, and a workspace with many
whiteboards is the heavy case. Browsers may clear storage for sites you have not visited
in a long time. An installed app is far less likely to be cleared, which is the
other reason to install it.

**Where to next**

- [Your first hour](https://themarginapp.com/docs/your-first-hour): installing it and letting the first sync finish
- [Your data](https://themarginapp.com/docs/your-data): where it lives and every way to get it out
- [The shopping list](https://themarginapp.com/docs/the-shopping-list): the surface built for one bar of signal


---

Section: Start here. Checked against the running product on October 5, 2026.
Web page: https://themarginapp.com/docs/working-offline. Every docs page: https://themarginapp.com/docs/llms.txt
