Your App Should Survive Its Server: The Case for Local-First Software
Somewhere along the way, opening your own document became a network request. Your application should still belong to you when the internet goes dark.
Somewhere along the way, opening your own document became a network request.
Disconnect your laptop from the internet.
Now open a notebook made of paper.
Everything works.
The pages load instantly.
Search is admittedly poor, collaboration is primitive and the undo button requires an eraser.
But the notebook possesses one extraordinary property:
it does not need permission from a server to show you what you wrote yesterday.
Our software used to understand this.
Desktop applications kept files on the machine. The computer was where the work lived.
Then the cloud arrived, bringing enormous advantages: effortless synchronization, collaboration, backups, access from anywhere and software that improved without installation discs.
But the architectural pendulum swung very far.
Today, an application running on a powerful computer may become useless because a server on another continent is unavailable.
Your device contains a fast processor, gigabytes of memory and hundreds of gigabytes of storage.
Yet clicking your own task can produce a spinner.
This absurdity is helping revive an old-new idea:
local-first software.
The device becomes home again
Local-first is frequently confused with offline mode.
They are not the same thing.
An offline-capable cloud application usually continues working temporarily when connectivity disappears, but the server remains the canonical owner of the data.
A local-first application reverses that assumption.
The primary working copy lives on your device.
Reads happen locally.
Writes happen locally.
The interface responds immediately.
Synchronization occurs afterwards.
Recent technical work on local-first architecture describes the model around principles such as immediate local responsiveness, offline operation, long-term access, privacy, collaboration and user control. (wal.sh)
The network becomes useful rather than mandatory.
That is a profound architectural difference.
The spinner reveals the architecture
Loading indicators are tiny confessions.
Every time an application displays a spinner after you edit your own data, it is quietly telling you:
I cannot complete this interaction here.
Your keystroke has to travel elsewhere.
A server must receive it.
A database must accept it.
A response must return.
Only then does the interface feel certain.
For many applications, this is perfectly reasonable.
Bank balances should not be decided independently on six phones.
Inventory systems need authoritative coordination when two customers want the final item.
Search engines require remote indexes.
Social feeds consist largely of data produced elsewhere.
Local-first is not a religion.
But consider a note.
A draft.
A task.
A drawing.
A journal entry.
Why should editing these things depend on round-trip latency to infrastructure hundreds or thousands of kilometres away?
The computer already has the data.
Let the computer compute.
SQLite has entered the browser
Part of the renewed interest comes from tooling.
Modern web applications can run sophisticated local databases, including SQLite compiled to WebAssembly and persisted using browser storage facilities. Sync systems can then replicate relevant data between local databases and servers.
Smashing Magazine's 2026 examination of the architecture discusses technologies including SQLite/WASM, PowerSync, ElectricSQL, Yjs and Automerge, reflecting how much more practical the ecosystem has become since the influential local-first ideas of the late 2010s. (Smashing Magazine)
This sounds like infrastructure trivia.
Users experience it very differently.
They experience it as:
click.
Done.
No spinner.
The architecture disappears because the interface feels immediate.
Ironically, one of the most sophisticated things software can do is feel boring.
Sync is where the dragons live
Of course, there is a reason everything became cloud-first.
Synchronization is difficult.
Two people edit the same paragraph while offline.
Which version wins?
A laptop changes a task at 2:14.
A phone deletes it at 2:15 without knowing about the laptop's edit.
What should exist at 2:16 when both reconnect?
This is where technologies such as CRDTs, conflict-resolution systems and replication protocols enter the picture.
They allow multiple versions of data to diverge and later converge without pretending that distributed systems are simple.
And they introduce genuine complexity.
Local-first software must think carefully about authorization, encryption, schema changes, partial replication, conflict behaviour and the amount of data a client can reasonably store.
A cloud architecture centralizes many of these problems.
Local-first redistributes them.
That trade is worth making only when the product benefits from it.
Software should degrade gracefully
The deeper appeal of local-first is not speed.
It is resilience.
Consider how many external conditions must cooperate for a typical cloud application to display a user's own work.
Their internet connection.
DNS.
The application's CDN.
Authentication infrastructure.
An API.
A database.
Possibly several internal services.
Maybe a third-party dependency nobody remembers adding in 2023.
We call these systems reliable because they usually work.
But their reliability is conditional.
Local-first asks a useful design question:
What can the user continue doing when everything outside this device disappears?
That question produces calmer software.
A train enters a tunnel.
Work continues.
Hotel Wi-Fi collapses.
Work continues.
The company's sync service has an incident.
Work continues.
The user does not need to understand why.
That is the point.
There is also a question of ownership
Architecture is never only technical.
Where data lives influences who controls it.
If the only meaningful copy of your work exists inside a company's infrastructure, continued access depends on that company.
Accounts can be suspended.
Products can shut down.
Prices can change.
Exports can be incomplete.
APIs can disappear.
A strong local-first system gives the user's device a durable copy.
The company still provides enormous value through synchronization, collaboration, backups and services.
But it stops behaving as though possession and ownership are identical.
The cloud becomes a collaborator.
Not a landlord.
The quiet software movement
For years, software architecture chased centralization because networks became faster and cloud infrastructure became extraordinary.
Now another set of values is becoming visible.
Instant response.
Offline durability.
Less dependency.
Privacy.
Ownership.
Software that does not panic when Wi-Fi flickers.
This does not mean the cloud disappears.
The most interesting local-first applications use servers extensively.
They simply change the order of authority.
First, let the human work.
Then let the machines reconcile.
It is a remarkably humane principle for software design.
Your computer is already sitting in front of you.
Your data is already there.
Your processor is already awake.
Perhaps the future of cloud software begins with remembering something we once considered obvious:
Your application should still belong to you when the internet goes dark.