← All writing
Mar 2026Code11 min read

Local-first, the slow way

I rebuilt my reading list as a local-first app over a few rainy evenings. Here's what surprised me — and what didn't.

I have a reading list. Of course I do. Everyone with an internet connection and a vague intention to be a better person has a reading list. Mine has lived in seven different apps over the last decade, and last month I rebuilt it from scratch as a local-first project.

The premise of local-first is simple: my data lives on my devices, syncs when there's a network, and never depends on a server I don't control. The implementation is less simple. The libraries are good now — better than they have been — but the decisions are still mine.

Three things surprised me. First, conflict resolution is mostly boring; the dramatic three-way merge cases I worried about almost never happen for a single-user app. Second, offline is a feature you feel. Third, owning the data changes the way you treat it.

I'll write up the architecture in a follow-up post.

Written by Avery Quinn. If you enjoyed this, you can subscribe for new posts.