Designed for the real environment
Field Notes starts with a simple constraint: the core workflow must stay dependable without a network. Changes are saved locally first, then reconciled when a connection returns.
type SyncState = "local" | "queued" | "synced" | "conflict";
export function canEdit(state: SyncState) {
return state !== "conflict";
}
The result is a tool that feels predictable in the moments when predictability matters most.