What is Local-First and how does it compare to Offline-First? In this blog post we investigate how much the two terms overlap.
The Evolution of Software
To understand the difference between local-first vs offline-first software, we need to start at the evolution of software.
The Era of Desktop Apps
The first wave of consumer software ran locally on user’s computers, reading and writing files on disk. These “old school apps” are also commonly called desktop apps, local apps, or standalone apps. They worked offline and your data was private to you. The biggest downside was that your data was trapped on one device.
The Cloud Era
The era of the cloud and web apps meant that software increasingly moved online. Servers in the cloud store data centrally, and users get access on-demand via the internet.
Cloud apps became extremely popular because users could access their data from any device, and online collaboration with other users became possible.
Offline-First
A bit later, in the early 2010s smartphones and mobile internet connectivity took off, and the downsides of cloud apps became clear: network latency can make apps slow and if you’re not connected to the internet, you can’t access your data.
Developers realized that retrofitting cloud apps to work offline was complicated and prone to insidious bugs.
The offline-first movement was born: The idea was to design apps to work offline from the start, rather than as an afterthought.
The Local-First Era
In the late 2010s, developers realized that we lost something else with the move to the cloud: users no longer truly owned and controlled their data.
In response, local-first was born to get the best of both worlds: the local ownership and control over data of old-school apps, and the cloud’s convenient cross-device access and multi-user collaboration.
Research lab Ink & Switch described the end-user benefits of local-first as 7 ideals:
2 of these ideals overlap directly with offline-first:
2 of the ideals are about retaining the advantages of cloud apps:
While the remaining 3 are about giving users indefinite access to software and control over their data without being at the mercy of any service provider:
The core local-first idea is that this can be achieved by architecting apps in a way similar to resilient distributed systems: where a single node can continue working even when disconnected from the larger network because:
- The data it needs to function is always available locally, and
- It can seamlessly rejoin the larger network at any time.
The Local-First Movement
Local-first has also become more than just a description of app architecture: it is a growing movement.
Developers are coming together to work on generalized tools that simplify local-first development for everyone.
To achieve the ideals of local-first requires building complex distributed systems, and it doesn’t make sense to reinvent the wheel by implementing custom solutions for every project.
The local-first community has emerged as a space for like-minded developers to address this challenge, meeting and discussing ideas and solutions.