How's Linear so fast? A technical breakdown

Optimistic UI and “Sync Engines”

  • Many comments say the core idea is well-known: optimistic client updates with background sync, similar to Meteor, Google Docs, or multiplayer games’ client-side prediction.
  • A “sync engine” is seen as a formalized way to manage a normalized client-side store, optimistic mutations, and reconciliation, making UI code simpler once in place.
  • Some argue the article over-markets this pattern as novel or uniquely “Linear.”

Correctness, Consistency, and Failure Modes

  • Strong concern that optimistic UIs can “lie” to users: the UI shows success before the server commits.
  • Scenarios raised: failed network, tab/browser closed before sync, long offline periods, schema drift, conflicting edits, deletions vs edits, reordering conflicts.
  • Some say conflict rates are low and good sync engines handle rollback, conflict resolution, and offline retries; others say this is very hard in practice and prone to data loss and user confusion.
  • Browser storage persistence is debated: it can be evicted, and relying on it as a source of truth is seen as risky.

Latency vs Architecture (Local-first vs Fast CRUD)

  • One camp argues that with well-placed backends, efficient stacks, and good SSR, typical CRUD operations can be ~30–100 ms, making complex local-first sync unnecessary.
  • Another camp counters that global latency, physics, and tail latencies mean many users will see ~300 ms+ round trips, so local-first is the only way to feel “instant.”
  • There’s discussion of sharding/tenant-local regions vs global shared state, and that “moving the database closer” essentially recreates a distributed sync problem anyway.

Implementation Details & Tools

  • IndexedDB is commonly used but considered awkward; wrappers like idb, localforage, TinyBase, and SQLite-in-WASM solutions are mentioned.
  • Some highlight dedicated sync products (Zero, Replicache, PowerSync, etc.) as ways to get Linear-like behavior without building a custom engine, while others dislike DSLs/lock-in and prefer custom, SQL-based replication.

UX and Perceived Performance of Linear

  • Opinions on Linear’s UX and speed are sharply mixed.
  • Fans call it one of the best, fastest web apps; a huge improvement over Jira and similar tools.
  • Critics report high CPU/memory usage, slow search and initial loads, confusing or “hidden” UI, flaky tab behavior, sync “stuck” states, and creeping feature bloat.
  • Several note that performance during core interactions can be good, but initial load or search latency undermines the “it’s so fast” narrative.

When to Use Sync Engines

  • Many see local-first sync as powerful but non-trivial, best reserved for apps where instantaneous, collaborative UX really matters.
  • Others argue most apps are better off with simpler, strongly consistent CRUD plus targeted backend and frontend optimizations.