When a developer or product team sits down to design a new mobile or web application, one of the earliest and most consequential architectural decisions is almost never framed explicitly: where does the data live? The answer to that question determines not just the technical stack, but the entire user experience — what happens when the network drops, how fast the app responds, what the privacy implications are, and how much the service costs to operate.
The two dominant patterns are cloud-first and offline-first. Cloud-first treats the server as the primary source of truth: data lives in the cloud, the app is mostly a view layer, and connectivity is assumed. Offline-first treats the local device as the primary source of truth: data lives on the device, the app works fully without a network, and synchronization is an optional enhancement rather than a dependency.
Neither is universally correct. Both involve genuine tradeoffs that interact with your users' environment, your team's capabilities, and the nature of the problem you are solving. This guide lays out those tradeoffs clearly so you can make the right choice — or recognize when a hybrid approach is what the situation actually calls for.